ASP.NET中的I18N与L10N(1)

1.什么事I18N与L10N
  最早接触到这两个词的时候觉得他们很奇怪,怎么会既有英文字母又有数字。后来知道他们是什么意思了,更觉得奇怪:英文缩写原来可以这么干<^_^>.
I18N是表示internationalization,I和最后一个N之间刚好18个字母,所以叫I18N。
L10N是表示Localization,L和最后一个N之间刚好10个字母,所以叫L10N。

2.I18N与L10N的作用
  其实我感觉I18N与L10N讲得其时是一回事,只不过时在这件事的不同阶段而已。这件事就是实现讲网站以不同的语言显示给不同语言的用户的功能。个人理解是I18N就是把网站上的文本预先定义好各种不同语言的版本;而L10N就是当用户访问站点时根据用户的具体语言环境选择相应语言的文本版本显示给用户。
  个人觉得这其实是一个很强大的功能。

3.ASP.NET中I18N与L10N的实现
     在ASP.NET中实现这种功能是很简单的,因为他本身已经有了一套框架来实现这两个功能,开发者只需要调用相应的框架接口即可。
  (1)获取访问者所使用的语言
  访问网站的用户所使用的语言室可以再IE浏览器中设置的(工具=>Internet选项=>语言)。
  
  当浏览器发送一个HTTP请求时,会将该语言列表作为HTTP头发送给Web服务器。在ASP.NET应用程序中,框架会将该列表中的第一种语言封装在CultureInfo类中的CurrentCulture属性中(访问路径为Thread.CultureInfo.CurrentCulture,表示当前线程所使用的CultureInfo)。这个属性返回的是一个CultureInfo得对象,对象中包含了所有区域性特定操作的所需信息。其中区域性名称与区域性标示符用来唯一标示特定的区域,区域性名称是特定区域的英文字符串表达(如:中国的区域性名称为zh-CN)。
  (2)定制自己的语言首选项  
  除了使用框架自动生成德CultureInfo外,开发人员也可以定制自己的CultureInfo。可以重写Page类的InitializeCulture方法,在该方法中通过如下语句设置当前所使用的语言文化:
  Thread.CultureInfo.CurrentCulture = new CultureInfo("zh-CN");
     Thread.CultureInfo.CurrentUICulture = new CultureInfo("zh-CN");
      zh-CN是每个区域的名称,每个特定区域都会有一个名称,具体名称信息请查询MSDN。另外,我们也可以用区域标示符来构造CultureInfo对象。
  (3)实现文本的多语言化
    要实现显示在网页上的文本随着访问用户的语言而变化成相应的版本,通过上面的介绍我们已经能得到用户所使用的语言,接下来我们就需要使用得到的这个语言信息将原始文本翻译成不同的版本。在ASP.NET中具体的使用语言信息获得相应版本的文本信息的过程不需要开发者关心,我们要做的只是把文本的各种不同的版本写入各种不同版本的资源文件中。
    在ASP.NET中,资源文件分为两种类型(全局资源文件和局部资源文件)。全局资源文件是可以给整个应用程序使用,而局部资源文件只能给某个特定的页面使用。两种资源文件在命名规则上即有共同点也有不同点:两种资源文件的后缀组成部分都是 区域性名称.resx;前缀名对于全局资源文件来说是任意的,而对于局部资源文件来说前缀必须是使用它的页面的文件名(包括展名)。如:GlobleResouce.zh-CN.resx(全局资源文件), Default.aspx.zh-CN.resx(局部资源文件)
    在ASP.NET应用程序中,全局资源文件统一放在GlobleResource文件夹中,而局部资源文件统一放在LocalResource文件夹中。
       (4)绑定页面元素到资源文件中
     语言信息和相应的文本资源都找到后,接下来就应该将页面上的元素绑定到相应的资源了。其实我们可以这样想象,在运行时ASP.NET框架已经根据用户的语言信息将相应版本的资源文件读取到了内存中。绑定工作实际上就是将页面上的元素与内存中的资源文件建立以中联系了。
     隐式绑定:
     在隐式绑定中,我们不需要指定资源文件的文件名。这主要是应用于绑定到局部资源文件。绑定语法如下:
     meta:ResourceKey = "resource key"
     也可以调用API函数来读取资源:
     HttpContext. GetLocalResourceObject ( virtualPath, resourceKey).
     显示绑定:
     在显示绑定中,我们需要指定资源文件的文件名。这主要是应用于绑定到全局资源文件。绑定语法如下:
       <%$ Resources:ResourceFileName,ResourceKey %>
      也可以调用API函数来读取资源:
     HttpContext. GetGlobalResourceObject ( classKey, resourceKey).
      classkey即为资源文件前缀(ASP.NET应用程序在运行时讲资源文件编译成一个类)

转载于:https://www.cnblogs.com/Code-life/archive/2009/10/06/1578380.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值