C#类库-资源文件未加载

时间:2018-09-15 19:06:05

标签: c# localization resources assemblies resx

我正在努力将本地化添加到我的班级图书馆。目前,我有两个资源文件: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复制到生成输出的根文件夹中,则资源将被加载。

此问题的解决方案是从文件夹中加载那些资源文件。由于某种原因,这没有发生。有已知的解决方案吗?谢谢。

1 个答案:

答案 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