我的VB.NET项目中有一个名为“strings.resx”的字符串资源文件,定义为嵌入式资源。我有另一个名为strings.es.resx
的文件,其中包含西班牙语中所有相同的字符串。我在运行时使用以下代码加载资源:
MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)
我已经在Windows中将语言区域设置为Espanol并重新登录,但是在执行上述操作时,我仍然会加载英文字符串资源。如果Windows语言环境是ES,我如何加载西班牙语资源?我希望它能自动处理。
答案 0 :(得分:1)
查看System.Threading.Thread.CurrentThread.CurrentUICulture
属性 - 它有习惯被修复为en-US。
如果是,请尝试将其设置为与CurrentCulture
相同。
<强>更新强>
由于这不起作用,请检查应用程序的输出文件夹是否有es
文件夹,其中有一个名为strings.resources.dll的dll。如果没有,那么,基本上,资源管理器没有找到特定于文化的字符串资源,因为它不存在,在这种情况下将它们复制并且应该可以工作。
答案 1 :(得分:0)
免责声明 - 这些都来自内存,可能不是100%准确: - )
使用Thread.CurrentUICulture
加载.NET资源(除非在代码中加载资源时明确覆盖它)。 Thread.CurrentUICulture
由安装Windows时使用的UI语言设置,无法更改。这与在控制面板中设置的Thread.CurrentCulture
不同,可以随时更改。
例如,在我的电脑上,CurrentCulture
会返回"en-GB"
,因为我就是这样,但CurrentUICulture
会返回"en-US"
,因为Microsoft只提供一种英语版本的Windows。