如何从App.Config文件中设置CultureInfo.CurrentCulture?

39
我需要通过App.Config文件设置我的应用程序的文化,以便自动使用“pt-BR”解析日期,而无需手动为每个操作提供文化信息。
据我所知,在Web.Config文件中可以在system.web部分内定义globalization部分,但我正在运行一个控制台应用程序,我无法解决这个问题。
有什么建议吗?
3个回答

34

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

<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

1
我认为如果您想在应用程序中覆盖系统文化,则应采取这种方法。通常,文化应自动从操作系统设置中选择。与硬编码文化不同,通常我会依赖客户计算机正确设置其区域和语言。 - Mick
1
从4.5开始,.NET有更好的方法,请参见我的答案:https://dev59.com/M2ox5IYBdhLWcg3wl1X4#50856078 - Ilya Chernomordik

12

从 .Net 4.5 开始,可以设置默认的线程文化,因此不需要为每个线程进行修复:

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

很遗憾,我还没有找到与 web.configglobalization 部分匹配的配置。


-4

使用 System.Threading;

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

//对于孟加拉国,我在每个页面的加载事件中都使用这行代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接