MVC多语言处理主要分两部分,一部分是Razor视图中的文字标签内容切换, 另外一部分是javascript文件中的文标签内容切换. 这里分这两部分来讲.javascript
View视图中的比较好作, 思路是使用资源文件.html
一, 新建一个资源文件类, 完成以后结构为:java
没有后缀的是默认的主文件, .zh和.en-US是两个语言包. 我这里默认为中文ide
Resource.resx:spa
Resource.zh.resx:3d
Resource.en-US.resx:code
这里必定要记得把这三个资源的修饰符修改成public :orm
到此为止, 咱们的资源包已经创建完了,若是还有其它的字段,往这三个资源文件里添加就能够了.htm
二, MVC View层中的的切换连接代码:blog
@{ string controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue.ToString(); var action = ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString(); } @Html.ActionLink("中文", action, new{Controller = controller, lang = "zh"}) @Html.ActionLink("english",action,new{Controller = controller,lang="en-US"})
个人需求是在登陆页中加入切换连接,每次须要退出切换语言后再登陆.
运行效果为:
public ActionResult Login(string lang) { Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(lang); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; return View(); }
而后在View层中的中文名称就可使用资源文件替换了:
<div class="form-group"> <div class="input-group input-group-lg" style="border-radius: 22px;"> <span class="input-group-addon"> <i class="glyphicon glyphicon-user"></i> </span> <input type="text" class="form-control" id="username" name="UserName" placeholder="@Resources.Resources.UserName" data-content="@Resources.Resources.InputUserName"> </div> </div> <div class="form-group"> <div class="input-group input-group-lg"> <span class="input-group-addon"> <i class="glyphicon glyphicon-lock"></i> </span> <input type="password" class="form-control" id="password" name="Password" placeholder="@Resources.Resources.Pwd" data-content="@Resources.Resources.InputPwd"> </div> </div>
切换效果以下:
三, JS文件的多语言切换
对于js文件我目前使用的是建立两个语言的js文件,
使用方法为:
在cshtml里引用js文件时,判断一下当前的语言环境:
@{ if (Thread.CurrentThread.CurrentUICulture.Name == "zh") { <script src="~/Scripts/view/supplierList.js"></script> } else { <script src="~/Scripts/view/supplierList-EN.js"></script> } }
至此为止项目中全部须要切换语言的地方均可以切换了. 有不懂的M我