3

私の理解では、CurrentThread.CurrentUICultureをたとえば「da-DK」に設定すると、「da-DK」、「da」の順にリソースファイルが検索され、不変のカルチャにフォールバックします。オペレーティングシステムは通常多言語ではないため、これはデスクトップアプリケーションに適しています。ただし、Webサイトの場合、これは必ずしも当てはまりません。

ユーザーが「da_DK」、「de_DE」、「en_GB」を望んでいるとブラウザが主張する訪問者がいるとします。これは、存在する場合はデンマーク語、次にドイツ語、次にイギリス英語をフォールバックとして使用します。

.Net 4ローカリゼーションフレームワークを使用してこの設定に対応する方法はありますか?

いいえ、これは思考実験ではありません。:)

編集

明確にするために、問題はWebリクエストからローカリゼーションヘッダーを取得していないことです。問題は、リソースファイルをチェックするだけでなく、リソースファイルを順番にチェックするようにCurrentThread.CurrentUICultureを設定することです。

または、CurrentUICultureに一致するresxファイルがあるかどうかを確認する方法。

4

1 に答える 1

0

私はこれがあなたが求めているものだと思います:

HttpRequest.UserLanguages()

これは、ユーザー言語の配列を優先順に返します。おそらく、この情報に対して適用するローカリゼーションを変更できるようにすることをお勧めしますが、ブラウザーの構成が本当に必要なものを正確に反映していない場合に備えて.

アップデート :

リソースが存在するかどうかを確認するには、次を使用します。

ResourceManager.GetResourceSet

ここでtryParentsfalse に設定できます。nullリソースが存在しない場合、メソッドは戻ります。その後、ヘッダーで返された次の優先カルチャを試すことができます。

于 2013-02-06T13:41:36.873 に答える