当前位置:  开发笔记 > 开发工具 > 正文

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

如何解决《我应该在我的应用程序中默认设置Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture吗?》经验,为你挑选了1个好方法。

我有一个适用于全球市场的应用程序,需要可以本地化.在开发过程中,我遇到了一些问题,即使我改变了我的语言环境,我的卫星装配似乎也没有被拾取.经过一些研究后,我现在明白为什么会这样,并且能够通过在代码中设置CurrentUICulture并验证事情是否按预期工作来进行测试.

现在要将应用程序打包发布,我不确定当我的应用程序启动时为当前线程设置Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture是个好主意.从好的方面来说,我的应用程序可以通过更改区域设置进行本地化(如果这是一个好的方面),但我担心可能存在不可预见的缺点.立即浮现在脑海中的是,虽然我所做的一切对我的线程都很好,但它不适用于(从我在这里和周围阅读中理解的内容)到由我的app创建的任何线程(除非我设置了CurrentUICulture,或者更糟糕的是我使用的任何组件都可以创建自己的线程.

还有其他问题吗?是否将CurrentCultures设置为标准做法或不赞成的东西?

在做出决定之前,我希望能够掌握有关这方面起伏的信息.

谢谢

山姆



1> Henk Holterm..:

山姆,除非你真的确定你在做什么,否则不要乱用它.

我假设我们在这里谈论WinForms.该框架从系统中获取可论证的最佳设置(由用户配置).从您的问题来看,它可能只是一个测试问题.我经常在#if DEBUG之后输入一些代码来选择一个用于测试目的的语言环境.

我自己的例子:我的语言环境是荷兰语(nl-NL),但我通常运行Windows的英文版本.如果你覆盖CurrentUICulture我会得到荷兰语版本(如果可用),这通常是好的.但我从经验中知道,一些控件/加载项将保留为英语(包括ShowMessage box和std Dialogs).这种组合很难看.

但是,如果不添加与CurrentCulture匹配的卫星,也要考虑这种情况.系统将回退到程序中的默认设置,而用户UI文化可能是更好的选择.我不知道所有的后备规则,但你可能会得到类似的东西:

用户在fr-FR窗口上运行fr-CA设置.您的计划可以追溯到en-US,用户也很高兴.

我的建议:

做一些现场测试

如果你构建了覆盖,那么在app.config中使用一个开关

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有