ASP.NET MVC 多语言开发简单案例
首先,新建一个空的MVC项目,增加一个名叫Language的文件夹用于存放资源文件,如下图所示:
在Language文件夹中,增加两个资源文件,分别用于存储中文和英文,如下图所示:
如何添加资源文件?右击Home文件夹,先选择“添加” ,再选择“类”,如下图所示:
然后找到资源文件一栏,点击选择即可,如下图所示:
编辑资源文件,输入对应对应字段对照表,在“访问修饰符”一栏,选择“public”,不然无法在其他地方引用资源文件,如下图所示:
在前端页面增加语言选择功能,并将需要多语言切换的字段用资源文件替换,HTML代码如下:
<div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li>@Html.ActionLink(Language.index, "Index", "Home")</li>@*替换Index*@<li>@Html.ActionLink(Language.about, "About", "Home")</li>@*替换About*@<li>@Html.ActionLink(Language.contact, "Contact", "Home")</li>@*替换Contact*@</ul><ul class="nav navbar-nav navbar-right"><li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle" href="#"><i class="fa fa-globe fa-lg fa-fw"></i><span>简体中文</span><b class="caret"></b></a><ul role="menu" class="dropdown-menu language-list" style="width:100px;"><li><a href="#" lang="zh-CN">简体中文</a></li><li class="divider"></li><li><a href="#" lang="en">English</a></li></ul></li></ul>
</div>
当用户切换时,触发Action,JS代码如下:
<script type="text/javascript">$(document).ready(function () {//切换语言时设置MVC语言环境、设置语言全局变量$(".language-list a").click(function () {alert("hello")setLanguage($(this).attr("lang"));})function setLanguage(language) {$.ajax({url: "/Home/setGlobalLanguage?lan=" + language,type: "GET",cache: false,success: function () {location.reload();}})}})
</script>
触发Action后将语言设置存入session,Control中的代码如下:
public class HomeController : Controller{public void setGlobalLanguage(){string language = Request.QueryString["lan"];HttpContext.Session["language_id"] = language;}}
增加过滤器,用于检测和切换多语言的设置,代码如下:
public class LocalizationAttribute: ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){string browserLanguage = filterContext.HttpContext.Request.Headers["Accept-Language"].Split(',')[0];if (browserLanguage.ToLower().Contains("en")){browserLanguage = "en";}else if (browserLanguage.ToLower().Contains("cn")){browserLanguage = "zh-CN";}else{browserLanguage = "zh-CN";}string sessionLanguage = filterContext.HttpContext.Session["language_id"] != null ? filterContext.HttpContext.Session["language_id"].ToString() : string.Empty;//如果浏览器语言与session中语言不一致,以session语言为基准,设置语言环境if (browserLanguage != sessionLanguage){string language = string.Empty;//第一次访问,session中无语言全局变量时,用览器语言设置语言环境if (filterContext.HttpContext.Session["language_id"] == null){language = browserLanguage;filterContext.HttpContext.Session["language_id"] = browserLanguage;}//session中有语言全局变量时,用session中语言全局变量设置语言环境else{language = filterContext.HttpContext.Session["language_id"].ToString();}//当前线程的语言采用哪种语言(比如zh,en等)Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);//决定各种数据类型是何组织,如数字与日期Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language);}}}
最后一步,在App_Start的FilterConfig文件中注册此过滤器,如下图所示:
运行程序,默认是中文设置,如下图所示:
点击选择英文,查看是否切换语言成功:
至此为止,一个简单的多语言开发就好了,我还是菜鸟,如果有更好的方法或者建议,请赐教 。
ASP.NET MVC 多语言开发简单案例相关推荐
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...
- 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发
日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...
- 在ASP.NET MVC应用中开发插件框架(中英对照)
[原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I'v ...
- (转载)ASP.NET MVC多语言切换
流程图 1.创建语言文件 创建App_GlobalResources文件夹 创建Language文件夹 创建资源文件 这些操作做完后,目录结构应该是以下这样的 我们打开每个资源文件,在里面添加一条T ...
- [翻译-ASP.NET MVC]Contact Manager开发之旅迭代3 - 验证表单
本翻译系列为asp.net mvc官方实例教程.在这个系列中,Stephen Walther将演示如何通过ASP.NET MVC framework结合单元测试.TDD.Ajax.软件设计原则及设计模 ...
- Asp.net MVC 多语言问题的解决方案
上篇文章我们就Asp.net MVC权限问题做了一个较为全面的解决方案,这篇我们就多语言问题进行探讨. 全球化 在IT行业,具有全球化和本地化特性的计算机软件,可以适应不同的语言,地区差异和目标市场的 ...
- 【译】使用自定义ViewHelper来简化Asp.net MVC view的开发------part1
从开发者的角度来看,创建Asp.net MVC的View是一件很爽的事,因为你可以精确控制最终生成的HTML.具有讽刺意味的是不得不写出每一行HTML代码同时也是Asp.net MVC的View中让人 ...
- [.NET][ASP.NET MVC 5 网站开发之美]书籍内容介绍及pdf下载
ASP.NET MVC是微软Web开发平台中最重要的一块拼图,其架构特性更适合用来开发大型的Web应用程序,且ASP.NET MVC的开发方式也越来越受到重视,因此学习MVC已是刻不容缓. 由demo ...
- go语言服务器代码,Go语言开发简单web服务器
欢迎,来自IP地址为:182.103.254.107 的朋友 Go语言由于其方便的并发通信机制以及强大的网络支持,常常被用于服务器软件的开发.本文将示例使用Go语言来开发简单的Web服务器. HTTP ...
最新文章
- 欧拉公式cos_谈谈欧拉公式与复指数信号
- uva 12545——Bits Equalizer
- python编写脚本,删除固定用户下的所有表
- 容器编排技术 -- Kubernetes kubectl patch 命令详解
- 【WinForm】线程中向listview添加数据
- Cilium提供并透明地保护应用程序工作负载之间的网络连接和负载平衡:什么是eBPF和XDP?
- ACCESS中执行sql语句
- C#关键字operator
- ORB SLAM 2 demo 复现
- 扫雷——Windows上的经典小游戏
- 使用频谱仪测试信号抗干扰实验
- 阿里云香港服务器解析后域名无法访问
- 根据屏幕大小动态设置字体rem
- 读科研经费陷“无底黑洞”有感
- qml 应用程序图标设置和打包——qml
- 微信机器人网页版接口详解
- Web兼容性测试的要点
- VIDEO GOOGLE
- ERP仓库管理系统需求
- 修改d2-admin
热门文章
- jenkins+svn+maven+ssh 部署配置详细记录
- 工业智能相机与基于PC的机器视觉的区别比较
- 专家呼吁建安全漏洞信息共享机制并强化管控
- FreeSWITCH第三方库(视频)的简单介绍(二)
- CMake入门(二)
- Effective C# 原则48:了解更多的工具和资源(译)
- matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数
- 计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...
- label qt 自动换行_QT编写一个登录界面
- nextfloat_Java Random nextFloat()方法与示例