【问题标题】:Run my C# application in different language以不同的语言运行我的 C# 应用程序
【发布时间】:2012-10-04 08:14:19
【问题描述】:

我有一个应用程序,我试图以英语以外的默认语言运行和显示该应用程序。我已将所有文本分配给使用属性文件,并为每种语言翻译了相关的属性文件。

但是,当我运行应用程序时,它全是英文。我已将我的键盘、语言、区域设置全部设置为外语,它应该会自动选择它并自动使用相关的属性文件,但是这并没有发生。

我知道那里没有太多信息,但是如果您需要更多信息,我会提供。我正在从 Visual Studio 2010 运行该应用程序,所以如果这会影响它,我正在徘徊。

我的文件:

Strings.resx
Strings.en.resx
Strings.fr.resx

我的用法:

Strings.HelloWorld

【问题讨论】:

标签: c# wpf localization resources resx


【解决方案1】:

你必须从操作系统中获取当前的文化并使用它:

基本上,您需要做的是在某个地方设置您当前的应用程序文化:

Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CurrentCulture;

相关:How to set Silverlight CurrentUICulture/CurrentCulture correctly?

【讨论】:

  • 我认为应用程序应该根据我运行的语言自动执行此操作。我知道这和测试期间一样有效。没想到我必须自己在代码中设置。
  • 其实它应该是自动设置的,但是既有从操作系统中的区域设置导出其默认值的 CurrentCulture,也有从操作系统中的语言设置导出其默认值的 CurrentUICulture。尝试像这样显式设置两者: Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CurrentCulture; Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CurrentUICulture;
  • 我的 CurrentUICulture 是 en-US 吗?这可能就是为什么一切仍然是英文的原因。感谢您的提醒。我在哪里可以在 Windows 中更改它以模拟在不同语言下运行的应用程序。
  • 把这个放在你的应用程序的启动中: varculture = new CultureInfo("sv-SE"); Thread.CurrentThread.CurrentUICulture = 文化; Thread.CurrentThread.CurrentCulture = 文化;
  • 我使用 Windows 更新安装了所需的语言包。我想正确地模拟以该语言设置的外国用户电脑。感谢所有的帮助,它解决了我的问题。将此答案标记为最佳。
【解决方案2】:

如果是WPF 应用,我推荐WPFLocalizeExtension。我一直在使用它,效果很好。

【讨论】:

    【解决方案3】:

    我想我会在这里添加这个: http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting

    基本上你将这行代码添加到你的 App.xaml:

    FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
        new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
    

    然后它会覆盖应用程序中每个控件的默认语言属性。

    谢谢, 亚历克斯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多