61

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

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

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

System.Globalization.CultureInfo.InvariantCulture

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

4

3 回答 3

60

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

CurrentUICulture 和 CurrentCulture 可以按线程设置,如此处讨论的有没有为整个应用程序设置文化的方法?所有当前线程和新线程?. 你根本无法改变InvariantCulture

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

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

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

(3.3).ToString(new CultureInfo("fr-FR"))
于 2012-11-13T01:11:20.810 回答
56

在 4.0 中,您将需要按照 Alexei 的描述为每个线程设置文化来自行管理。但是在 4.5 中,您可以为 appdomain 定义一种文化,这是处理此问题的首选方式。相关的 API 是CultureInfo.DefaultThreadCurrentCultureCultureInfo.DefaultThreadCurrentUICulture

于 2012-11-13T19:34:17.997 回答
1

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

CultureInfo customCulture = new CultureInfo("en-US");
Languages.Culture = customCulture;
于 2019-06-28T08:54:16.757 回答