【问题标题】:Localization of Winforms VSTO with .resx files使用 .resx 文件本地化 Winforms VSTO
【发布时间】:2021-11-09 09:29:44
【问题描述】:

我想本地化我的 VSTO winform,但我无法让它工作。未应用本地化。为了测试,我创建了一个非常简单的 Winform,它只有一个带有一些文本的按钮。

这是我尝试本地化表单上的文本的方法:

  1. 将表单的 .Localizable 属性设置为 True
  2. 使用流行的 ResX 管理器 (https://dotnetfoundation.org/projects/resx-resource-manager)) 为表单翻译我的字符串。
  3. 我还添加了一个 Strings.resx(包含英语和德语字符串)文件,我尝试通过 Me.Text = My.Resources.Strings.SomeRandomName 以表单名称访问该文件

因此,我现在有了一个名为 frmTest 的表单。它的默认字符串是英文的,但我可以看到创建了一个包含我的德语翻译的 frmTest.de.resx。

不幸的是,该表单仍以英文显示,而且我对 My.Resources.Strings.SomeRandomName 的调用也会产生英文字符串。

文化设置为 de-DE,但我也尝试通过以下方式手动更改它:

System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("de")

我还尝试将办公室语言设置为德语,但也没有帮助。

我发现了几条旧指令(例如localisation in vsto add-in),但它们似乎都不起作用。

【问题讨论】:

    标签: .net winforms localization vsto


    【解决方案1】:

    一切正常,设置Thread.CurrentThread.CurrentUICulture 就足够了,但请确保以下几点:

    1. 您在打开表单之前调用Thread.CurrentThread.CurrentUICulture = New CultureInfo(...)(我认为这很明显,但无论如何)

    2. 资源和 CultureInfo 构造函数中的区域性名称相同。我的意思是,“de”和“de-DE”不是一回事(很可能这就是问题所在)。我会尝试new CultureInfo("de-DE"),甚至new CultureInfo(1031)

    请注意,办公语言可能与系统语言不同。您可以使用Application.LanguageSettings.LanguageID 使用办公语言。该值应与 CultureInfo 接受的参数兼容。

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多