基本本地化(中性语言)
Basic localization (neutral language)
我在 .Net4 中有一个 WinForms 应用程序,但在实现多种语言时遇到问题。
免责声明:我搜索并发现了很多关于 globalization/localization 的问题,但绝大多数人都在尝试做一些不寻常的事情或习惯。我在使用基本的开箱即用的东西时遇到了麻烦。我已阅读文档,但仍有问题。
我有一个 WinForms 应用程序,默认语言是英语。我需要在法国电脑上以法语显示它,它可以是 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")
应用程序仍然以英语加载,即使是设置为中性语言的表单控件也是如此 'French'。
总结起来有4个问题:
- 我这样做正确吗?
- 我是否正确创建了法语资源文件?
Resources.fr.resx
文件应该在 My Project 文件夹中(与默认 Resources.resx
一起,还是应该在根目录中?或者我应该使用像 MessageResources.resx
和 MessageResources.fr.resx
这样的新文件并将它们都放在根目录中吗?
- 如何强制整个应用程序使用法语而不是默认语言?
感谢您的帮助。事实证明,我的本地化设置都是正确的。问题是我使用 MSBuild.ILMerge.Task
(NuGet 包)将我的程序集合并到一个 EXE 中。似乎影响了本地化资源。
禁用该合并解决了问题。我将开始一个更具体的新问题,说明如何处理该特定情况。
我在 .Net4 中有一个 WinForms 应用程序,但在实现多种语言时遇到问题。
免责声明:我搜索并发现了很多关于 globalization/localization 的问题,但绝大多数人都在尝试做一些不寻常的事情或习惯。我在使用基本的开箱即用的东西时遇到了麻烦。我已阅读文档,但仍有问题。
我有一个 WinForms 应用程序,默认语言是英语。我需要在法国电脑上以法语显示它,它可以是 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")
应用程序仍然以英语加载,即使是设置为中性语言的表单控件也是如此 'French'。
总结起来有4个问题:
- 我这样做正确吗?
- 我是否正确创建了法语资源文件?
Resources.fr.resx
文件应该在 My Project 文件夹中(与默认Resources.resx
一起,还是应该在根目录中?或者我应该使用像MessageResources.resx
和MessageResources.fr.resx
这样的新文件并将它们都放在根目录中吗?- 如何强制整个应用程序使用法语而不是默认语言?
感谢您的帮助。事实证明,我的本地化设置都是正确的。问题是我使用 MSBuild.ILMerge.Task
(NuGet 包)将我的程序集合并到一个 EXE 中。似乎影响了本地化资源。
禁用该合并解决了问题。我将开始一个更具体的新问题,说明如何处理该特定情况。