【发布时间】:2015-10-04 15:12:25
【问题描述】:
我有两个用于本地化的 .resx 文件 - Global.en.resx 和 Global.resx(ru)。尝试使用 ResourceManager 按名称获取值我遇到了一个问题: 该值仅以俄语显示。
ResourceManager rm = new ResourceManager(resourceType.FullName, resourceType.Assembly);
ResourceSet rs = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);
foreach (DictionaryEntry d in rs)
{
if (d.Key.ToString() == propName) displayName = (string)d.Value;
}
resourceType - 资源类,propName - 我要显示的属性的名称。 请帮帮我
【问题讨论】:
-
当前文化是英语还是俄语?根据您的资源文件的名称,我猜当前(默认)文化是俄语...
-
我改变了当前的文化,当我使用@MyResources.Global.PropertyName 从视图中显示它时它工作正常。但是当我尝试使用反射来获取价值时,它会像上面描述的那样失败
-
它令人困惑,因为您发布的示例根本没有任何反射,那么您是否使用反射?在您发布的示例中,您将获得 current 文化,这可能是俄语,如果您更改 current 文化,它将起作用,但如果您想要不同的文化返回,你不能将
CultureInfo.CurrentCulture传递给GetResourceSet,你需要制作一个英语文化并传递进去。 -
其实我是用反射来获取ResourceType的,但是这里没有贴出来。无论如何,你是绝对正确的。我检查了我的 Thread.CurrentThread.CurrentUICulture 并且由于某些原因它的值是“ru”。谢谢!
标签: c# asp.net-mvc-4 localization resourcemanager displayattribute