我无法弄清楚如何在客户端计算机上获取已安装系统的CultureInfo。
有CultureInfo.InstalledUICulture
属性,但它似乎在Silverlight中不可用。
此致 强尼
答案 0 :(得分:4)
我相信 Culture.CurrentCulture实际上会为您提供用户的文化。但是,它可以通过当前线程的Thread.CurrentCulture属性进行更改或以编程方式设置。我不确定如果 Silverlight可以访问超出此机制的用户的机器/操作系统文化/语言设置。
正如您在评论中提到的那样,您无法信任它,因为它肯定会在应用程序的生命周期中发生变化。也许那时您应该在应用程序首次启动之前记录当前文化,然后以编程方式更改,并将其无限期地(静态地或以其他方式)存储以供您的代码引用。
编辑:另一种可能性是利用托管浏览器及其JavaScript。谷歌搜索我看到你可以访问window.navigator.language,它将报告浏览器的语言。 Internet Explorer喜欢做自己的事情并报告browserLanguage,userLanguage和systemLanguage。您可以在页面上编写一个小的JavaScript方法(您需要进行更多的跨浏览器测试,版本测试和操作系统测试):
function GetUserLanguage()
{
if (window.navigator.language)
return window.navigator.language;
else //yay IE
return clientInformation.browserLanguage;
}
然后在Silverlight中你可能有类似的东西:
string userLanguage = (string)HtmlPage.Window.Invoke("GetUserLanguage");
CultureInfo userCulture = new CultureInfo(userLanguage);
我不确定浏览器报告的所有文化(所有浏览器/版本/操作系统)是否与Silverlight中的文化列表相匹配。