1

みなさん、こんにちは 私は小さな asp.net mvc アプリケーションを書いています。それをローカライズして、複数の言語をサポートしたいと考えています。多くの役立つ記事を見つけました。

言語のルーティングを追加しましたカスタム actionfilter 属性を使用して、英語の「site.com/en/controller/action」または「site.com/ar/controller/action」のような URL の言語コードに応じて、現在のスレッドの現在のカルチャを選択しました" アラビア語の場合。

英語用の「Resources\Views\Shared\Layout.resex」とアラビア語用の「Resources\Views\Shared\Layout.ar.resex」を作成しました。

アラビア語のローカリゼーションのみで立ち往生しているという問題があり、現在のスレッドカルチャを手動で英語に設定し、actionfilter 属性を削除しましたが、それでもアラビア語のコンテンツが表示されます!! これは何が問題なのですか?

4

1 に答える 1

3

詳細やコードがないとわかりにくいですが、見落としがちなのは web.config ファイルの構成です。<globalization uiCulture="auto" culture="auto" />in のようなものがある場合<system.web>(カルチャ識別子の代わりに "auto" を使用)、ASP.NET は、ブラウザーの言語設定によって決定される accept-language ヘッダーを使用して、スレッドのカルチャを自動的に選択します。したがって、この構成を使用し、ブラウザの言語リストでアラビア語を英語より前に置くことで、表示されていることを部分的に説明できます.

編集: 問題は、コードが Thread.CurrentThread.CurrentUICulture を使用して、使用されるローカライズされたリソースを制御する必要があることでした (Thread.CurrentThread.CurrentCulture は別のものであり、ローカライズには影響しませんが、日付などのロケール依存の書式設定/解析には影響しません) )。

于 2012-10-23T12:47:26.063 に答える