首页 / ASP.NET / ASP.Net MVC多语言
ASP.Net MVC多语言
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.Net MVC多语言,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3441字,纯文字阅读大概需要5分钟。
内容图文
.NET MVC 多语言网站
通过浏览器语言首选项改变MVC的语言,通过浏览器语言选项,修改脚本语言。
一、添加资源文件
1、添加App_GlobalResources文件夹。
2、添加默认的资源文件和对应的语言码资源文件。如zh-cn代表中国大陆,en-us代表美制英语。详情:http://www.lingoes.cn/zh/translator/langcode.htm
3、将资源文件设置成public。新建时默认是internal,这样不能被访问。
右键点击资源文件,在其的属性中将自定义工具(Custom Tool) 从资源代理生成器(GlobalResourceProxyGenerator) 改为 公共文件(PublicResXFileCodeGenerator),然后将生成操作从内容改为嵌入的资源。
4、在web.config中添加语言选项。这样就会根据浏览器语言首选项,判断要使用的资源。
<!-- 根据浏览器的语言首选项,决定语言项 --> < globalization uiCulture ="auto" culture ="auto" enableClientBasedCulture ="true" />
5、在对应的文件中添加键值对。
二、View+Control+Model的普通文字多语言
1、view
2、control
3、model
// [Required(ErrorMessage = "密码不能为空")] [Required(ErrorMessageResourceType = typeof(Resource), ErrorMessageResourceName = "PasswordNotNull")]
三、DisplayName的多语言化。重写DisplayName方法
public class LocalDisplayName : DisplayNameAttribute { private string _defaultName = ""; public Type ResourceType { get; set; }
publicstring ResourceName { get; set; } public LocalDisplayName(string defaultName) { _defaultName = defaultName; } publicoverridestring DisplayName { get { PropertyInfo p = ResourceType.GetProperty(ResourceName); if (p != null) { return p.GetValue(null, null).ToString(); } else { return _defaultName; } } } }
model使用:
[LocalDisplayName("发布时间", ResourceName = "PublishDateTime", ResourceType = typeof(Resource))]
四、脚本多语言
我的方法是在引用一个公用的脚本文件,由该文件通过当前语言引入对应的语言资源脚本。如果当前浏览区语言没有没有对应的资源脚本,就引入默认的资源脚本。
1、通过浏览器语言引入对应的语言资源脚本。
// 将所有的语言资源脚本文件名罗列再次,用&分割 var languageresources = "en-us&zh-cn" //根据当前浏览器语言验证语言脚本是否存在,如果在则加载,则加载默认的zh-cn.jsvar thislanguagere = navigator.language.toLowerCase(); var script = document.getElementsByTagName(‘HEAD‘).item(0); script = document.createElement("script"); script.type = "text/javascript"; var language = languageresources.split("&") var flag = false; for (var item in language) { if (thislanguagere == language[item]) { var flag = true; script.src = "/Scripts/controls/" + thislanguagere + ".js"; document.body.appendChild(script); } } if (flag == false) { script.src = "/Scripts/controls/zh-cn.js"; document.body.appendChild(script); }
2、对应资源脚本写法。设置键值对
3、具体页面脚本使用,引用。需要先引用判断语言脚本。
另附:可修改的多语言,即通过语言超链接修改当前语言项。
1、在Global.asax文件中:
protected void Application_AcquireRequestState(Object sender, EventArgs e) { Authentication.AttachAuthTicketByUrl<WebAuthentication>(Context); //多语言 可切换if (HttpContext.Current.Session != null) { System.Globalization.CultureInfo ci = (System.Globalization.CultureInfo)this.Session["CurrentLanguage"]; if (ci == null) { ci = new System.Globalization.CultureInfo("zh-cn"); this.Session["CurrentLanguage"] = ci; } System.Threading.Thread.CurrentThread.CurrentUICulture = ci; System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(ci.Name); } }
2、在control中:
public ActionResult ChangeLanguage(string language) { Session["CurrentLanguage"] =new System.Globalization.CultureInfo(language); return Redirect("Login"); }
3、在页面中:
@Html.ActionLink("English", "ChangeLanguage", "Account", new { language = "en-us" }, new { @class = "hex-a" }) @Html.ActionLink("Chinese", "ChangeLanguage", "Account", new { language = "zh-cn" }, new { @class = "hex-a" })
参考资料:
.NET MVC 2 多语言网站的实现:
http://blog.163.com/xu_shuhao/blog/static/52577487201092402610920/
关于在mvc4中多语言建站的实例:
http://www.cnblogs.com/Joans/archive/2012/08/16/2640473.html
原文:http://www.cnblogs.com/sanqianjin/p/3804193.html
内容总结
以上是互联网集市为您收集整理的ASP.Net MVC多语言全部内容,希望文章能够帮你解决ASP.Net MVC多语言所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。