【问题标题】:How do I set CultureInfo.CurrentCulture from an App.Config file?如何从 App.Config 文件设置 CultureInfo.CurrentCulture?
【发布时间】:2012-02-24 14:53:56
【问题描述】:

我需要通过 App.Config 文件设置我的应用程序的文化,以便自动使用“pt-BR”来解析日期,而无需手动通知每个操作的文化。

据我所知,可以在 Web.Config 文件的 system.web 部分中定义一个 globalization 部分,但我正在运行一个控制台应用程序,但我无法弄清楚。

有什么想法吗?

【问题讨论】:

    标签: .net configuration localization app-config globalization


    【解决方案1】:

    我不知道从 App.config 设置它的内置方法,但您可以像这样在 App.config 中定义一个键

    <configuration>
        <appSettings>
            <add key="DefaultCulture" value="pt-BR" />
        </appSettings>
    </configuration>
    

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

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

    另外,正如@Ilya 所提到的,从 .NET 4.5 开始,您可以设置一次默认区域性,而不是每个线程:

    CultureInfo.DefaultThreadCurrentCulture = culture
    CultureInfo.DefaultThreadCurrentUICulture = culture
    

    【讨论】:

    • 我认为如果您想覆盖应用程序中的系统文化,您应该采用这种方法。通常,文化应该从操作系统设置中自动获取。通常我不会像这样对文化进行硬编码,而是依赖于正确设置区域和语言的客户端计算机。
    • .net 从 4.5 开始有更好的方法,请参阅下面的答案:stackoverflow.com/a/50856078/1671558
    【解决方案2】:

    使用 System.Threading;

    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("bn-BD");

    //对于孟加拉国。我在每个页面表单加载事件中都使用这一行

    【讨论】:

      【解决方案3】:

      从 .Net 4.5 开始,可以设置默认线程文化,因此无需针对每个线程进行修复:

      CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("pt-BR");
      CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("pt-BR");
      

      不幸的是,我还没有找到与 web.config globalization 部分匹配的配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-11
        • 2011-02-02
        • 2011-01-19
        • 2011-05-12
        • 2012-11-23
        • 2018-04-07
        • 1970-01-01
        • 2013-08-15
        相关资源
        最近更新 更多