如何为整个c#应用程序设置默认文化信息

时间:2012-11-13 01:07:39

标签: c# c#-4.0 globalization cultureinfo invariantculture

我想为该类或整个应用程序设置默认文化信息。

例如在土耳其3,2 =英语3.2

所以应用程序使用我的本地但我希望它用作默认

System.Globalization.CultureInfo.InvariantCulture

如何将其设置为特定类或整个应用程序的默认值

3 个答案:

答案 0 :(得分:49)

使用4.0,您需要通过为Alexei描述的每个线程设置文化来自行管理。但是使用4.5,您可以为appdomain定义文化,这是处理此问题的首选方法。相关的api是CultureInfo.DefaultThreadCurrentCultureCultureInfo.DefaultThreadCurrentUICulture

答案 1 :(得分:43)

不适用于整个应用程序或特定类别。

CurrentUICulture和CurrentCulture可按照此处讨论Is there a way of setting culture for a whole application? All current threads and new threads?的每个线程进行设置。您根本无法更改InvariantCulture

更改当前线程的文化的示例代码:

CultureInfo ci = new CultureInfo(theCultureString);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

对于类,您可以在关键方法中设置/恢复文化,但对于将文化作为参数之一的大多数格式化相关方法使用适当的替代将是非常安全的:

(3.3).ToString(new CultureInfo("fr-FR"))

答案 2 :(得分:0)

如果您使用语言资源文件在应用程序中设置标签,则需要设置其值:

CultureInfo customCulture = new CultureInfo("en-US");
Languages.Culture = customCulture;