Hellu
我试图翻译我的winforms应用程序,但它包含了线程和后台工作程序的众多用途。
事实是,当我在一个不是UI的线程中调用它时,我的程序似乎没有使用正确的resx文件(在我的情况下,这意味着在日志窗口中有法语文本用户界面是英文的。)
问题是:有没有办法将文化应用于我的应用程序在一个地方调用的每个线程?
答案 0 :(得分:3)
设置CultureInfo.DefaultThreadCurrentUICulture
获取或设置当前应用程序域中线程的默认UI文化。
和
重要强> 如果尚未显式设置应用程序域中执行的任何现有线程的UI文化,则设置DefaultThreadCurrentUICulture属性也会更改这些线程的区域性
可是:
如果这些线程在另一个应用程序域中执行,则它们的文化由该应用程序域中的DefaultThreadCurrentUICulture属性定义,如果没有定义默认值,则由默认系统文化定义。因此,我们建议您始终显式设置主应用程序线程的文化,不要依赖DefaultThreadCurrentUICulture属性来定义主应用程序线程的文化。
因此,在启动时,在主线程上,设置CultureInfo.CurrentUICulture
和 CultureInfo.DefaultThreadCurrentUICulture
。
同样适用于CultureInfo.DefaultThreadCurrentCulture
和CultureInfo.CurrentCulture
。
这些都不适用于线程中的操作,其中线程设置其当前(UI)文化或显式地将IFormatProvider
传递给格式化方法或CultureInfo
传递给资源获取方法。
此外,{4.5}添加了DefaultThreadCurrentCulture
和DefaultThreadCurrentUICulture
,如果您需要定位旧版本,那么您将无法设置CurrentCulture
和CurrentUICulture
在每个线程开始(或池入口点)或为每个使用区域设置信息的方法传递显式文化(FXCop将在这里提供帮助:可以警告所有未执行此操作的方法调用)。