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我

相关文章
相关标签/搜索