.net 我应该在应用程序中默认设置Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture吗?

.net 我应该在应用程序中默认设置Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture吗?,.net,localization,internationalization,.net,Localization,Internationalization,我有一个应用程序,这是一个全球市场,需要本地化。在开发过程中,我遇到了一些问题,我的卫星程序集似乎从未被拾取,即使我更改了我的区域设置。经过一些研究,我现在明白了为什么会这样,并且能够通过在代码中设置CurrentUICulture进行测试,并验证事情是否按预期工作 现在要打包应用程序以供发布,我不确定在我的应用程序启动时为当前线程设置Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture是否是个好主意。

我有一个应用程序,这是一个全球市场,需要本地化。在开发过程中,我遇到了一些问题,我的卫星程序集似乎从未被拾取,即使我更改了我的区域设置。经过一些研究,我现在明白了为什么会这样,并且能够通过在代码中设置CurrentUICulture进行测试,并验证事情是否按预期工作

现在要打包应用程序以供发布,我不确定在我的应用程序启动时为当前线程设置Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture是否是个好主意。从好的方面来说,我的应用程序可以通过更改区域设置进行本地化(如果这是一个好的方面),但我担心这可能会有不可预见的负面影响。我立刻想到的一点是,虽然我所做的对我的线程来说都是好的,但它不会应用到我的应用程序创建的任何线程(除非我也在这些线程上设置了CurrentUICulture)更糟糕的是,我使用的任何组件都可能创建它们自己的线程

还有其他问题吗?将当前文化设置为相同的是标准做法还是令人不快的做法

在做出决定之前,我想了解更多关于这件事的起起落落的信息

谢谢

山姆

山姆, 除非你真的确定自己在做什么,否则不要搞砸它

我想我们在这里讨论的是WinForms。该框架从系统(由用户配置)获取可以说是最好的设置。从你的问题来看,这可能更像是一个测试问题。我经常在#if DEBUG之后输入一些代码,以选择一个区域设置进行测试

我自己的例子是:我的语言环境是荷兰语(nl nl),但我通常运行英语版本的Windows。如果您覆盖CurrentUICulture,我会得到荷兰语版本(如果可用),这通常是可以的。但我从经验中了解到,一些控件/加载项仍将使用英语(包括显示消息框和std对话框)。这种组合很难看

也可以考虑当你不加入与当前文化相匹配的卫星的情况下。系统将依赖于程序中的默认设置,而用户UI区域性可能是更好的选择。我不知道所有的回退规则,但您可能会得到类似的结果:

用户在fr窗口上运行fr CA设置。您的程序返回到en-US,用户不高兴

我的忠告是:

  • 做一些实地测试
  • 如果您确实构建了覆盖,那么 在app.config中使用开关

老问题,但用户和开发人员的一些评论:

  • 我是挪威人,但我有一个英语操作系统是有原因的。我讨厌应用程序以挪威语显示,因为我的区域设置是挪威语
  • 我以前使用过
    Thread.CurrentThread.CurrentCulture
    ,虽然它一开始似乎工作得不错。。。然后突然你有了新的线索。。。(花了相当长的时间弄清楚为什么我在应用程序中得到了正确的数字格式,但在我的报告中没有)

谢谢,所有有用的信息。我同意这些原则,并认为我们将使用一种允许选项开关的方法。