我们有C#dll项目,在该dll项目的解决方案和参考资料中,我有资源项目。该项目包含两个字符串文件,如Labels.resx和Labels.ES-MX.resx。在我使用字符串的C#代码中,我只需使用顶部的MyProject.Resources和像Labels.myStringKey这样的引用字符串进行添加。
要更改语言,我有以下代码:
this.cLanguage = language;
// Setting different culture
CultureInfo culture;
culture = GetCultureInfo(language);
if (culture != null)
{
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
我通过'西班牙语'作为我的语言,我可以看到这段代码将{es}作为一种文化返回。但是,我们的.ES-MX。字符串未被使用(我可以看到我仍然从Labels.resx读取而不是从Labels.ES-MX.resx文件中读取)。
所以,我的问题是 - 为了使用正确的resx文件并正确地将语言切换为西班牙语,我需要更改什么?
答案 0 :(得分:1)
您指定西班牙语作为文化,但您的资源文件是西班牙语(墨西哥)。
es
和es-mx
是两种不同的文化。如果您想使用es-mx
资源,则需要将文化设置为es-mx
,而不仅仅是es
。
culture = new CultureInfo("ex-ms");
有关详细信息,请参阅ASP.net is not using other locale resource files 。