SIlverlight应用程序中的系统文化

时间:2013-04-26 09:53:31

标签: c# silverlight system cultureinfo culture

我无法弄清楚如何在客户端计算机上获取已安装系统的CultureInfo。

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

此致 强尼

1 个答案:

答案 0 :(得分: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中的文化列表相匹配。