【问题标题】:Silverlight localization - how to override windows cultureSilverlight 本地化 - 如何覆盖 Windows 文化
【发布时间】:2011-07-21 02:28:59
【问题描述】:

我有英文 Windows 版本,目前无法调试,但我正在本地化俄语和英语两种语言的应用程序。

据我了解,App 构造函数中的以下代码应该足够了:

            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;
            }

Cultures 对象是正确的文化(ru-RU,en-US)。

但是,当应用程序在俄语窗口上运行时,if 会被忽略,并且只使用俄语字符串。

请注意,语言更改在我的机器上完全正确(在 windows 中)

【问题讨论】:

  • 有时仅在当前线程上设置语言是不够的,导致某些控件(又名 DataGrid)不尊重此值。您还应该像这样设置 UserControls 的 Language 属性 this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentCulture.Name);
  • 如果应用程序的某些部分是 rus,其他 eng。这可能是问题所在。但我相信像 TextBlock 这样简单的控件尊重应该尊重 Thread.CultureInfo 吗?当应用程序在 ru windows 上运行时,没有显示任何英文内容的控件示例..

标签: .net wpf silverlight silverlight-4.0 localization


【解决方案1】:

我在 Jeff Richter 的“CLR via C#”一书中读到了这一点:

(关于 CurrentUICulture)

默认情况下,创建线程时,此线程属性设置为 CulterInfo 对象,它标识 Windows 的语言 使用 Win32 运行应用程序的版本 GetUserDefaultUILanguage 函数。如果您正在运行多语言 Windows 的用户界面 (MUI) 版本,您可以通过 “区域和语言选项”控制面板设置。在非 MUI 上 Windows 版本,语言由本地化决定 安装的操作系统版本(或安装的语言包)和 语言不可更改。

【讨论】:

  • 我通过 C# 读取 CLR,但我认为这与我的问题或 silverlight 本地化无关..
【解决方案2】:

我在 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);

【讨论】:

  • Language is more related “为了正确显示中文、日文和韩文文本,Silverlight 需要知道它显示的是哪种语言,因为相同的 Unicode 字符根据不同的语言显示不同。”我相信。除此之外,我在我的问题中得到了相同的代码设置 Thread.CurrentThread.CurrentCulture 应该可以工作..
【解决方案3】:

我添加了新的特定文化资源,它已经解决了这个问题。 但是现在我得到了重复的英语资源 - 它们是默认的,并且同样适用于 en-US 特定资源。我相信一定有办法消除这种重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多