vb.net - 基本本地化(中性语言)

标签 vb.net winforms localization globalization

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

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

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

形成消息框,我将所有字符串放入资源文件中(通过单击我的项目,然后单击资源选项卡)。我用对 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 文件是否应位于我的项目 文件夹中(与默认 Resources.resx 并列),还是应该位于My Project 文件夹中?或者我应该使用像 MessageResources.resxMessageResources.fr.resx 这样的新文件并将它们都放在根目录中?
  4. 如何强制整个应用程序使用法语而不是默认语言?

最佳答案

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

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

关于vb.net - 基本本地化(中性语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039831/

相关文章:

mysql - 如何让php代码以vbnet形式执行

vb.net - 如何使用多个分隔符分割字符串

python - 是否有与 VB.NET 'With' 语句等效的 Python?

c# - WinForms 中的 CKEditor 下拉工具栏未注册点击事件

c# - 为什么 Trackbar 值在向上箭头/PgUp 上减少?

c# 如何在 DragDrop 事件上检测和处理 .URL 文件类型

c# - VB.NET 到 C# 的转换——非 EventHandler 事件的接口(interface)事件声明

Java 语言环境变体 : does it exist? 的 .NET 对应项

c# - 在项目中编译resx文件或者直接使用resgen而不编译resx

.Net 本地化与品牌化