【问题标题】:WPF always runs as en-USWPF 始终以 en-US 方式运行
【发布时间】:2012-02-07 16:44:23
【问题描述】:

我创建了一个 WPF 应用并运行 locbaml 来创建附属程序集。

当我运行应用程序并从 App.xaml.cs 中“破解”UICulture 时,一切正常。但是,当正常运行并更改我的机器上的文化时,我没有发现任何差异。一点点日志显示 UICulture 总是在美国。

我不确定为什么它没有接收到我对区域设置所做的更改。我已将所有该死的设置更改为西班牙语,但仍然无法正常工作!

任何想法都将不胜感激。

谢谢

【问题讨论】:

    标签: wpf localization


    【解决方案1】:

    文化取决于您安装的 Windows 版本。如果您安装了美国版的 Windows,那么您的文化将永远是 en-US,除非您在物理上 HACK 一切。这意味着您必须通过使用 xml:lang

    来更改 Threads 和可能的 UIElements 上的文化

    示例:

    设置线程文化:

    CultureInfo culture = new CultureInfo("en-US");
    Thread.CurrentThread.CurrentCulture = culture;
    Thread.CurrentThread.CurrentUICulture = culture;
    

    将 en-US 添加到 csproj 文件中支持的文化列表(使用记事本打开)

    <SupportedCultures>en-US;</SupportedCultures>
    

    确保每个字符串 (UIElement) 都具有正确的文化

    xml:lang="en-US"
    

    【讨论】:

    • 啊,我明白了!我认为您可以更改区域设置并且可以应用不同的文化。因此,除了硬编码设置和重新运行应用程序之外,没有办法对此进行测试。我想知道在运行时是否容易交换?
    • @user630190 无法使用“locbaml 方法”在运行时切换本地
    【解决方案2】:

    我的建议是:不要在 WPF 中使用“locbaml”本地化方法,而是使用“resx 方法”。当我们开发我们的应用程序时,我们使用了 locbaml,但发现它很难支持,所以我们切换到 resx,它变得更加容易。至于在运行时更改语言 - AFAIK 无法通过使用“locbaml 方法”来实现这一点。

    您可以找到一些本地化扩展,例如:

    轻量版:http://www.codeproject.com/Articles/30035/Simple-WPF-Localization

    完整版:http://www.codeproject.com/Articles/35159/WPF-Localization-Using-RESX-Files 完整版可以在运行时切换语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 2013-12-05
      • 2015-01-18
      • 1970-01-01
      相关资源
      最近更新 更多