我不知道如何在客户端机器上获取已安装系统的 CultureInfo。
有该CultureInfo.InstalledUICulture
属性,但在 Silverlight 中似乎不可用。
问候乔尼
我不知道如何在客户端机器上获取已安装系统的 CultureInfo。
有该CultureInfo.InstalledUICulture
属性,但在 Silverlight 中似乎不可用。
问候乔尼
我相信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 中的文化列表相匹配。