全球化:问这个问题的原因是为了更好地理解Thread.CurrentThread.CurrentUICulture
ViewModels 和 Controllers 中的属性和错误消息是如何工作的
我已经设置了我的项目并覆盖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”。这让我觉得这两者并不依赖。
我也将代码移至 Global.asax,但效果相同。从昨天就开始了。
该Thread.CurrentThread.CurrentUICulture
设置会影响页面上的文本,但不会影响 ViewModel 注释中的错误消息或属性。但是当Accept-Language
从浏览器更改时,错误消息会从正确的资源文件中挑选出来。
- 是否可以操纵
Accept-Language
标题?- 这似乎是只读的 - 主要问题:如何
Thread.CurrentThread.CurrentUICulture
工作?这似乎是互联网上大多数示例/文章/博客等使用的。