グローバリゼーション:この質問をする理由はThread.CurrentThread.CurrentUICulture
、ViewModel と Controller のプロパティとエラー メッセージに関連してどのように機能するかをよりよく理解するためです。
OnActionExecuting
プロジェクトをセットアップし、Cookie に保存されているユーザーの選択に基づいて言語を設定したコントローラーのメソッドをオーバーライドします。
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
HttpCookie cookie = Request.Cookies["lang"];
string lang = cookie != null ? cookie.Value : "en-US";
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
}
この後Accept-Language
、ブラウザから送信される http リクエストのヘッダーを確認すると、ユーザーの変更が反映されず、値は「en-US」のままです。この2つは依存していないことを感じさせます。
コードを Global.asax にも移動しましたが、同じ効果です。昨日から続いています。
このThread.CurrentThread.CurrentUICulture
設定はページ上のテキストに影響しますが、エラー メッセージや ViewModel 注釈のプロパティには影響しません。ただしAccept-Language
、ブラウザから変更すると、エラー メッセージは適切なリソース ファイルから選択されます。
Accept-Language
ヘッダーを操作することは可能ですか? - これは読み取り専用のようです- 主な質問: どのように機能し
Thread.CurrentThread.CurrentUICulture
ますか? インターネット上のほとんどの例/記事/ブログなどが使用しているようです。