【发布时间】:2019-02-20 05:04:30
【问题描述】:
我正在努力将本地化添加到我的类库中。目前我有两个资源文件: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 复制到构建输出的根文件夹,则会加载资源。
解决这个问题的方法是从文件夹中加载那些资源文件。由于某种原因,这没有发生。有一个已知的解决方案吗?谢谢。
【问题讨论】:
标签: c# localization resources assemblies resx