当前位置 > 首页 > Asp.net

入乡随俗:ASP.NET的本地化(Localization)简介

2012-7-18 17:38:00来源:Asp.net

在实际的开发过程中,经常遇到这种情况:同一个网站,在不同的国家需要显示不同的语言。在美国显示英语,在中国显示中文。下面就用几个简单的例子来说明ASP.NET提供的本地化支持。

          楔子:

ASP.NET中的资源文件有两种:一种是全局资源文件,放在App_GlobalResources目录下,可以被站点中的任意页面或者站点访问;一种是局部资源文件,放在App_LocalResources目录下,只能被一个特定的页面访问。在下面的例子中会看到这两种资源文件。

 

1. 对服务器控件应用本地化。

场景:

 页面上有一个按钮,在美国让它显示"Read Me",在中国让它显示"读我"

实施:

1.1. 拖一个按钮到页面上,设置它的Text属性。

        

    1.2. 选中按钮,在菜单上选择"Tools"->"Generate Local Resource".

    (由于我用的是英文系统,如果你用的是中文系统,也在相应位置找到中文菜单)

      点击后,发现App_LocalResources文件夹和Default.aspx.resx被创建了。

 

  这里创建的Default.aspx.resx就是一个局部资源文件,只能在Default.aspx的代码中访问,其他地方访问不到。

  

  打开Default.aspx.resx,可以看到里面已经自动创建了与我们这个按钮相关的一些键值对。

 

  将Default.aspx切换到代码模式,发现与Resource相关的属性已经被自动加上了。

  

  1.3. 现在将Default.aspx.resx复制一份,重命名为Default.aspx.zh-CN.resx.

      

  1.4. 打开Default.aspx.zh-CN.resx, 将里面Button1Resource1.Text的值改成中文。

       

         运行结果:

在IE中浏览该页面,由于我用的是英文系统,所以默认显示是Read Me.

现在我来更改IE的语言,在IE菜单中,Tools->Internet Options->Languages, 将中文移动到第一位。

再次浏览这个网页,发现按钮的文字已经变成中文的了。

 

2. 本地化HTML内容。

场景:

在上面的例子中我们已经看到了如何对服务器控件进行本地化,那么如果有一段静态的HTML内容,该如何对它进行本地化那?

比如,下面的一段HTML代码,我点击Tools->Generate Local Resource,没有任何反应。

  

实施:

2.1. 将这段静态HTML代码用asp: Localize控件包起来,注意asp: Localize控件要有唯一的ID和runat="Server"属性。

  

2.2. 现在在设计视图中选择该asp:Localize控件,然后点击菜单中的Tools->Generate Local Resource. 就会发现代码视图中的标签被改变了。

  

2.3 双击打开Default.aspx.resx, 发现对应的键值对已经对添加了。

  

2.4. 当然,对于Default.aspx.zh-CN.resx,我们需要手动添加一个同样的键值对。

  

运行结果:

以下分别是IE语言设置为英文和中文时的执行结果:

    

  

 

3. 格式化Site Map.

场景:

网站有一个站点导航,用Site Map实现的,现在想要让它也实现本地化。

以下是代码结构:

 

   

  

实施:

3.1. 为Site Map创建两个Resource文件。

         

          由于Site Map是全局使用的,它对应的资源文件也是全局有效的,所以这两个资源文件一定


  • apache + subversion for linux 安装

    2009-7-11 20:58:00

    SVN是管理工程本版的必备工具,相对vss以及其前身cvs来说都有着无与伦比的优势 以下是apache+subversion服务端安装步骤: 一、准备好安装包: ① a

  • 系统缓存全解析1:系统缓存的概述

    2009-7-1 2:12:00

    摘要: 系统缓存有什么好处呢?举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的。例如查询一些历史数据。那么每个用户每次查的数据都是一样的。如果不设置缓存,A

  • Excel 二次开发系列(6): 引用Excel模板

    2009-10-27 16:01:00

    阅读: 450 评论: 1 作者: tomin 发表于 2009-10-27 12:36 原文链接 Excel 二次开发系列 C# 这一节,主要有两个方面

  • C#3.0 中使用扩展方法来扩展接口

    2007-6-6 15:49:00

    有关扩展方法的一些知识点请参看我的前篇博客: C#3.0 中的扩展方法 (Extension Methods) 前篇博客中我重点介绍了两个特殊场景: 1、扩展方法跟原来类的方法重名时候的处

  • Expression Tree Visualizer

    2007-9-16 3:45:00

    I played with this a while back but never blogged about it and thought that maybe I should do now a

  • ASP.NET——URL重写,伪静态

    2012-2-8 17:10:00

    我们用.net开发的网站,都是动态网页。其扩展名一般是.aspx,ashx等。有的时候还带着参数,如: http://www.fnfy.net/user/blogs.aspx?id=2123 此类样

  • 如何创建新模块 DotNetNuke 6 & Entity Framework Code First

    2012-3-23 23:13:00

    博客园原文地址 : 如何创建新模块 DotNetNuke 6 & Entity Framework Code First 索引 : 第一部分: 开

  • 第一篇:Asp.net MVP模式介绍

    2011-8-21 15:06:00

    作者:BirchLee 2011年8月20日 22时10分 【学而不思则罔,思而不学则殆】 本文内容: 1.什么是MVP模式 2.Asp.net MVP模式简单示例

  • 『原创』让.Net CF实现智能提示(AutoComplete)功能

    2010-9-15 20:49:00

    作者: Jack Fan 发表于 2010-09-15 20:12 原文链接 阅读: 98 评论: 0 前言 最近,一直在做Winform方面的开发,有一个公交信息查询的场景,用户

  • 挣脱浏览器的束缚(3) - 两个连接还不够“并行”

    2007-1-22 14:46:00

    摘要: 谈谈优化难度:对比document.write与defer 突破两个连接的限制 阅读全文 Jeffrey Zhao 2007-01-22 14:42 发表评论