为整个解决方案设置当前文化

时间:2012-12-18 15:49:01

标签: c# multilingual culture

我正在尝试在具有多个项目和线程的解决方案中支持多种语言。

我有2个资源文件,一个是英文字符串,另一个是法文字符串。

我正在设置当前的文化:

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(isEnglish ? "en-US" : "fr-CA");

有没有办法在全局范围内为整个解决方案设置当前文化,或者我是否必须为需要访问字符串的每个线程执行此操作?

3 个答案:

答案 0 :(得分:10)

在.NET Framework 4.5中,CultureInfo.DefaultThreadCurrentCulture Property获取或设置当前应用程序域中线程的默认区域性。

  

在.NET Framework 4和早期版本中,默认情况下是文化   所有线程都设置为Windows系统文化。适用于应用   这与当前的文化不同于默认的系统文化   行为通常是不可取的。在.NET Framework 4.5中,   DefaultThreadCurrentCulture属性使应用程序能够定义   应用程序域中所有线程的默认文化。

答案 1 :(得分:4)

您可以在web.config

中的system.Web中添加全球化部分
<globalization culture="en-US" uiCulture="en-US" />

答案 2 :(得分:0)

设置CurrentThread后,它会在应用程序的持续时间内设置。在初始化任何UI之前,请确保执行此操作。请查看此MSDN blog以获取更多信息。