【问题标题】:how to set default culture info for entire c# application如何为整个 c# 应用程序设置默认文化信息
【发布时间】:2012-11-01 11:54:44
【问题描述】:

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

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

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

System.Globalization.CultureInfo.InvariantCulture

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

【问题讨论】:

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


【解决方案1】:

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

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"))

【讨论】:

  • 那么我如何为我正在处理的表单窗口设置它。它无法识别线程
  • 我对定义每个过渡并不真正感兴趣。是不是可以为表单线程设置它。你知道什么时候创建一个新的窗体项目吗?
  • 好的,我找到了制作方法:System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US", false); System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
【解决方案2】:

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

【讨论】:

  • 谢谢大家,但是 4.0 CurrentThread... 版本不适合我。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 2016-04-18
    • 2021-10-07
    • 2019-01-07
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多