基本本地化(中性语言)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本本地化(中性语言)相关的知识,希望对你有一定的参考价值。

我在.Net4中有一个WinForms应用程序,我在实现多种语言时遇到问题。

免责声明:我搜索并发现了许多关于全球化/本地化的问题,但绝大多数人都试图做一些不寻常的事情,或者习惯性的事情。基本开箱即用的东西我遇到了麻烦。我已阅读文档,但仍有问题。

我有一个WinForms应用程序,默认语言是英语。我需要在法语PC上用法语显示它,它可能是fr-FRfr-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个问题:

  1. 我正确地谈到这个吗?
  2. 我是否正确创建了法语资源文件?
  3. Resources.fr.resx文件应该在My Project文件夹中(除了默认的Resources.resx,还是应该在根目录中?或者我应该使用像MessageResources.resxMessageResources.fr.resx这样的新文件并将它们放在根目录中?
  4. 如何强制整个应用程序使用法语而不是默认语言?
答案

感谢你的帮助。事实证明,我的本地化设置都是正确的。问题是我使用MSBuild.ILMerge.Task(NuGet包)将我的程序集合并到一个EXE中。这似乎影响了本地化资源。

禁用该合并解决了问题。我将开始一个更具体的新问题,如何处理该特定场景。

以上是关于基本本地化(中性语言)的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中将具有小数语言中性的价格值转换为整数

根据图片的url地址下载图片到本地保存代码片段

如何从对话框片段中打开新活动

中性仅资源 DLL

C语言代码片段

使用 Pygments 检测代码片段的编程语言