Asp.net移动开发指南(8)

移动Web应用的国际化

国际化是设计和开发适合多种区域性的应用程序的过程,而本地化则是为给定的区域性和区域设置自定义应用程序的过程。本节主要描述如何创建适合不同语言和区域性的 ASP.NET Web应用程序。

1.6.1 编码支持

ASP.NET在内部使用Unicode。与外界连接时,可以用几种方法来配置ASP.NET以便使用已定义的编码,包括.aspx文件、请求数据和响应数据的编码。例如,可以用Unicode编码方式存储.aspx文件,并将页的HTML输出转换为ANSI代码页,如ISO-8859-1。在web.config文件中,可以包含Globalization节,在其中可以指定默认的编码和区域性。配置代码如清单1-19所示。

清单1-19 配置编码和区域性

<configuration>

<system.web>

    <globalization

       fileEncoding="utf-8"

       requestEncoding="utf-8"

       responseEncoding="utf-8"

       culture="zh-CN"

       uiCulture="zh-SG" />

</system.web>

</configuration>

Globalization节中,fileEncoding的值决定ASP.NET编码.aspx文件的方式,requestEncodingresponseEncoding的值决定请求数据和响应数据的编码方式。Web.config文件中的Globalization节的属性也可以在Page指令上指定(fileEncoding除外,因为它应用于文件本身)。这些设置仅对特定页有效,并且重写Web.config文件的设置。下列示例指令指定页应对响应使用“法语”区域性设置和UTF-8编码:

<%@Page Culture="fr-FR" UICulture="fr-FR" ResponseEncoding="utf-8"%>

ASP.NET页面内,可以通过Thread.CurrentCultureThread.UICulture以编程方式查看区域设置。以下代码显示由清单1-19所示代码所配置的Web服务器上的区域性值。显示结果如图1-13所示。

Imports System.Globalization
……

lblCurrentCulture.Text = "CurrentCulture " + CultureInfo.CurrentCulture.NativeName

lblCurrentUICulture.Text = "CurrentUICulture " + CultureInfo.CurrentUICulture.NativeName

1-13 显示区域设置

1.6.2 资源文件

如果创建的移动Web网站页面将由使用不同语言的用户浏览,则必须为这些用户提供他们自己的语言文字来组织页面内容。ASP.NET为此提供了一种方法,使用这种方法创建的页面,可以根据浏览器的首选语言设置或用户显式选择的语言获取内容和其他数据。内容和其他数据指的就是资源,此类数据可以存储在资源文件或其他源中。在ASP.NET网页中,可以将控件配置为从资源获取其属性值。在运行时,移动Web窗体动态地从相关资源文件中的检索资源。

移动Web网站资源文件是一个具有.resx扩展名的XML文件,例如WebResources.resx。资源文件包含要转换为不同语言或图像路径的字符串。资源文件包含键/值对,每一对都是一个单独的资源。键名不区分大小写。开发人员需要为不同的语言分别设置不同的键/值对。

ASP.NET中,可以创建具有不同范围的资源文件。创建全局资源文件,意味着可以从位于网站中的任意页或代码读取这些资源文件。创建本地资源文件,这些文件存储单个 ASP.NET网页(.aspx文件)的资源。

将资源文件放入应用程序根目录的保留文件夹App_GlobalResources中,即可创建全局资源文件。App_GlobalResources文件夹中的任何.resx文件都具有全局范围。此外,ASP.NET 还生成了一个强类型对象,这为开发人员提供了一种以编程方式访问全局资源的简单方法。

本地资源文件是仅应用于一个ASP.NET页面的文件(带有.aspx.ascx等扩展名的ASP.NET页)。本地资源文件所放入的文件夹具有App_LocalResources保留名称。App_Local Resources文件夹可以存在于应用程序的任何文件夹中,这与App_GlobalResources根文件夹不同。通过资源文件名,将一组资源文件与特定的网页相关联。例如,如果在App_Local Resources文件夹中有一个名为Default.aspx的页,则可以创建一个命名为Default.aspx.resx的资源文件,做为Default.aspx的默认本地资源文件。本地资源文件的基名称与页文件名相同,以扩展名.resx结尾。

1.6.3 使用资源文件

创建资源文件后,即可在ASP.NET页面中检索资源文件定义的资源。基于ASP.NET的移动Web应用程序开发,支持使用编程方式检索资源值。使用编程方式既可以从本地资源文件获取资源值,也可以从全局资源文件中获取资源值。如果从全局资源文件中获取资源值的时候,还可以通过ASP.NET生成的一个强类型对象,该强类型对象为开发人员提供了一种以面向对象编程方式访问全局资源的简单方法。

.NET Compact Framework分别重载了HttpContextTemplateControl类中的GetLocalResourceObjectGetGlobalResourceObject方法。调用GetLocalResourceObjectGetGlobalResourceObject方法,以便分别从全局资源文件或本地资源文件中检索指定资源。GetGlobalResourceObject方法采用资源类名和资源ID。该资源类名为全局资源文件的文件前缀名。例如,对应全局资源文件WebResourcesGlobal.resx通过资源类名WebResourcesGlobal来引用。GetLocalResourceObject方法通过键/值对的键名来访问资源文件中的资源。GetLocalResourceObjectGetGlobalResourceObject方法都返回一个对象,必须将该资源强制转换为适当的类型。

清单1-20中的代码演示如何从本地资源文件和全局资源文件检索资源值。在此示例中,存储在App_LocalResources特殊文件夹中的本地资源文件为WebGlobalization.aspx.resx。存储在App_GlobalResources特殊文件夹中的全局资源文件命名为WebResourcesGlobal. resx。在这两个资源文件中添加的字符串资源如图19-14所示。

1-14 显示区域设置

清单19-20 从资源文件检索资源

……

' 显示当前区域设置

lblCurrentCulture.Text = "CurrentCulture: " +

CultureInfo.CurrentCulture.NativeName

lblCurrentUICulture.Text = "CurrentUICulture: " +

    CultureInfo.CurrentUICulture.NativeName

' 从全局资源文件检索资源

cmdDemoCN.Text = GetGlobalResourceObject("WebResourcesGlobal",

    "cmdDemo_CN").ToString()

lblDemoCN.Text = GetGlobalResourceObject("WebResourcesGlobal",

    "lblDemo_CN").ToString()

cmdDemoEN.Text = GetGlobalResourceObject("WebResourcesGlobal",

    "cmdDemo_EN").ToString()

lblDemoEN.Text = GetGlobalResourceObject("WebResourcesGlobal",

    "lblDemo_EN").ToString()

' 从本地资源文件检索资源

cmdDemoLocalCN.Text = GetLocalResourceObject("cmdDemoLocalCN.

    Text").ToString()

lblDemoLocalCN.Text = GetLocalResourceObject("lblDemoLocalCN.

    Text").ToString()

cmdDemoLocalEN.Text = GetLocalResourceObject("cmdDemoLocalEN.

    Text").ToString()

lblDemoLocalEN.Text = GetLocalResourceObject("lblDemoLocalEN.

    Text").ToString()

……

19-15显示了清单1-20中所示示例运行时的Web页面。

前面提过,当从全局资源文件中获取资源值时,可以通过ASP.NET生成的一个强类型对象,以面向对象编程的方式来访问全局资源。使用强类型检索全局资源,可以按照下面的语法获取资源:

Resources.Class.Resource

资源将编译到命名空间Resources中,并且每个资源都将成为Resources类的成员。例如,如果创建了全局资源文件WebResources.resx,并且该文件包含一个名为WelcomeText的资源,则可以使用下面的代码引用该资源:

Dim welcome As String

welcome = Resources.WebResources.WelcomeText

http://hi.baidu.com/zhiwei%5F117/blog/item/0d021630a75b58a25edf0e0b.html

加支付宝好友偷能量挖...


评论(0)网络
阅读(125)喜欢(0)Asp.Net/C#/WCF