私はASP.NET MVCアプリケーションのローカライズを始めたばかりです。ほとんどの文字列はリソースファイルで定義され、Matt のローカリゼーション ヘルパーその他の文字列はデータベースに保存する必要があります。
私の質問:リクエスト パイプラインの早い段階で設定しCurrentUICulture
てアプリケーション全体でそれを使用するか、Request.UserLanguages[0]
必要なときに直接使用するか?
今すぐCurrentUICulture
Application_BeginRequestで設定すべきだと思います実装は次のようになります。
protected void Application_BeginRequest(object sender, EventArgs e)
{
var cultureName = HttpContext.Current.Request.UserLanguages[0];
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}
ここは設定するのに最適な場所でありCurrentUICulture
、Request.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/
その他のオプションとしては、基本コントローラー クラスを作成し、そこにローカリゼーション ロジックを実装します。または、アクション フィルター属性を使用しますが、すべてのコントローラーにそれを追加するか、このアプローチを基本コントローラー クラスと組み合わせることを忘れないようにする必要があります。