Silverlight本地化-如何覆盖windows区域性



我有英文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);

我添加了新的特定文化资源,问题已经解决了。但是现在我复制了英语资源-它们是默认的&美国特定资源也是如此。我相信一定有办法消除这种重复。

最新更新