如何确保在运行时加载字符串资源的适当语言版本?
-
12-11-2019 - |
题
我的 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。