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

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

这里贴一下参考地址: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>

效果如下:


最新文章

  1. [LeetCode] String to Integer (atoi) 字符串转为整数
  2. kernel/info.c
  3. 你知道C#中的Lambda表达式的演化过程吗
  4. MongoDB的介绍和使用场景(1)
  5. Sublime Text 安装sftp插件
  6. myloader原理0
  7. 谈谈css中的before和after
  8. nyoj 96 一个水题目
  9. 微信公众号支付(三):页面调用微信支付JS并完成支付
  10. java学习之反射机制
  11. Dynamic系列--Dynamic 与反序列化
  12. 模块化开发AraeRegistration
  13. 人生苦短,我用Python(1)
  14. Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
  15. python--使用双向队列结构检查回文
  16. mac上mysql8.0以tar.gz方式手动安装
  17. C# CEF 封装UserControl
  18. install pymongo,mysql
  19. 控件之ReleLayout属性
  20. Android自定义视图一:扩展现有的视图,添加新的XML属性

热门文章

  1. GIT 分支管理:多人协作
  2. C#以管理员用户打开某个程序
  3. php中按值传递和按引用传递的一个问题
  4. Foreach循环输出索引值
  5. [Oracle]发生 ora-06502 RMAN 在对 catalog DB 同期时出错的调查方法
  6. 面试4——java进程和线程相关知识
  7. ARM-GPIO
  8. 数组-在Shell脚本中的基本使用介绍
  9. MySQL高可用架构-MHA环境部署记录
  10. 安卓开发helloworld