使用 .resx 文件对 Winforms VSTO 进行本地化
Localization of Winforms VSTO with .resx files
我想本地化我的 VSTO winform,但我无法让它工作。未应用本地化。为了测试,我创建了一个非常简单的 Winform,它只有一个带有一些文本的按钮。
以下是我如何尝试本地化表单上的文本:
- 将表单的.Localizable属性设置为True
- 使用流行的 ResX 管理器 (https://dotnetfoundation.org/projects/resx-resource-manager)) 翻译我的表单字符串。
- 我还添加了一个 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),但其中 none 似乎有效。
一切正常,设置Thread.CurrentThread.CurrentUICulture
应该足够了,但请确保以下几点:
您在打开表格之前调用 Thread.CurrentThread.CurrentUICulture = New CultureInfo(...)
(我认为这很明显,但无论如何)
资源和 CultureInfo 构造函数中的区域性名称相同。我的意思是,“de”和“de-DE”不是一回事(很可能就是这个问题)。我会尝试 new CultureInfo("de-DE")
,甚至 new CultureInfo(1031)
请注意办公语言可能与系统语言不同。您可以使用 Application.LanguageSettings.LanguageID
使用办公室语言。该值应与 CultureInfo 接受的参数兼容。
我想本地化我的 VSTO winform,但我无法让它工作。未应用本地化。为了测试,我创建了一个非常简单的 Winform,它只有一个带有一些文本的按钮。
以下是我如何尝试本地化表单上的文本:
- 将表单的.Localizable属性设置为True
- 使用流行的 ResX 管理器 (https://dotnetfoundation.org/projects/resx-resource-manager)) 翻译我的表单字符串。
- 我还添加了一个 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),但其中 none 似乎有效。
一切正常,设置Thread.CurrentThread.CurrentUICulture
应该足够了,但请确保以下几点:
您在打开表格之前调用
Thread.CurrentThread.CurrentUICulture = New CultureInfo(...)
(我认为这很明显,但无论如何)资源和 CultureInfo 构造函数中的区域性名称相同。我的意思是,“de”和“de-DE”不是一回事(很可能就是这个问题)。我会尝试
new CultureInfo("de-DE")
,甚至new CultureInfo(1031)
请注意办公语言可能与系统语言不同。您可以使用 Application.LanguageSettings.LanguageID
使用办公室语言。该值应与 CultureInfo 接受的参数兼容。