クライアント マシンにインストールされているシステムの 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 のカルチャ リストと一致するかどうかはわかりません。