在mvc4中多语言建站的实例

news/2024/5/9 18:09:29/文章来源:https://blog.csdn.net/weixin_30268071/article/details/98769313

环境:vs2012 asp.net mvc4.

实现方式:resource 资源文件,根据路由规则中Lang参数来判断载入哪种语言方式

在网上找到了相关资料,顺便自己做了个练习,新建工程之类的步骤就免了,该注意的地方说明下,记着方便下次使用。

1:添加资源文件,记得设置资源文件的访问模式为public,不然默认是Internal,外面会访问不到:

 

 2:添加路由规则,记得加在Default路由规则的前面,否则新规则没用,详细原因请参考这篇文章

复制代码
 1 routes.Add(new Route(
 2                 "{lang}/{controller}/{action}/{id}",  3 new RouteValueDictionary(new {  4 lang = "en-US",//默认为E文  5 controller = "Account",  6 action = "Logon",  7 id = UrlParameter.Optional  8  }),  9 new MultiLangRouteHandler()//这个类主要是通过GetHttpHandler来取得当前Lang的值 10 ));
复制代码

 

复制代码
 1 public class MultiLangRouteHandler : MvcRouteHandler {
 2         protected override IHttpHandler GetHttpHandler(RequestContext requestContext) {  3 string lang = requestContext.RouteData.Values["lang"].ToString();  4  5 //Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);  6 Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);  7  8 //return new MvcHandler(requestContext);  9 return base.GetHttpHandler(requestContext); 10  } 11 }
复制代码

有关代码中的CurrentUICulture可以参考我上一篇文章,里面有详细解释。

 3:中英文切换入口。

复制代码
1  <div>
2  @{ 3  string controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue.ToString(); 4  string action = ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString(); 5  //string lang = ViewContext.Controller.ValueProvider.GetValue("lang").RawValue.ToString(); 6  } 7  @Html.ActionLink("中文", action, new { Controller = controller, lang = "zh-CN" }, new {@class="btn-a" }) 8  @Html.ActionLink("English", action, new { Controller = controller, lang = "en-US" }, new {@class="btn-a" }) 9 </div>
复制代码

4:界面上普通文字的多语言

其实我有按照上面的那篇文章写测试程序,但是写死的资源文件并没有根据中英文来切换,我都不知道是不是哪里有问题,闷~,后来mvc群里面的朋友(无情水)介绍另外一篇文章,我参照着改写了下,在此说声ths...

复制代码
public static class LangHelper {//界面普通文字的多语言public static string GetLangbyKey(this HtmlHelper htmlhelper, string key) {Type resourceType = (Thread.CurrentThread.CurrentUICulture.Name == "en-US") ? typeof(Resources.en_US) : typeof(Resources.zh_CN);PropertyInfo p = resourceType.GetProperty(key);if (p != null)return p.GetValue(null, null).ToString();elsereturn "undefined";}//js定义多语言弹出框public static string LangOutJsVar(this HtmlHelper htmlhelper, string key) {Type resourceType = (Thread.CurrentThread.CurrentUICulture.Name == "en-US") ? typeof(Resources.en_US) : typeof(Resources.zh_CN);PropertyInfo p = resourceType.GetProperty(key);if (p != null)return string.Format("var {0} = '{1}'", key, p.GetValue(null, null).ToString());elsereturn string.Format("var {0} = '{1}'", key, "undefined");}}
复制代码

View页面调用直接用函数的方式。如:<h2>@Html.GetLangbyKey("LogonDisplay")</h2>

5:DisplayName 的多语言化

重新定义一LocalDisplayName属性,他继承自DisplayNameAttribute

复制代码
public class LocalDisplayName : DisplayNameAttribute {private string _defaultName = "";public Type ResourceType {get { return (Thread.CurrentThread.CurrentUICulture.Name == "en-US") ? typeof(Resources.en_US) : typeof(Resources.zh_CN); }}public string ResourceName {get;set;}public LocalDisplayName(string defaultName) {_defaultName = defaultName;}public override string DisplayName {get {PropertyInfo p = ResourceType.GetProperty(ResourceName);if (p != null)return p.GetValue(null, null).ToString();elsereturn _defaultName;}}}
复制代码

在Model类上就把Display属性换为LocalDisplayName

复制代码
public class Account {[Required][LocalDisplayName("user name", ResourceName = "UserDisplay")]public string UserName { get; set; }[Required][LocalDisplayName("password", ResourceName = "PwdDisplay")]public string Pwd { get; set; }[Required][Compare("Pwd",ErrorMessageResourceName="ConfirmPwdErrorDisplay")][LocalDisplayName("confirm password", ResourceName = "ConfirmPwdDisplay")]public string ConfirmPwd { get; set; }[Required][LocalDisplayName("remember", ResourceName = "RemDisplay")]public bool Rememberme { get; set; }}
复制代码

调用方式:<div>@Html.LabelFor(m => m.UserName)</div>

 

实现效果:

 

大概这样基本的就实现了, 有个Errormessage的还没整好,有空再来写。有不对的地方大家给予指正,谢谢!

参考文档:

http://www.cnblogs.com/codehunter008/archive/2008/09/01/1281565.html

http://www.cnblogs.com/lionking/articles/1894277.html

如果是要写数据库的文字,应该怎么实现多语言呢?有什么好的方式,请教下。

下载链接: 点击下载

 

來源:http://www.cnblogs.com/Joans/archive/2012/08/16/2640473.html

转载于:https://www.cnblogs.com/xuhongfei/p/5220709.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_742333.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

台北到淡水版Firefox新标签页myNewTab网站链接修改

台北到淡水版的Firefox用的新标签页&#xff08;也叫快捷导航、九宫格等&#xff09;是myNewTab&#xff0c;如何修改里面的链接呢&#xff1f;如下&#xff1a; 1、点击右上角的”定位“​ 2、将会打开该文件的所在位置&#xff0c;例如&#xff1a;D:\应用程序\火狐浏览器\Pr…

如何在 ASP.NET 应用程序中实现模拟用户身份(在ASP.NET中以管理员身份运行网站)...

前言 在实际的项目开发中&#xff0c;我们可能会需要调用一些非托管程序&#xff0c;而有些非托管程序需要有更高的身份权限才能正确执行。本文介绍了如何让IIS承载的ASP.NET网站以特定的账户执行&#xff0c;比如Administrator。 概要 本文介绍了在 ASP.NET 应用程序中实现模拟…

浅谈Web网站的架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和管理阶段一、单机构建网站 网站…

varnish加速web网站

简介 Varnish可以有效降低web服务器的负载&#xff0c;提升访问速度。根据官方的说法&#xff0c;Varnish是一个cache型的HTTP反向代理。 按照HTTP协议的处理过程&#xff0c;web服务器接受请求并且返回处理结果&#xff0c;理想情况下服务器要在不做额外处理的情况下&#xff…

手把手教你从零开始用WordPress建站

最近&#xff0c;很多人来问我&#xff0c;怎么做一个实际项目&#xff1f;其实这个说简单也简单&#xff0c;说复杂也复杂&#xff0c;但是不管怎么样&#xff0c;从今天开始&#xff0c;一步一步的走&#xff0c;你肯定可以做一个属于自己的站点。 之前我也在群里说了&#x…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换在您申请了云耀云服务器后&#xff0c;可以通过管理控制台查看和管理您的云耀云服务器。本节介绍如何查看云耀云服务器的详细配置&#xff0c;包括云耀云服务器名称、镜像信息、系统盘、数据盘、安全组、弹性公网IP等信息。登录管理控制台。单击…

websocket用ip不能访问_为什么直接用IP不能访问知乎的网站,而百度却可以?

打开cmd&#xff0c;输入ping baidu.com&#xff0c;然后把得到的ip地址111.13.101.208输入浏览器的地址栏&#xff0c;可以打开百度。但我重复操作ping zhihu.com&#xff0c;得到ip地址54.223.189.245&#xff0c;输入地址栏&#xff0c;返回的却是405 not allowed。想请教一…

网站模板怎么和虚拟服务器,模板站用虚拟主机还是用服务器

模板站用虚拟主机还是用服务器 内容精选换一换本章指导用户使用华为云市场镜像“PHP运行环境AMH4.2面板PHP CentOS6.8”部署AMH环境。AMH是一套通过Web控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。弹性云服务器创建成功后&#xff0c;还需要配置安全组&#x…

aix如何查看日志策略_企业网站排名,SEO诊断,网站日志分析经常忽略的6个细节!...

在做SEO的过程中&#xff0c;我们总是会遇到各种莫名其妙的问题&#xff0c;比如&#xff1a;某一天你的网站突然出现收录缓慢的问题&#xff0c;而平时都是秒收录。 最开始我们在做审查的时候&#xff0c;总是在思考&#xff1a; ①是否搜索引擎算法在调整。 ②是否自己的内容…

pHP分析网站日志,通过用数据挖掘技术来分析Web网站日志?

Web日志挖掘是指采用数据挖掘技术&#xff0c;对站点用户访问Web服务器过程中产生的日志数据进行分析处理&#xff0c;从而发现Web用户的访问模式和兴趣爱好等&#xff0c;这些信息对站点建设潜在有用的可理解的未知信息和知识&#xff0c;用于分析站点的被访问情况&#xff0c…

如何进行web端安全性测试_如何使用LoadRunner进行Web网站性能测试?

loadrunner压力测试原理本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点。其中固定行为在loadrunner中是通过录制脚本定义的&#xff0c;多个用户同时访问的策略是在loadrunner的场景中定义的loadrunner压测思路通过loadrunner进行压力测试web应用的主要思路分两…

一个好用的在线微信二维码设计网站

帮一个朋友设计他的微信公众号二维码&#xff0c;本来打算用ps画图&#xff0c;想到之前公众号配图有在线网站&#xff0c;简单方便&#xff0c;类似于这类的工具应该会有很多&#xff0c;在百度上查找体验了一下&#xff0c;终于找到了一款可以快速设计文章末尾二维码的在线网…

计算机找不到was服务器,win7系统搭建网站提示计算机“.”上没有找到wAs服务的图文步骤?...

win7系统搭建网站提示计算机“.”上没有找到wAs服务的图文步骤??在win7系统中&#xff0c;很多用户都会在电脑中使用iis搭建网站&#xff0c;然而在安装完iis&#xff0c;添加了网站之后&#xff0c;网站图标上有一个红叉&#xff0c;单击右键&#xff0c;启动&#xff0c;会…

seo2 php什么意思,url对seo最友好的是

对于静态网站来说&#xff0c;一定程度上来说url可以是每个页面唯一的"身份标志"&#xff0c;对于搜索引擎优化(SEO)来说网站url设置是否合理&#xff0c;页影响着最终的效果&#xff0c;达到事半功倍的效果&#xff0c;今天我根据以往经验来说什么样网站url对于百度…

表格标题浮动html,HTML和CSS 入门系列(二):文字、表单、表格、浮动、定位、框架布局、SEO...

一、文字1.1 属性1.2 字体样式&#xff1a;font-family1.3 字体大小&#xff1a;font-size1.4 字体粗细&#xff1a;font-weight1.5 字体风格&#xff1a;font-style1.6 行高&#xff1a;line-height二、表单点击文字自动关联&#xff1a;三、表格四、浮动4.1 清除浮动.d-paren…

php用sublimetext写网站,sublime text3 phpfmt插件使用

sublime text3 phpfmt插件使用通过包安装管理器安装phpfmt插件.在sublime界面按快捷键 ctrlshiftP选择并选择: Install Package等待片刻输入并选择 phpfmt配置 (Windows)打开并编辑配置文件 ( %AppData%\Sublime Text\Packages\phpfmt\phpfmt.sublime-settings )(建议编辑插件的…

Nginx详解反向代理、负载均衡、LNMP架构上线动态网站

转载于:https://www.cnblogs.com/WIU1905/p/11100752.html

更换服务器对SEO不修改内容,六个步骤搞定更换网站服务器对SEO没影响的方法

谢谢非你不爱的文章投稿近期又许多网站站长盆友发帖子资询说要拆换网址的网络服务器了&#xff0c;可是怕操作失误造成 网址被K&#xff0c;由于早已有许多的网站站长盆友来意见反馈&#xff0c;说自身由于换了IP造成 网址被K了。那麼今日百度搜索百度站长工具新手夏令营论坛版…

java分页sql语句_「sql分页」sql语句 实现分页 - seo实验室

sql分页sql语句 实现分页/*分页思想&#xff1a;比如你要每页获取10条记录&#xff0c;当你显示第5页的记录时&#xff0c;也就是选取第40条至50条的记录.首先应该从所有的记录集中选取50条记录&#xff0c;同时进行倒序,再从中选10条&#xff0c;就完成工作了。下面是一个具体…

花瓣网服务器维护一个月,花瓣网维护网站推荐-只需要这一个网站就够了

推荐一款非常实用的设计师导航&#xff0c;可以说是自己目前用过最好用的设计师导航。里面精选推荐了大量优秀网站&#xff0c;包含高清图库、灵感创意、素材资源、摄影美图、教程文章、设计工具、绘画涂鸦、设计社区、字体下载、图标下载、前端学习、等等众多精选优质站点。目…