|
本文是對MVC2.0本地化(另類解決方案)上這篇文章內介紹的MVC2.0本地化功能進行加強、細化的結尾篇。如果存在不足的地方,希望您指出。
如何對上篇文章進行加強以及細化呢?主要從以下三點開始。
1、根據用戶瀏覽器自動語言判斷,同時也可由用戶自定義站點語言。
2、多語言加入,類似resource文件,可以有多個語言資源庫。
3、全局本地化,可以本地化非頁面內容,比如為臺異步到前臺的json數據本地化等。
主要步驟如下:
一、根據用戶瀏覽器自動語言判斷,同時也可由用戶自定義站點語言
這個實現思路為:首選判斷存儲在客戶端的用戶“主動”設定的cookie。如果該值為空,則根據用戶瀏覽器自動識別語言。如果不為空則根據用戶設定好的cookie值獲取站點語言。那如何根據客戶瀏覽器識別語言,我們要在web.config的system.web節點添加globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto"/設置。
根據此設置服務器端就就可以使用System.Threading.Thread.CurrentThread.CurrentCulture識別用戶瀏覽器的語言。貼出global中部分代碼以供參考:
protected void Application_BeginRequest(Object sender, EventArgs e) { HttpCookie lang = Request.Cookies["Lang"]; if (lang != null) { if (Response.ContentType == "text/html" || Response.ContentType == "application/json") Response.Filter = new LocalizationHandler(Response.Filter, lang.Value); return; } string langFromBrowser = System.Threading.Thread.CurrentThread.CurrentCulture.ToString(); string strLang = string.Empty; if (string.Compare("zh-CN", langFromBrowser, true) == 0) { strLang = "SimplifiedChinese"; } else if (string.Compare("zh-Hant", langFromBrowser, true) == 0) { strLang = "TraditionalChinese"; } else if (langFromBrowser.Contains("en")) { strLang = "English"; } else { strLang = "English"; } if (Response.ContentType == "text/html" || Response.ContentType == "application/json") Response.Filter = new LocalizationHandler(Response.Filter, strLang); }
NET技術:MVC2.0本地化(另類解決方案)<下>,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。