ASP.net MVC 多語言處理

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"})

個人需求是在登陸頁中加入切換連接,每次須要退出切換語言後再登陸.

運行效果爲:

Login的Controller代碼爲:
    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>

切換效果以下:

使用Razor模版的均可以直接使用資源文件來達到切換語言的目的, 而且寫在cshtml中的js代碼也能夠直接引用資源文件 . 可是對於單純的js文件的切換在這裏就失去效果了.

三, 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我

相關文章
相關標籤/搜索