0

我不知道如何在客户端机器上获取已安装系统的 CultureInfo。

有该CultureInfo.InstalledUICulture属性,但在 Silverlight 中似乎不可用。

问候乔尼

4

1 回答 1

4

相信Culture.CurrentCulture实际上会为您提供用户的文化。但是,它可以通过当前线程的Thread.CurrentCulture属性更改或以编程方式设置。我不确定Silverlight 是否可以在此机制之外访问用户的机器/操作系统文化/语言设置。

正如您在评论中提到的那样,您不能相信它,因为它肯定会在应用程序的整个生命周期中发生变化。也许您应该在应用程序首次启动时记录当前文化,然后以编程方式更改它,并无限期地(静态或其他方式)存储它以供您的代码引用。

编辑:另一种可能性是利用托管浏览器及其 JavaScript。谷歌搜索我看到你可以访问window.navigator.language它将报告浏览器的语言。Internet Explorer 喜欢做自己的事情并报告browserLanguageuserLanguagesystemLanguage

你可以在页面上编写一个小的 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 中的文化列表相匹配。

于 2013-04-26T11:05:47.177 回答