MVC2.0本地化(另类解决方案)<下>

  本文是对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本地化(另类解决方案)<下>,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。