.Net 资源文件在单独的语言文件夹中
.Net resource files in separate language folders
是否可以将每种语言的资源文件放在单独的文件夹中,如下所示?我希望我所有的英语文件都在“en”文件夹中,而我所有的西班牙语文件都在“es”文件夹中。我尝试将资源与主资源文件夹(无子文件夹)中的两个文件一起使用,并且它工作正常。但是,当我将文件分别放在图像中的“en”和“es”文件夹中时,即使我的浏览器设置为显示西班牙语,我也总是得到英文文本。
我已经包含了每个资源文件的文件属性以及我用来检索值的代码
var value = Language.Resources.ResourceManager.GetString(resourceName.Trim());
自动生成的 Resources.Designer.cs 文件包含 ResourceManager 属性 的以下代码。第一个参数“ClientInterface.Resources.en.Resources”是它总是给我英语的原因吗?
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClientInterface.Resources.en.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
我认为您需要手动编写单个资源 class,并且应该删除资源的自定义工具。
并且您需要编写自己的逻辑来接收正确的 ResourceManager。
这个没有优化的小样本,但是你可以从这个开始。
The auto-generated Resources.Designer.cs file includes the following
code for the ResourceManager property. Is that first parameter
"ClientInterface.Resources.en.Resources" the reason why it's always
giving me English?
这主要是因为在自动生成的资源中它只加载英文资源,但你需要编写你的逻辑,如何加载你的资源。
示例 NamespaceToResources.Language.Resources
或 NamespaceToResources.Culture.Resources
在下一个示例中,我将加载当前文化的资源
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
return new global::System.Resources.ResourceManager($"ClientInterface.Resources.{Thread.CurrentThread.CurrentUICulture.Name.Replace("-", "_")}.Resource", typeof(Resource).Assembly);
}
}
是否可以将每种语言的资源文件放在单独的文件夹中,如下所示?我希望我所有的英语文件都在“en”文件夹中,而我所有的西班牙语文件都在“es”文件夹中。我尝试将资源与主资源文件夹(无子文件夹)中的两个文件一起使用,并且它工作正常。但是,当我将文件分别放在图像中的“en”和“es”文件夹中时,即使我的浏览器设置为显示西班牙语,我也总是得到英文文本。
我已经包含了每个资源文件的文件属性以及我用来检索值的代码
var value = Language.Resources.ResourceManager.GetString(resourceName.Trim());
自动生成的 Resources.Designer.cs 文件包含 ResourceManager 属性 的以下代码。第一个参数“ClientInterface.Resources.en.Resources”是它总是给我英语的原因吗?
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClientInterface.Resources.en.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
我认为您需要手动编写单个资源 class,并且应该删除资源的自定义工具。
并且您需要编写自己的逻辑来接收正确的 ResourceManager。
这个没有优化的小样本,但是你可以从这个开始。
The auto-generated Resources.Designer.cs file includes the following code for the ResourceManager property. Is that first parameter "ClientInterface.Resources.en.Resources" the reason why it's always giving me English?
这主要是因为在自动生成的资源中它只加载英文资源,但你需要编写你的逻辑,如何加载你的资源。 示例 NamespaceToResources.Language.Resources 或 NamespaceToResources.Culture.Resources
在下一个示例中,我将加载当前文化的资源
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
return new global::System.Resources.ResourceManager($"ClientInterface.Resources.{Thread.CurrentThread.CurrentUICulture.Name.Replace("-", "_")}.Resource", typeof(Resource).Assembly);
}
}