本次课程讲的是对Asp.Net Ajax的全球化和本地化的开发。
首先说明了全球化和本地化的定义。
- 全球化是一个面向多种文化开发和设计一个应用程序的过程。
- 本地化是面向特定文化和地区定制应用程序的过程
全球化:面向多种文化,设计
本地化:面向特定文化,定制
结论:
- 全球化为应用程序提供多文化的支持
- 本地化"全球化"带来的支持进行定制
- 两者密不可分
在Asp.Net中使用全球化
- 首先在网站中创建App_GlobalResources文件夹,然后添加全球化资源文件GlobalResource.resx。在创建了基本的GlobalResource.resx文件之后,可以根据多语言创建对应的资源文件,如:要创建美国使用的资源可以创建GlobalResource.en-US.resx资源文件。注意en-US是标准的表示国家的编码。
- 在两个资源文件中创建相同名字的键,然后根据国家范围,指定相同名字的键的键值。如添加TodayIs的键,在GlobalResource.resx的键值为"今天是",在GlobalResource.en-US.resx的键值是"Today is"。
- 现在可以在对一个控件的值根据资源文件来赋值了,如创建一个lable,那么可以设置这个label的Text的值为Resources.GlobalResource.TodayIs。这样Web应用程序会根据当前客户发送过来的国家编码自动加载TodayIs的值。
- 如果手动改变Culture。我们可以在页面中重写InitializeCulture方法。在重写方法中我们可以通过以下代码来改变当前请求的文化值。
注意根据Culture得到相对应的资源文件是由UICulture影响的,Culture只是影响文本显示的格式。在指定完Culture以后,一定要调用基类的InitializeCulture方法。除了通过手工代码指定外,还可以在页面上指定UICulture和Culture的值,并且也可以在web.Config文件里System.Web节点下添加
this.Page.UICulture = "en-us";
this.Page.Culture = "en-us";
<globalization culture="auto" uiCulture="auto" />
节点。culture和uiCulture指定为auto表明根据客户端发送过来的国家信息,来使用相应的资源文件和对应的格式。UICulture和Culture都有两种设置方式,使用其中一种就可以了 this.Page.UICulture
Thread.CurrentThread.CurrentUICulture
this.Page.Culture
Thread.CurrentThread.CurrentCulture
- 除了在页面可以使用资源文件给控件赋值,还可以在页面上赋值。
这是使用ASP.NET 表达式给lable的Text属性赋值。<asp:Label runat="server" Text="<%$ Resources:GlobalResource, TodayIs %>" /><%= DateTime.Now.ToString("D") %>
使用Asp.Net的本地化。
- 首先创建App_LocalResources文件夹,在文件夹下创建与页面名相同的资源文件。假设页面名为Default,那么本地化资源名叫Default.aspx.resx和Default.aspx.en-US.resx。并在资源文件中创建lblCurrentTime.Text键,并指定相应的值为"今天是"和"Today is "。
-
那么我们可以直接在页面上使用如下标记
使用了这种标记之后,页面会根据当前的Culture知道对应的本地化资源文件名,然后根据指定的resoucekey和指定的lblCurrentTime的键,得到相应的值。
<asp:Label runat="server" meta:resourcekey="lblCurrentTime" /><%= DateTime.Now.ToString("D") %>
在Asp.Net Ajax中使用全球化功能。
ASP.NET AJAX的全球化功能仅涉及到对象字符串的转换格式不涉及Global资源文件,仅取决于Culture,与UICulture无关
- 首先要把全球化功能打开
<asp:ScriptManager runat="server" ID="sm" EnableScriptGlobalization="true" />