2012-02-01 81 views
27

我需要通过App.Config文件设置我的应用程序的文化,这样“pt-BR”可以自动用于解析日期,而无需手动通知每个操作的文化。如何从App.Config文件设置CultureInfo.CurrentCulture?

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

有什么想法?

回答

22

我不知道一个内置的方式从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; 
+1

不适用于第三方程序。 – 2014-11-26 13:59:10

+1

我认为这是你应该采取的方法,如果你想覆盖应用程序中的系统文化。通常应该从操作系统设置中自动选取文化。通常我会依赖客户端计算机正确设置其区域和语言,而不是像这样对文化进行硬编码。 – Mick 2015-04-01 06:16:46

1

不要这样做自己,但显然。 早,你可以InitialiseComponent之前,如果它的UICulture IE浏览器,它只是

Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR") 

和或

Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR") 

任何你不想使用当前区域性使用InvariantCulture的

个人,我宁愿留下当前的文化。对于所有的全球化使用InvariantCulture,我不想想变化我。 然后在项目属性中设置中性文化。

我总是觉得固定当前的文化,所以代码工作,尽管作为用户的个人选择是不同的是某种讨厌的警察出局。

+0

关于您的“个人”问题 - 如果您将英国系统部署到客户网站,而他们的黄金形象是默认的美国文化?这种情况一直发生在英国,那么当{0:c}显示美元符号时我们会收到投诉! – tommed 2014-07-01 14:38:12

+2

如果他们想要美国文化,并且需要跳蹦蹦,那不是吗?想一想,我只是把它当作一个多货币的应用程序,即每个货币价值都会有一个货币属性,并将文化从中排除出去,从而可能违约货币。 – 2014-07-01 16:03:48

+0

我不反对,这只是一个耻辱,ASP.NET给你免费的东西,羞耻的全球化是system.web的一部分 – tommed 2014-07-06 00:20:51

-2

using System.Threading; Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(“bn-BD”);

//对于孟加拉国。我在每一页表格加载事件中使用此行