我有一个WPF应用程序,我正在修改以支持本地化。我的程序是我公司提供的一系列产品的一部分。我们创建了一个资源DLL,其中包含了我们所有产品需要翻译的所有字符串。我已经向我的程序添加了对此DLL的引用,向其添加了字符串资源,并修改了我的代码以使用字符串资源而不是硬编码字符串。当我用英语运行程序时,一切正常。
我们已将字符串资源翻译成西班牙语。我创建了一个带有西班牙语翻译的resx文件。我重建了我的申请表。现在我希望看到西班牙语文本出现在我的程序中,而无需更改计算机的文化设置。
程序无需动态更改文化设置。该程序将仅以特定安装的一种语言运行。
该程序有一个App.config文件。如果没有添加包含文化信息的自定义设置,如何告诉我的程序以西班牙语运行?
答案 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;
在配置示例中,我将其设置为西班牙语 - 哥伦比亚
的列表答案 1 :(得分:-1)
我决定添加这个答案,因为@ MauricioGarcia的答案是有效的,如果你想在一台安装了多个语言包的机器上显示特定的语言,无论机器当前的区域设置是什么,我们都没有这样实现它。
相反,我们只使用当前CultureInfo
和Thread.CurrentThread.CurrentCulture
属性中设置的Thread.CurrentThread.CurrentUICulture
个对象。将计算机上的区域设置设置为特定位置和语言时,这些属性会自动更改。所以他们总是对的&amp;我们不必添加任何代码来改变任何东西。
有趣的是,CurrentUICulture
属性中的对象用于确定要显示的语言字符串,CurrentCulture
属性中的对象用于格式化数字&amp;日期时间。