2012-03-30 14 views
2

ASP.NETには、ブラウザの優先言語に基づいて正しい言語リソースファイルを自動的に読み込むためのビルドイン機能があります。ASP.NETローカリゼーションの2次言語のサポート

たとえば、訪問者の言語がデンマーク語(da)で、ウェブサイトに* .da.resxファイルがある場合、そのリソースが使用されます。優先リソースファイルが利用できない場合、ASP.NETは基本/既定リソースファイル(* .resx)にフォールバックします。

ブラウザでは、複数の優先言語を指定できるようになりました。訪問者がデンマーク語を話すが、ノルウェー語を第2言語としてブラウザ設定(ノルウェー語はデンマーク語と95%同一)に追加すると、ブラウザは「da、no; q = 0.9」をウェブサーバーに送信する。しかし、この第2言語はASP.NETでサポートされていないようです。 * .da.resxが利用できない場合、* .no.resxはロードされません。

第2言語をサポートする方法を知っている人はいますか?

答えて

0

ASP.NETは、web-configファイルでenableClientBasedCultureが有効になっている場合、accept-languagesヘッダーフィールドの最初のエントリを自動的に処理して、使用するカルチャを決定します。

これを拡張し、accept-languagesリスト内の他の言語エントリ(存在する場合)を調べて一致があるかどうかを確認するには、プログラムで行い、Thread.CurrentThread.CurrentUICultureを設定する必要があります適切なローカライズされたリソースを見つける)とThread.CurrentThread.CurrentCulture(ロケール対応のデータ型をどのように表示して処理するかを制御します)。これはhereと説明されています。

+0

ASP.NETは、第4メジャーリリースでも、そのような基本機能をサポートしていません。私は大きなバグを発見したと思うけど、私はそれを別の質問として提出するつもりだと思う。ビルドインの国際化サポートの代替案がありますか? – Peter

+0

はい、私はなぜこのようにしたのでしょうか、なぜリストの最初の項目だけを見るのでしょうか?たぶん、ほとんどのユーザー(あなたのシナリオでさえ)は、そのリストを正しく設定できるほど精通していないことが分かったでしょうか?それはちょうど推測です。エンドユーザーとしては、とにかくサイトのどこかに言語セレクタが表示されることが予想されます。そのようなセレクタを公開する場合は、accept-languagesヘッダを見て、必要な選択ロジック(リストされているすべての言語を参照)を使用してデフォルト言語を選択するのは非常に簡単です。 – Clafou

関連する問題