• MVC 多语言


    最近项目需要用到多语言。

    研究了一下,也参考了很多技术文章。

    这里贴一下参考地址:http://www.cnblogs.com/unintersky/p/3969612.html


    主要步骤我这里简述一下:

    一:   MVC项目中 新增  Lang文件夹

    文件夹中添加 CultureAwareHttpModule.cs类

    具体代码:

    public class CultureAwareHttpModule : IHttpModule
        {
            private CultureInfo currentCulture;
            private CultureInfo currentUICulture;
    
            public void Dispose()
            {//throw new NotImplementedException();
            }
    
            public void Init(HttpApplication context)
            {
                //throw new NotImplementedException();
                context.BeginRequest += SetCurrentCulture;
                context.EndRequest += RecoverCulture;
            }
    
            private void SetCurrentCulture(object sender, EventArgs args)
            {
                currentCulture = Thread.CurrentThread.CurrentCulture;
                currentUICulture = Thread.CurrentThread.CurrentUICulture;
                HttpContextBase contextWrapper = new HttpContextWrapper(HttpContext.Current);
                RouteData routeData = RouteTable.Routes.GetRouteData(contextWrapper);
                if (routeData == null)
                {
                    return;
                }
                object culture;
                if (routeData.Values.TryGetValue("lang", out culture))
                {
                    try
                    {
                        Thread.CurrentThread.CurrentCulture = new CultureInfo(culture.ToString());
                        Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture.ToString());
                    }
                    catch
                    { }
                }
            }
            private void RecoverCulture(object sender, EventArgs args)
            {
                Thread.CurrentThread.CurrentCulture = currentCulture;
                Thread.CurrentThread.CurrentUICulture = currentUICulture;
            }
        }

    继续添加

    增加3个资源文件:

    Language.resx 默认语言



    Language.zh-cn.resx 中文



    Language.en-us.resx 英文





    二:修改 路由配置

    public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapRoute(
                  "Globalization",
                  "{lang}/{controller}/{action}/{id}",
                  new { lang = "zh", controller = "Login", action = "Login", id = UrlParameter.Optional }, // 参数默认值
                  new { lang = "^[a-zA-Z]{2}(-[a-zA-Z]{2})?$" }    //参数约束
                );
    
                //routes.MapRoute(
                //    name: "Default",
                //    url: "{controller}/{action}/{id}",
                //    defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional }
                //);
            }
        }


    三:  修改web.config配置文件

    命名空间别打错了。

    <system.webServer>
        <modules>
          <add name="CultureAwareHttpModule" type="TestMVC.Lang.CultureAwareHttpModule" />
        </modules>
    </system.webServer>

    然后我们创建一个 view

    代码如下:

    @using TestMVC.Lang
    @{
        ViewBag.Title = "Test";
    }
    
    <div>
    @{
                    string controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue.ToString();
                    string action = ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString();
                    
                    System.Globalization.CultureInfo info = System.Threading.Thread.CurrentThread.CurrentCulture;
                }
    
                @Html.ActionLink("中文", action, new { Controller = controller, lang = "zh-CN" }, new { @class = "disib", @id = "aCN" })
                @Html.ActionLink("English", action, new { Controller = controller, lang = "en-US" }, new { @class = "disib", @id = "aUS" })
    
        <div style="color:red;">
        @Language.Test
            </div>
    </div>


    效果如下:




  • 相关阅读:
    Eclipse+Pydev +Django搭建开发环境时容易出错的几点
    小白对于数据库的初步理解
    个人PC搭建自己的虚拟服务器
    xss 学习(一)
    python爬虫学习(一)
    php常用函数
    sqlmap基础命令
    metinfo 5.3.19 管理员密码重置
    nmap常用命令
    Web安全开发手册
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779908.html
Copyright © 2020-2023  润新知