我有英文windows版本,目前无法调试,但我正在本地化俄语和英语两种语言的应用程序。
从我的理解以下代码应该是足够的应用程序的构造函数:
if (Language == Language.Russian) {
Thread.CurrentThread.CurrentCulture = RUSSIAN_CULTURE;
Thread.CurrentThread.CurrentUICulture = RUSSIAN_CULTURE;
}
else {
Thread.CurrentThread.CurrentCulture = ENGLISH_CULTURE;
Thread.CurrentThread.CurrentUICulture = ENGLISH_CULTURE;
}
区域性对象是正确的区域性(ru-RU, en-US)。
但是,当应用程序在俄语窗口上运行时,它被忽略,并且只使用俄语字符串。
请注意,语言更改在我的机器(windows)上完全正确
我在Jeff Richter的《CLR via c#》一书中读到的:
(约CurrentUICulture)
默认情况下,当你创建一个线程时,这个线程属性被设置为aCulterInfo对象,该对象标识Windows的语言使用Win32运行应用程序的版本GetUserDefaultUILanguage函数。如果您正在运行多语言用户界面(MUI)版本的windows,您可以通过"区域和语言选项"控制面板设置。在非mui上版本的Windows,语言是由本地化的安装的操作系统版本(或安装的语言包)和语言不可改变。
我在我的silverlight视图构造函数中使用这个,而不是在App构造函数中使用:
//seting language for currency and datetime
string sDefaultLocalization = "ru-RU";
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(sDefaultLocalization);
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
我添加了新的特定文化资源,问题已经解决了。但是现在我复制了英语资源-它们是默认的&美国特定资源也是如此。我相信一定有办法消除这种重复。