【问题标题】:Setting WPF Program's culture in App.config在 App.config 中设置 WPF 程序的文化
【发布时间】:2014-01-23 21:53:35
【问题描述】:

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

我们已将字符串资源翻译成西班牙语。我创建了一个包含西班牙语翻译的 resx 文件。我已经重建了我的应用程序。现在我想看到西班牙语文本出现在我的程序中,而无需更改计算机的文化设置。

程序不必即时更改文化设置。该程序仅针对特定安装以一种语言运行。

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

【问题讨论】:

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


    【解决方案1】:

    您可以像这样在 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的列表

    【讨论】:

    • 好的,我有一个问题:当你创建新线程时,它们是继承这种文化设置还是我必须为代码中的每个新线程设置它?
    • 尝试一下是无可替代的。我在我的程序中设置了一个断点,它创建了第一个子线程,并且该线程的文化设置为默认文化。猜猜我正在添加代码来改变每个新线程的文化。
    【解决方案2】:

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

    相反,我们只使用在当前Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture 属性中设置的任何CultureInfo 对象。当您将计算机上的区域设置设置为特定位置和语言时,这些属性会自动更改。所以它们总是正确的,我们不需要添加任何代码来改变任何东西。

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

    【讨论】:

    • @Tony Vitabile 所以你问如何在开发者社区中设置文化并最终接受你自己的使用 Windows 设置的答案??
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多