【发布时间】:2010-12-08 13:22:47
【问题描述】:
我有一个非常奇怪的问题,看起来可能是 Silverlight 错误。我在一个从 VS2010 创建的简单应用程序中复制了这一点,Silverlight 应用程序项目默认模板。
在应用程序中,我有两个 .resx 文件,“Strings.resx”和“Strings.de.resx”。它们每个都有一个键“SomeString”,如下所示:
Strings.resx - SomeString - “一些测试字符串”
Strings.de.resx - SomeString - “一些 DE 测试字符串”
在单个应用程序 MainPage.xaml 上,我只是在 MainPage 的类构造函数中打了一个 TextBlock,我在这样的代码中使用它:
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
txt.Text = Strings.SomeString;
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
txt.Text = Strings.SomeString;
使用调试器逐步显示 txt.Text 首先是“一些 DE 测试字符串”,然后是“一些测试字符串”。所以一切正常。
但是,我在我的机器上安装了德语语言包。现在,如果我在机器的区域设置中将系统语言更改为“Deutsch”并注销/登录以使更改生效,则相同的代码的工作方式不同:从资源中检索 SAME 字符串“some DE test string”两次。基本上,将当前文化/uiculture 设置为“en-US”的第二个设置什么都不做,仍然会检索德语字符串。
实际上,如果我想要一个用户可以独立于系统语言更改显示语言的应用程序,我做不到,因为检索到的资源不正确。
同样,在 Windows 操作系统语言设置为英语的情况下,一切正常,我可以更改文化并且它可以正常工作,加载正确的字符串资源。当 Windows 操作系统语言设置为 Deutsch(尚未检查其他语言)时,我无法加载英文字符串资源。
此问题在 Vista 和 Windows 7 机器上都存在,尚未在其他机器上测试过。
ps:csproj文件改成<SupportedCultures>en,en-US,de,de-DE</SupportedCultures>
知道我做错了什么吗?
【问题讨论】:
标签: .net silverlight localization