.net 如何确保在运行时加载字符串资源的适当语言版本?

.net 如何确保在运行时加载字符串资源的适当语言版本?,.net,resources,internationalization,locale,resourcemanager,.net,Resources,Internationalization,Locale,Resourcemanager,在我的VB.NET项目中有一个名为“strings.resx”的字符串资源文件,定义为嵌入式资源。我有另一个名为strings.es.resx的文件,其中包含西班牙语中所有相同的字符串。我正在运行时使用以下代码加载资源: MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly) 我已经在Windows中将语言区域设置设置为Espanol并重新登录,但在执行上述操作时,我仍在加载英文字符串资源。如果

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

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

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

看看
System.Threading.Thread.CurrentThread.CurrentUICulture
属性-它有一个固定的习惯

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

更新

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

免责声明-这都是内存中的,可能不是100%准确:-)

.NET资源是使用
线程.CurrentUICulture
加载的(除非在代码中加载资源时显式重写它)<代码>线程。CurrentUICulture由Windows安装中使用的UI语言设置,不能更改。这与“控制面板”中设置的
线程.CurrentCulture
不同,可以随时更改


例如,在我的电脑上,
CurrentCulture
返回
“en GB”
,因为我就在这里,但是
CurrentUICulture
返回
“en US”
,因为Microsoft只提供一个英文版本的Windows。

CurrentUICulture是es。表单资源是本地化的好吧,我在代码中使用的这些“文字”值似乎总是中性的区域性。@Robinson-如果您使用
ResourceManager
GetString(string)
方法,您是否可以尝试显式
GetString(string,CultureInfo)
重载,请毫不含糊地传递西班牙文化?如果它仍然不起作用,那么我猜它在bin folderDuh中找不到您的资源文件!我的错误。。。字符串正在正确加载。我只是在做一些其他的事情(从英语设置文件中读取),其中包含字符串的英语版本。我会根据你的努力为你的答案打上正确的标记,因为原因是我自己的愚蠢:p.@Robinson-如果你在我的办公室里和我在一起,那么我就完成了“纸板程序员”的角色。这是一项非常重要的工作:)您可以设置Thread.CurrentUICulture-ResourceManager实际上会对此做出响应并加载此区域性的资源集。