在App.config中设置WPF程序的文化

时间:2013-12-04 15:25:29

标签: c# .net wpf localization app-config

我有一个WPF应用程序,我正在修改以支持本地化。我的程序是我公司提供的一系列产品的一部分。我们创建了一个资源DLL,其中包含了我们所有产品需要翻译的所有字符串。我已经向我的程序添加了对此DLL的引用,向其添加了字符串资源,并修改了我的代码以使用字符串资源而不是硬编码字符串。当我用英语运行程序时,一切正常。

我们已将字符串资源翻译成西班牙语。我创建了一个带有西班牙语翻译的resx文件。我重建了我的申请表。现在我希望看到西班牙语文本出现在我的程序中,而无需更改计算机的文化设置。

程序无需动态更改文化设置。该程序将仅以特定安装的一种语言运行。

该程序有一个App.config文件。如果没有添加包含文化信息的自定义设置,如何告诉我的程序以西班牙语运行?

2 个答案:

答案 0 :(得分:8)

您可以像在此

中一样在App.config中定义一个键
<configuration>
    <appSettings>
        <add key="DefaultCulture" value="es-CO" />
    </appSettings>
</configuration>

并在您的应用程序中读取该值并设置文化

CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;

在配置示例中,我将其设置为西班牙语 - 哥伦比亚

这是culture codes

的列表

答案 1 :(得分:-1)

我决定添加这个答案,因为@ MauricioGarcia的答案是有效的,如果你想在一台安装了多个语言包的机器上显示特定的语言,无论机器当前的区域设置是什么,我们都没有这样实现它。

相反,我们只使用当前CultureInfoThread.CurrentThread.CurrentCulture属性中设置的Thread.CurrentThread.CurrentUICulture个对象。将计算机上的区域设置设置为特定位置和语言时,这些属性会自动更改。所以他们总是对的&amp;我们不必添加任何代码来改变任何东西。

有趣的是,CurrentUICulture属性中的对象用于确定要显示的语言字符串,CurrentCulture属性中的对象用于格式化数字&amp;日期时间。