基本本地化(中性语言)

时间:2018-08-27 12:52:36

标签: vb.net winforms localization globalization

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

免责声明:我已经搜索并发现了许多有关全球化/本地化的问题,但是绝大多数都在尝试做一些不寻常的事情或习惯。我在使用基本的开箱即用产品时遇到了麻烦。我已经阅读了文档,但是仍然遇到问题。

我有一个WinForms应用程序,默认语言是英语。我需要在法语PC上以法语显示它,它可能是fr-FRfr-CA,所以当我将表单设置为localizable:=True时,我将语言更改为“法语”,更新了标签,按钮和其他表单控件。那部分,我认为我做得正确。

在表单消息框中,我将所有字符串都放入资源文件中(通过单击我的项目,然后单击资源选项卡)。我将代码中的字符串替换为对my.ressource.{ressourcename}

的引用

然后我在myproject文件夹中添加了一个新的Resources.fr.resx,并转换了其中包含的所有字符串。

我试图通过将以下行添加到启动表单的new()构造函数中来对此进行测试。

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr")

我也尝试过:

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-CA")

该应用程序仍以英语加载,即使表单控件设置为中性语言“法语”。

总的来说,有四个问题:

  1. 我能正确处理吗?
  2. 我是否正确创建了法语资源文件?
  3. Resources.fr.resx文件应该位于“我的项目” 文件夹中(默认Resources.resx旁边还是应该位于根目录中?或者我应该使用新文件,例如MessageResources.resxMessageResources.fr.resx并将它们都放在根目录中?
  4. 如何强制整个应用程序使用法语而不是默认语言?

1 个答案:

答案 0 :(得分:0)

感谢您的所有帮助。事实证明,我的本地化设置都是正确的。问题是我正在使用const addAtomic = (editorState, type, mutability = 'MUTABLE', data = {}) => { let currentContent = editorState.getCurrentContent(); let selection = editorState.getSelection(); currentContent = currentContent.createEntity(type, mutability, data); let entityKey = currentContent.getLastCreatedEntityKey(); const newState = EditorState.set(editorState, { currentContent: currentContent }) return AtomicBlockUtils.insertAtomicBlock(newState, entityKey, ' ') } (NuGet程序包)将程序集合并到一个EXE中。似乎正在影响本地化资源。

禁用合并可以解决问题。我将开始一个新问题,更具体地讲如何处理这种特殊情况。