MVC 多语言
2024-10-13 08:18:32
最近项目需要用到多语言。
研究了一下,也参考了很多技术文章。
这里贴一下参考地址: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>
效果如下:
最新文章
- [LeetCode] String to Integer (atoi) 字符串转为整数
- kernel/info.c
- 你知道C#中的Lambda表达式的演化过程吗
- MongoDB的介绍和使用场景(1)
- Sublime Text 安装sftp插件
- myloader原理0
- 谈谈css中的before和after
- nyoj 96 一个水题目
- 微信公众号支付(三):页面调用微信支付JS并完成支付
- java学习之反射机制
- Dynamic系列--Dynamic 与反序列化
- 模块化开发AraeRegistration
- 人生苦短,我用Python(1)
- Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
- python--使用双向队列结构检查回文
- mac上mysql8.0以tar.gz方式手动安装
- C# CEF 封装UserControl
- install pymongo,mysql
- 控件之ReleLayout属性
- Android自定义视图一:扩展现有的视图,添加新的XML属性