我正在努力将本地化添加到我的班级图书馆。目前,我有两个资源文件:Strings.resx和Strings.es.resx。
这两个文件都在“内部”访问修饰符下,尽管我尝试在没有任何帮助的情况下将两个文件都设置为“公共”。
我的问题是西班牙资源文件(Strings.es.resx)没有被加载;我为其他语言添加的任何其他资源文件都会重复此问题。 Strings.resx可以正常工作,因为它是默认资源文件。
此代码用于获取已加载的字符串资源文件;当前仅加载默认文件。不会出现西班牙语:
private static void LoadLanguages()
{
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (var culture in cultures)
{
try
{
var rs = Properties.Lang.Strings.ResourceManager.GetResourceSet(culture, true, false);
if (rs != null) SupportedLanguages.Add(culture.Name.ToLower(), culture.NativeName);
}
catch (Exception)
{
// ignored
}
}
Log.Info("Loaded languages: " + SupportedLanguages.Count); //OUT: 1
}
我已经发现了。在我的生成输出中,有一个文件夹“ es”,并且在该文件夹中有一个名为Project.resources.dll
的DLL。如果我将该DLL复制到生成输出的根文件夹中,则资源将被加载。
此问题的解决方案是从文件夹中加载那些资源文件。由于某种原因,这没有发生。有已知的解决方案吗?谢谢。
答案 0 :(得分:0)
计算出当前文化的线程。可以在Microsoft https://docs.microsoft.com/en-us/dotnet/framework/resources/creating-satellite-assemblies-for-desktop-apps上的文档中看到一个示例(最后检查步骤13的代码)
下面是文档中的示例。本地化资源为<div id="testContainer">
<div class="testButtonsDiv">
<button id="testButton1" class="testButtons"></button>
</div>
<div class="testButtonsDiv">
<button id="testButton2" class="testButtons"></button>
</div>
</div>
StringLibrary