0

クライアント マシンにインストールされているシステムの CultureInfo を取得する方法がわかりません。

プロパティはありますがCultureInfo.InstalledUICulture、Silverlight では利用できないようです。

よろしくジョニー

4

1 に答える 1

4

Culture.CurrentCulture実際にユーザーの文化を提供すると思います。ただし、現在のスレッドのThread.CurrentCultureプロパティを介して変更したり、プログラムで設定したりできます。このメカニズムを超えて、Silverlight がユーザーのマシン/オペレーティング システムのカルチャ/言語設定にアクセスできるかどうはわかりません。

コメントで述べたように、アプリケーションの存続期間を通じて確実に変化するため、信頼できません。おそらく、プログラムによって変更される前に、アプリケーションが最初に起動したときに現在のカルチャを記録し、コードによって参照されるように無期限に (静的またはその他の方法で) 保存する必要があります。

編集: 別の可能性は、ホスティング ブラウザーとその JavaScript を活用することです。グーグルで検索すると、ブラウザの言語を報告するwindow.navigator.languageにアクセスできることがわかります。Internet Explorer は独自の処理を行い、browserLanguageuserLanguage、および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 のカルチャ リストと一致するかどうかはわかりません。

于 2013-04-26T11:05:47.177 に答える