参考自: https://www.cnblogs.com/zoro-zero/p/6674442.html
(如有侵权还请联系本人删除)
//######
在Filters文件夹(当然了,在哪里都可以, 你高兴就好)添加类LocalizationAttribute
public class LocalizationAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var cultureRouteValue = filterContext.RouteData.Values["culture"]; var cultureCookieValue = filterContext.HttpContext.Request.Cookies["CULTURE"]; System.Diagnostics.Debug.WriteLine($">>>>>>{cultureCookieValue}|{cultureRouteValue}"); if (cultureRouteValue != null && !string.IsNullOrWhiteSpace(cultureRouteValue.ToString())) { Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureRouteValue.ToString()); if (cultureCookieValue?.ToString() != cultureRouteValue.ToString()) { filterContext.HttpContext.Response.SetCookie( new HttpCookie("CULTURE", cultureRouteValue.ToString()) { Expires = DateTime.Now.AddYears(1) } ); } filterContext.RouteData.Values["culture"] = cultureRouteValue.ToString(); } else if (cultureCookieValue != null) { Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultureCookieValue.Value); filterContext.RouteData.Values["culture"] = cultureCookieValue.Value; } else { Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(filterContext.HttpContext.Request.UserLanguages[0]); filterContext.RouteData.Values["culture"] = filterContext.HttpContext.Request.UserLanguages[0]; }
base.OnActionExecuting(filterContext); } }
//######
在RouteConfig.cs配置如下路由(你也可以根据自己爱好配置)
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( name:"Localization", url:"{culture}/{controller}/{action}/{id}", defaults: new { culture="zh-CN", controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new { culture = "zh-CN|en-US" }//添加约束, 添加其它语言记得来这里添加"|culture" );
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
//######
在你的MC(Models class/Controllers class)中使用Attribute, 像这样:
[Localization] public class HomeController : Controller { public ActionResult Index() { return View(); }
public ActionResult About() { ViewBag.Message = "Your application description page.";
return View(); }
public ActionResult Contact() { ViewBag.Message = "Your contact page.";
return View(); } }
//######
其它不用我多说了吧(Resources.xxxxx.xxxx / @Resources.xxxxx.xxxx)?? .net framework比.net core多语言好实现一丢丢, 不知道以后.net core在多语言上会不会更方便一点