8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

分享以ASP.NET MVC 3一步一步建置一个多国语言系统的方式

1.从Resource File开始

2.利用String Extension Method来做多国语言

3.利用HtmlHelper Extension Method来将输出多国语言

4.利用自定的Attribute来输入多国语言的验证消息

5.Javascript多国语言的处理

前言

分享以ASP.NET MVC 3一步一步建置一个多国语言系统的方式。

1.从Resource File开始

2.利用String Extension Method来做多国语言

3.利用HtmlHelper Extension Method来将输出多国语言

4.利用自定的Attribute来输入多国语言的验证消息

5.Javascript多国语言的处理

环境

ASP.NET MVC3, VS2010 C#, .NET 4.0

实践

一开始先建立一个“ASP.NET MVC 3 Web 应用程序” 项目,取名Mvci18n,然后选择空白的ASP.NET MVC项目,检视引擎选“Razor”。

1.从Resource File开始

建立一个Resource1.resx、Resource1.en-US.resx及Controller Home、View Index

public ActionResult Index()

{

ViewBag.TEST = App_GlobalResources.Resource1.TEST;

return View();

}

@{

ViewBag.Title = "Index";

Layout = "~/Views/Shared/_Layout.cshtml";

}

@ViewBag.TEST

备注,如果您从Resource1无法选出TEST的话,那是因为Resource档中自订工具是设定成“GlobalResourceProxyGenerator”所导致的,所以请将它清空,然后重新开启Resource档,并设定“存取修饰词”成“Public”,之后在Controller中就可以选到了!

为了要方便测试多国语言,将web.config中设定成由Client决定,在system.web区段中加入globalization设定,如下,

所以当IE的语言设成了英文,就会显示英文消息,设成中文,就会显示中文。

2.利用String Extension Method来做多国语言

App_GlobalResources.Resource1.TEST感觉不是很直觉,可以利用String Extension Method来做多国语言,变成"TEST".Toi18n(),有直觉一点吗? 所以我们建立一个StringExtensions Class Code如下,namespace Mvci18n.Extensions

{

public static class StringExtensions

{

//依语系产生i18n

public static string Toi18n(this string value)

{

return App_GlobalResources.Resource1.ResourceManager.GetString(value);

}

public static string CultureName(this string value)

{

return System.Threading.Thread.CurrentThread.CurrentUICulture.Name;

}

public static string Toi18n(this string nameSpace, string value)

{

string resKey = (string.IsNullOrEmpty(nameSpace) ? string.Empty : nameSpace + ".") + value;

return App_GlobalResources.Resource1.ResourceManager.GetString(resKey);

}

}

}

那原本Controller的Code就可改成public ActionResult Index()

{

//ViewBag.TEST = App_GlobalResources.Resource1.TEST;

ViewBag.TEST = "TEST".Toi18n();

return View();

}

3.利用HtmlHelper Extension Method来将输出多国语言

接下来,建立新增画面,所以在Model中新增Product Class,HomeController中新增Create Method,并建立View设定Model为Product,如下,

Product.cs,namespace Mvci18n.Models

{

public class Product

{

[Required(ErrorMessage="Please enter product name")]

public string Name { get; set; }

[Required(ErrorMessage = "Please enter price")]

[Range(0.01, double.MaxValue, ErrorMessage="Please enter a positive price")]

public decimal Price { get; set; }

}

}

HomeController.cs,[HttpGet]

public ViewResult Create()

{

return View("Create", new Product());

}

Create.cshtml,@model Mvci18n.Models.Product

@using Mvci18n.Extensions

@{

ViewBag.Title = "Create".Toi18n();

Layout = "~/Views/Shared/_Layout.cshtml";

}

@ViewBag.Title

@using (Html.BeginForm())

{

Product Name:@Html.TextBoxFor(x=>x.Name)

Product Price:@Html.TextBoxFor(x => x.Price)

}

执行http://localhost:6754/home/create,画面上的Product Name、Product Price及SubmitProduct也需要多国语言,所以也可以透过string的Toi18n Method取得。

但是要在View显示出来,还要透过HtmlHelper Extension Method,如下,namespace Mvci18n.Extensions

{

public static class HtmlHelperExtensions

{

/// /// 产生一个字符串

///

///

///

///

/// /// Example:@Html.OutputText("Language".Toi18n())

///

public static MvcHtmlString OutputText(this HtmlHelper helper, string text)

{

return new MvcHtmlString(text);

}

}

}

再改View修改( [email protected]("ProductName".Toi18n()) )成如下,@using (Html.BeginForm())

{

@Html.OutputText("ProductName".Toi18n()):@Html.TextBoxFor(x => x.Name)

@Html.OutputText("ProductPrice".Toi18n()):@Html.TextBoxFor(x => x.Price)

}

4.利用自定的Attribute来输入多国语言的验证消息

再来就是为加入字段验证机制,所以在Shared_Layout.cshtml中加入验证的JS

@using (Html.BeginForm())

{

@Html.ValidationSummary()

@Html.OutputText("ProductName".Toi18n()):@Html.TextBoxFor(x => x.Name)

@Html.OutputText("ProductPrice".Toi18n()):@Html.TextBoxFor(x => x.Price)

}

执行http://localhost:6754/home/create,在画面上如果没有输入产品名称及价格,就会出现验证错误的消息,

所以,验证消息也需要处理多国语言,这里就继承DisplayNameAttribute、RangeAttribute来处理验证消息的多国语言,建立i18nDisplayNameAttr及i18nRegAttr,如下,using System.ComponentModel;

using System.ComponentModel.DataAnnotations;

using Mvci18n.Extensions;

namespace Mvci18n.CustomAttrs

{

public class i18nDisplayNameAttr : DisplayNameAttribute

{

public i18nDisplayNameAttr(string displayName)

{

DisplayNameValue = displayName.Toi18n();

}

}

public class i18nRegAttr : RangeAttribute

{

public i18nRegAttr(double min, double max)

: base(min, max)

{

}

public override string FormatErrorMessage(string name)

{

return string.Format(ErrorMessage.Toi18n(), new object[] { name });

}

}

}

Model中的Product属性则使用我们建立的自定属性,如下,namespace Mvci18n.Models

{

public class Product

{

[Required, i18nDisplayNameAttr("ProductName")]

public string Name { get; set; }

[Required, i18nDisplayNameAttr("ProductPrice")]

[i18nRegAttr(0.1, double.MaxValue, ErrorMessage = "ProductPriceRangeChk")]

public decimal Price { get; set; }

}

}

再执行程序一次,就可以看到验证消息也随语系而改变了!

5.Javascript多国语言的处理

JS的处理的话,可依不同的语系建立JS档,然后依不同的语系加入不同的JS档,这里我们在Scripts下再建一个locale的目录,里面放lang-en-US.js,lang-zh-TW.js等语系Resource档。

+ ".js")" type="text/javascript">

lang-en-US.js内容如下,var locale = {

confirmSubmit: "Are you sure submit?"

,ShowMsg : "Show a JS Message!"

};

lang-zh-TW.js内容如下,var locale = {

confirmSubmit: "请问您确定送出吗?"

,ShowMsg : "显示JS消息!"

};

所以在View使用时,就可以直接使用locale.ShowMsg,如下,

结论

多国语言只是个开始,希望对大家有帮助,也希望有大家有其他的方法也能提出来讨论,谢谢!

另外画面的Layout,各时区的处理也是多国语言系统要考量的事!

范例

Mvci18n.zip

html如何支持多国语言,[MVC]建置多国语言系统之路相关推荐

  1. c语言自建一个窗口,C语言 手把手教你写个自定义printf

    一个简单的例子 __printf (const char *format, ...) { va_list arg; int done; va_start (arg, format); done = v ...

  2. c语言内容逆置程序设计,C语言程序设计练习题含程序及参考答案.docx

    C语言练习题 (所提供的源程序均采用自定义函数方式解决,如不采 用函数方式,也可直接在main函数中借鉴该思想编程, 因时间有限,所有程序未能一一-验证,仅供参考使用) 1定义一个函数intfun(i ...

  3. c语言io口置1,AVR_C语言编程的小技巧-IO口置位.doc

    AVR C语言编程的小技巧-IO口置位 给单片机IO口置位是编程用的比较多的操作,这是我在学习C语言编程中的一点小小心得,希望大家觉得有用!AVR 单片机的IO口是标准的双向端口,首先要设置IO口的状 ...

  4. 九宫格C语言递归程序,[置顶] C语言递归实现N宫格(九宫格)源码

    刚开始做九宫格的时候,能想到的就是几个for循环,很清楚很简单,同样也比较的低级,了解递归的魅力后,在高人的指点下,原来也可以这样的实现,写到这时,让我想到了当年教我们的老师,thanx,好代码,我还 ...

  5. ASP.NET MVC 3 Razor 多国语言参考解决方案 补充四

    ASP.NET MVC 3 Razor 多国语言参考解决方案 补充四 转自 http://www.cnblogs.com/think8848/archive/2011/07/05/2098464.ht ...

  6. oracle支持几国语言,明白ORACLE的多国语言设置

    wlgyhnj(冷风0) 明白ORACLE的多国语言设置,ORACLE多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示,货币形式,排序方式和CHAR,VARCHAR2,CLOB,LONG字 ...

  7. 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo项目分析

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo,这个是一个在网上流传比较多的Spri ...

  8. 复旦大学桂韬:当NLP邂逅Social Media--构建计算机与网络语言的桥梁

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  9. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...

    快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...

最新文章

  1. ES6版Promise实现,给你不一样的体验
  2. Amazing 2020
  3. python集合以及编码初识
  4. Visual studio Code的C/C++开发环境搭建
  5. 在Eclipse中如何操作zookpeer
  6. 基于 SSH 的远程操作以及安全,快捷的数据传输转
  7. 直接调用内置数据源连接对话框(C#/VB.NET2005源码)
  8. 脚本——LoadRunner文件操作函数详解
  9. mac pycharm汉化(附带汉化包)
  10. iWebOffice2009问题
  11. 纵列式双旋翼直升机飞行控制律建模
  12. c#通讯录管理系统(女朋友版本)
  13. 用计算机和电视机组成家庭影院,家庭影院怎么连接电脑_家庭影院连接电脑详解【图文】-太平洋IT百科...
  14. spring boot+thymeleaf+layui实现后台管理系统界面
  15. win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
  16. Python Crash Course读书笔记 - 第18章:GETTING STARTED WITH DJANGO
  17. 利用python构建马科维茨_R语言动量和马科维茨Markowitz投资组合(Portfolio)模型实现...
  18. 100多个经典常用的PHP功能插件大全实例演示和下载
  19. 思科设备三层交换配置路由实现互通
  20. 面试官:什么是虚拟DOM?如何实现一个虚拟DOM?

热门文章

  1. 初代AirPods Pro迎来自适应通透模式,唯独缺少充电盒Find My功能
  2. android one指纹解锁,小米用屏幕内指纹扫描仪准备了两部Android One手机
  3. 跨境卖家使用USPS寄件的流程及注意
  4. php正则表达式 chm,正则表达式说明 验证手机号 PHP
  5. PB通过ODBC链接MYSQL_odbc技术小结(结合pb)
  6. 我和计算机作文450字,我和作文450字
  7. Code128条形码——全球通用的高密度条形码
  8. 最新uni-app实战仿糗事百科app开发教程完整版
  9. c语言贪心算法背包问题,[算法]背包问题的经典算法和贪心算法解答,C语言实现...
  10. 含泪整理最优质老板svg图标素材,你想要的这里都有