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

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

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

有帮助吗?

解决方案

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

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

更新

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

其他提示

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

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

例如,在我的电脑上, CurrentCulture 回报 "en-GB" 因为那是我所在的地方,但是 CurrentUICulture 回报 "en-US" 因为微软只提供一种英文版本的Windows。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top