一起谈.NET技术,MVC2.0本地化(另类解决方案)<下>

简介:   本文是对MVC2.0本地化(另类解决方案)上这篇文章内介绍的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);
    }

  通过以上代码块,服务端就可以聪明的识别:到底是根据客户端的cookie还是根据用户浏览器语言设定来显示站点语言。

  二、多语言加入,类似resource文件,可以有多个语言资源库。

  这个扩展就非常简单了,在上篇文章中只有一个XML文件对应于该XML的.net4.0缓存。如果是多语言包,我们只要建立多个XML文件。以及每个XML文件相对应的缓存机制即可。截图如下:

  Resources文件下的语言包分为为:英文、简体中文、繁体中文。xml格式请阅 MVC2.0本地化(另类解决方案)上。

  如何获取xml内的翻译文本,上篇文章中写的很清晰了。唯一要注意的是为每个xml文件(语言包)建立独立的缓存机制即可。

  三、全局本地化,可以本地化非页面内容,比如为台异步到前台的json数据本地化等

  首先看本文实现步骤的第一点中贴出代码第6行,if (Response.ContentType == "text/html" || Response.ContentType == "application/json") 这里控制了json格式的本地化。说白了以后后台的异步到前台的JSON格式的本地化资源,我们也可以写在XML文件中,只要通过Response.Filter 机制就可以本地化,而无需增加额外的本地化代码。

  具体实现截图如下:

  MVC2.0 JsonResult:

  jQuery调用:

  最终会将“=language is applied”根据不同的国家的用户分别显示成三种语言:

  简体:语言已设定。

  繁体:語言已經設定。

  英文:Language is applied.

  四、程序运行截图

  五、小结

  经过上文的介绍,基本上已完成了本地化另类解决方案。该方案也存在其缺点。但是优点是,可以动态的改变本地化内容。而不需要重新修改源代码,只要修改相应的xml文件内容即可。

  希望本篇文章可以给您带来帮助,如有不足之处欢迎指出,谢谢!

  相关文章:MVC2.0本地化(另类解决方案)<上>

目录
相关文章
|
3月前
|
网络协议 Java Linux
Java 异常 java.net.UnknownHostException 的原因和解决方案
Java 异常 java.net.UnknownHostException 的原因和解决方案
450 0
|
6月前
|
前端开发 Java Go
Spring MVC 中的数据验证技术
Spring MVC 中的数据验证技术
45 0
|
1月前
|
Windows
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
|
3月前
|
XML 前端开发 应用服务中间件
Cannot resolve MVC View解决方案
Cannot resolve MVC View解决方案
117 0
Cannot resolve MVC View解决方案
|
4月前
|
消息中间件 存储 NoSQL
.NET开源的处理分布式事务的解决方案
.NET开源的处理分布式事务的解决方案
|
5月前
|
SQL 监控 NoSQL
一个.Net Core开发的,撑起月6亿PV开源监控解决方案
一个.Net Core开发的,撑起月6亿PV开源监控解决方案
28 0
|
6月前
|
SQL 前端开发 Java
JSP个人信息管理系统myeclipse开发sql数据库BS模式java编程struts2技术mvc框架
JSP 个人信息管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2技术mvc框架,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
56 0
|
6月前
|
SQL 前端开发 Java
JSP网上订餐管理系统myeclipse开发sql数据库BS模式java编程servlet技术mvc框架
JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet技术mvc框架,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
38 0
|
6月前
|
Kubernetes 监控 网络协议
【K8S系列】Weave Net 故障排除的常见问题和解决方案
【K8S系列】Weave Net 故障排除的常见问题和解决方案
80 0
|
12月前
|
缓存 前端开发 JavaScript
采用.Net Core技术框架开发的医院云LIS平台源码,B/S架构
基于B/S架构的医学实验室检验系统源码,整个系统的运行基于WEB层面,只需要在对应的工作台安装一个浏览器软件有外网即可访问。全套系统采用云部署模式,部署一套可支持多家医院检验科共同使用。 采用.Net Core新的技术框架、DEV报表、前端js封装、分布式文件存储、分布式缓存等,支持LIS独立部署,Docker部署等多种方式。