我正在尝试在具有多个项目和线程的解决方案中支持多种语言。
我有2个资源文件,一个是英文字符串,另一个是法文字符串。
我正在设置当前的文化:
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(isEnglish ? "en-US" : "fr-CA");
有没有办法在全局范围内为整个解决方案设置当前文化,或者我是否必须为需要访问字符串的每个线程执行此操作?
答案 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以获取更多信息。