基本本地化(中性语言)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本本地化(中性语言)相关的知识,希望对你有一定的参考价值。
我在.Net4中有一个WinForms应用程序,我在实现多种语言时遇到问题。
免责声明:我搜索并发现了许多关于全球化/本地化的问题,但绝大多数人都试图做一些不寻常的事情,或者习惯性的事情。基本开箱即用的东西我遇到了麻烦。我已阅读文档,但仍有问题。
我有一个WinForms应用程序,默认语言是英语。我需要在法语PC上用法语显示它,它可能是fr-FR
或fr-CA
,所以当我将表单设置为localizable:=True
时,我将语言更改为“French”并更新了标签,按钮和其他表单控件。那部分,我想我做得对。
在表单消息框中,我将所有字符串放入资源文件中(通过单击我的项目,然后单击资源选项卡)。我用代码中的my.ressource.{ressourcename}
替换了代码中的字符串
然后我在myproject文件夹中添加了一个新的Resources.fr.resx
并翻译了它包含的所有字符串。
我尝试通过将以下行添加到我的启动窗体的new()构造函数来测试它。
Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr")
我也尝试过:
Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-CA")
应用程序仍然以英语加载,甚至是设置为中性语言“法语”的表单控件。
总之,有4个问题:
- 我正确地谈到这个吗?
- 我是否正确创建了法语资源文件?
Resources.fr.resx
文件应该在My Project文件夹中(除了默认的Resources.resx
,还是应该在根目录中?或者我应该使用像MessageResources.resx
和MessageResources.fr.resx
这样的新文件并将它们放在根目录中?- 如何强制整个应用程序使用法语而不是默认语言?
答案
感谢你的帮助。事实证明,我的本地化设置都是正确的。问题是我使用MSBuild.ILMerge.Task
(NuGet包)将我的程序集合并到一个EXE中。这似乎影响了本地化资源。
禁用该合并解决了问题。我将开始一个更具体的新问题,如何处理该特定场景。
以上是关于基本本地化(中性语言)的主要内容,如果未能解决你的问题,请参考以下文章