ASP.NET MVC: Thread.CurrentThread.CurrentUICulture を設定するタイミングは? 質問する

ASP.NET MVC: Thread.CurrentThread.CurrentUICulture を設定するタイミングは? 質問する

私はASP.NET MVCアプリケーションのローカライズを始めたばかりです。ほとんどの文字列はリソースファイルで定義され、Matt のローカリゼーション ヘルパーその他の文字列はデータベースに保存する必要があります。

私の質問:リクエスト パイプラインの早い段階で設定しCurrentUICultureてアプリケーション全体でそれを使用するか、Request.UserLanguages[0]必要なときに直接使用するか?

今すぐCurrentUICultureApplication_BeginRequestで設定すべきだと思います実装は次のようになります。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

ここは設定するのに最適な場所でありCurrentUICultureRequest.UserLanguages[0]その情報を取得するのに最適な場所でしょうか?


アップデート:

アリエルのこの投稿では、コードなしでこれを定義できることを示しています。web.config

<system.web>
  <!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
  <globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>

ベストアンサー1

HttpModule を使用したサンプルを次に示します。

http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/

その他のオプションとしては、基本コントローラー クラスを作成し、そこにローカリゼーション ロジックを実装します。または、アクション フィルター属性を使用しますが、すべてのコントローラーにそれを追加するか、このアプローチを基本コントローラー クラスと組み合わせることを忘れないようにする必要があります。

おすすめ記事