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我