0

我的 VB.NET 项目中有一个名为“strings.resx”的字符串资源文件,定义为嵌入式资源。我有另一个名为 的文件strings.es.resx,其中包含所有相同的西班牙语字符串。我正在使用以下代码在运行时加载资源:

MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)

我已在 Windows 中将语言区域设置为 Espanol 并重新登录,但在执行上述操作时,我仍然会加载英文字符串资源。如果 Windows 语言环境是 ES,我如何加载西班牙语资源?我期待它会被自动处理。

4

2 回答 2

1

看看这个System.Threading.Thread.CurrentThread.CurrentUICulture属性 - 它有一个被固定为 en-US 的习惯。

如果是,请尝试将其设置为与CurrentCulture.

更新

由于这不起作用,请检查应用程序的输出文件夹是否有一个es文件夹,其中有一个名为 strings.resources.dll 的 dll。如果没有,那么,基本上,资源管理器没有找到特定于文化的字符串资源,因为它不存在,在这种情况下将它们复制进去,它应该可以工作。

于 2011-02-11T13:25:50.780 回答
0

免责声明- 这完全来自记忆,可能不是 100% 准确 :-)

.NET 资源是使用加载的Thread.CurrentUICulture(除非您在代码中加载资源时显式覆盖它)。Thread.CurrentUICulture由您在安装 Windows 时使用的 UI 语言设置,并且无法更改。这与Thread.CurrentCulture在控制面板中设置的 不同,可以随时更改。

例如,在我的 PC 上,CurrentCulture返回"en-GB"是因为我所在的位置,但CurrentUICulture返回"en-US"是因为 Microsoft 仅提供一种英语版本的 Windows。

于 2011-02-11T13:35:56.250 回答