您的位置:首页 > 编程语言 > ASP

Asp.Net Ajax 学习笔记20 ASP.NET AJAX的全球化与本地化功能

2008-01-06 04:20 615 查看
本次课程讲的是对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方法。在重写方法中我们可以通过以下代码来改变当前请求的文化值。


this.Page.UICulture = "en-us";


this.Page.Culture = "en-us";



注意根据Culture得到相对应的资源文件是由UICulture影响的,Culture只是影响文本显示的格式。在指定完Culture以后,一定要调用基类的InitializeCulture方法。除了通过手工代码指定外,还可以在页面上指定UICulture和Culture的值,并且也可以在web.Config文件里System.Web节点下添加


<globalization culture="auto" uiCulture="auto" />

节点。culture和uiCulture指定为auto表明根据客户端发送过来的国家信息,来使用相应的资源文件和对应的格式。UICulture和Culture都有两种设置方式,使用其中一种就可以了


this.Page.UICulture


Thread.CurrentThread.CurrentUICulture


this.Page.Culture


Thread.CurrentThread.CurrentCulture

除了在页面可以使用资源文件给控件赋值,还可以在页面上赋值。

<asp:Label runat="server" Text="<%$ Resources:GlobalResource, TodayIs %>" /><%= DateTime.Now.ToString("D") %>

这是使用ASP.NET 表达式给lable的Text属性赋值。

使用Asp.Net的本地化。

首先创建App_LocalResources文件夹,在文件夹下创建与页面名相同的资源文件。假设页面名为Default,那么本地化资源名叫Default.aspx.resx和Default.aspx.en-US.resx。并在资源文件中创建lblCurrentTime.Text键,并指定相应的值为"今天是"和"Today is "。

那么我们可以直接在页面上使用如下标记


<asp:Label runat="server" meta:resourcekey="lblCurrentTime" /><%= DateTime.Now.ToString("D") %>

使用了这种标记之后,页面会根据当前的Culture知道对应的本地化资源文件名,然后根据指定的resoucekey和指定的lblCurrentTime的键,得到相应的值。

在Asp.Net Ajax中使用全球化功能。

ASP.NET AJAX的全球化功能仅涉及到对象字符串的转换格式不涉及Global资源文件,仅取决于Culture,与UICulture无关

首先要把全球化功能打开


<asp:ScriptManager runat="server" ID="sm" EnableScriptGlobalization="true" />


那么我们在使用相应的文本和对象的时候需要我们使用localeFormat进行转换为相应的国家显示的格式标准。

在Asp.Net Ajax中使用本地化功能。

脚本名称加上Culture名即可,基于字符串拼接,仅由UICulture决定。意思就是说,Asp.Net Ajax的本地化功能是通过js脚本文件来实现的,基于另外一个国家或地区的脚本文件只需要讲脚本文件的后缀加上国家或地区的编码即可。如:DemoResource.js和DemoResource.en-US.js文件。在js脚本文件中是利用命名空间和类来实现资源文件的功能。


Type.registerNamespace("Demo");




Demo.Resx =




...{


"TodayIs" : "今天是"


}





那么在DemoResource.en-US.js文件里相应的就是


Type.registerNamespace("Demo");




Demo.Resx =




...{


"TodayIs" : "Today is "


}

1.首先在ScriptManager中打开本地化功能。并且指定资源文件的路径


<asp:ScriptManager runat="server" ID="sm" EnableScriptLocalization="true">




<Scripts>...


<asp:ScriptReference Path="~/Scripts/DemoResource.js"


ResourceUICultures="en-US" />


</Scripts>


</asp:ScriptManager>



2.然后我们可以之间使用资源文件中的类和常量


<script language="javascript" type="text/javascript">


document.write(Demo.Resx.TodayIs + new Date().localeFormat("yyyy/MM/dd"));


</script>

这样我们就可以根据客户端发送过来的国家和地区自动对应相应的资源文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐