トップ回答者
ASP.NET MVCでの多言語対応について

質問
-
回答
-
ご存知かもしれませんが・・・
web.config で globalization 要素の uiCulture, culture 属性を auto に設定すると、ASP.NET は、ブラウザから送信されてくる要求ヘッダに含まれる Accept-Language の設定を調べて、その要求を処理するスレッドのカルチャを Accept-Language に設定されているカルチャに書き換えるようです。
そして、リソースマネージャが実行時に、Thread.CurrentUICulture などで得られる CultureInfo(現在の要求を処理しているスレッドのカルチャ情報)を参照してローカライズされたリソースを検索し、UI に表示されるテキストを取得するという仕組みになっています。
・・・という訳で、例えば、.ja-JP.resx というリソースファイルがあるとして、それに設定してあるテキストを表示したい場合は、コントローラーのアクションメソッドで以下のようなコードで CurrentUICulture を書き換えてやればよいはずです。
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ja-JP");
一応以下の記事のサンプルで検証してみました。
データアノテーション検証の多言語対応
http://surferonwww.info/BlogEngine/post/2014/09/11/multi-languages-message-for-data-annotation.aspxweb.config で globalization 要素の uiCulture, culture 属性を auto に設定して、ブラウザの言語設定を en-US にしても、上記のコードがあると .ja-JP.resx からテキストを取得して表示することは確認しました。
だたし、
> 画面のボタン(またはリンク)クリックでおこなおうとした場合、どういったやり方が
> あるのでしょうか?・・・とのことですが、ボタンクリック等で CurrentUICulture の設定を変えるということが、質問者さんのケースで現実的なのかどうかは分かりません。
そのあたりは質問者さんの方で検討してみてください。
- 編集済み SurferOnWww 2017年1月24日 3:55 脱字追加
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年1月25日 0:47
- 回答としてマーク hhu9324 2017年1月25日 1:52
すべての返信
-
ご存知かもしれませんが・・・
web.config で globalization 要素の uiCulture, culture 属性を auto に設定すると、ASP.NET は、ブラウザから送信されてくる要求ヘッダに含まれる Accept-Language の設定を調べて、その要求を処理するスレッドのカルチャを Accept-Language に設定されているカルチャに書き換えるようです。
そして、リソースマネージャが実行時に、Thread.CurrentUICulture などで得られる CultureInfo(現在の要求を処理しているスレッドのカルチャ情報)を参照してローカライズされたリソースを検索し、UI に表示されるテキストを取得するという仕組みになっています。
・・・という訳で、例えば、.ja-JP.resx というリソースファイルがあるとして、それに設定してあるテキストを表示したい場合は、コントローラーのアクションメソッドで以下のようなコードで CurrentUICulture を書き換えてやればよいはずです。
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ja-JP");
一応以下の記事のサンプルで検証してみました。
データアノテーション検証の多言語対応
http://surferonwww.info/BlogEngine/post/2014/09/11/multi-languages-message-for-data-annotation.aspxweb.config で globalization 要素の uiCulture, culture 属性を auto に設定して、ブラウザの言語設定を en-US にしても、上記のコードがあると .ja-JP.resx からテキストを取得して表示することは確認しました。
だたし、
> 画面のボタン(またはリンク)クリックでおこなおうとした場合、どういったやり方が
> あるのでしょうか?・・・とのことですが、ボタンクリック等で CurrentUICulture の設定を変えるということが、質問者さんのケースで現実的なのかどうかは分かりません。
そのあたりは質問者さんの方で検討してみてください。
- 編集済み SurferOnWww 2017年1月24日 3:55 脱字追加
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年1月25日 0:47
- 回答としてマーク hhu9324 2017年1月25日 1:52