21


5

私はASP.NET Webアプリケーションを構築しています、そして私のすべての文字列はリソースファイルに格納されています。 私は自分のアプリケーションに第2の言語を追加したいのですが、理想的には、ユーザーに英語以外の言語を選択させるのではなく、ユーザーのブラウザ言語(またはウィンドウズ言語)を自動検出してデフォルトにします。 現在、私はすべてのリソース母集団を手動で処理しているので、表示する言語を自動的に判断する簡単な方法があれば、2番目のリソースファイルと言語を追加することは私の観点からは簡単です。

誰かがこれをやっていますか、それとも私はその値をどのように取得するかについて何か考えがありますか? ASP.NETはサーバーベースなので、特定のブラウザ設定にアクセスすることはできません。

解決策:これが、私がやったことです。 "For Each"を使用して "HttpContext.Current.Request.UserLanguages"を調べ、サポートしているものを検索しました。 私たちはまだ方言をサポートしていないので、実際には左の2文字を調べているだけです - ただ英語とスペイン語。 すべての助けをありがとう!

6 Answer


21


web.configでこれを試してください。


これにより、ASP.NETは要求ヘッダーからクライアントのカルチャを自動検出します。 Page属性を使ってページごとに設定することもできます。


6


この article(元のリンクとしてarchive.orgにリンクされています) )はブラウザの言語設定を自動検出するのに役立ちます。

はい。 引用された記事はASP.NETを使用しません。 これは articleです。


2


http://en.wikipedia.org/wiki/ASP.NET [ASP.NET]のローカライズは多くの開発者によって見過ごされているので、これは大きな問題です。

ASP.NET * should *は自動的にユーザーのブラウザ設定を選択し、 `CultureInfo.CurrentCulture`をユーザーのブラウザ言語に強制します。 次のように `Page_OnInit()`の行を使って問題を強制することができます。

Thread.CurrentThread.CurrentCulture = new CultureInfo(HttpContext.Current.Request.UserLanguages[0]);

これをどうやってテストできますか。 ブラウザで言語パネルを開き、設定を変更します。


2


クライアントは一般的にHTTP要求ヘッダーに Accept-Languageを定量的に採点された優先言語のリストで設定します。最も好まれない。 あなたはそれを解析することができますが、Maxamが指摘したように、 ASP.NETはあなたのためにそれをするためのメカニズムを持っています。


2


ASP.NET 4のRequest.UserLanguagesはこれを文字列配列として解析します。

良い情報:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html


1


/// ///ブラウザのロケール設定に基づいてユーザのロケールを設定します。 ///が設定されていない場合、デフォルトのロケールが使用されます。 ///

public static void SetUserLocale(string CurrencySymbol、bool SetUiCulture){HttpRequestリクエスト= HttpContext.Current.Request; if(Request.UserLanguages == null)を返します。

文字列Lang = Request.UserLanguages [0]; if(Lang!= null){// ***トルコ語ロケールおよび大文字/小文字の問題// *** DataRow / DataTableインデックスif(Lang.StartsWith( "tr"))return;

if(Lang.Length <3)Lang = Lang " - " Lang.ToUpper(); System.Globalization.CultureInfo Culture = new System.Globalization.CultureInfo(Lang);を試してください。 if(CurrencySymbol!= null

System.Threading.Thread.CurrentThread.CurrentCulture = Culture;

if(SetUiCulture)System.Threading.Thread.CurrentThread.CurrentUICulture =カルチャ; } {{}}}をキャッチ

この記事のソースはこちらです。 ブラウザの言語を検出する方法