全球化:之所以問這個問題是有一個更好的瞭解如何Thread.CurrentThread.CurrentUICulture
工作有關性能和錯誤消息的ViewModels和控制器Thread.CurrentThread.CurrentUICulture Vs的接受語言中的ViewModels
我的已設置我的項目並覆蓋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);
}
現在,在此之後,檢查HTTP請求中的Accept-Language
頭由瀏覽器發送,用戶的變化並沒有反映 - 值仍然是「EN-US」。這讓我覺得這兩個不是依賴的。
我也已將代碼移到Global.asax,但效果相同。從昨天開始。
Thread.CurrentThread.CurrentUICulture
設置影響頁面上的文本,但不影響來自ViewModel註釋的錯誤消息或屬性。但是當從瀏覽器更改Accept-Language
時,則會從正確的資源文件中選取錯誤消息。
- 是否可以操作
Accept-Language
標題? - 這似乎是隻讀的 - 主要問題:
Thread.CurrentThread.CurrentUICulture
如何工作?這似乎是互聯網上使用的大多數例子/文章/博客等。
感謝您提供基於網址的建議。我知道這一點,但現在不是要求。檢查你提供的鏈接,我將邏輯移至'Application_AcquireRequestState',似乎現在正在工作。另外,感謝「太遲了」的評論,這很有道理。 – codingbiz 2013-04-25 16:10:14
關於我的最後一個問題,在這樣的應用程序中可能存在多少個線程。 '線程。CurrentThread'指的是當前的,這意味着可能有很多。什麼時候創建,爲什麼?謝謝。 – codingbiz 2013-04-25 16:11:41
'Application_AcquireRequestState'在某些情況下也不起作用(對於modelbinding時出現本地化錯誤消息的時間太晚),這就是爲什麼我推薦Alex使用自定義RequestHandler的方法。它也比global.asax中的魔術事件更感_MVC_。 – marapet 2013-04-25 19:29:55