国际化
Internationalizing Your Application
ASP.NET 2.0提供了三项关于网站国际化的
特性
. 自动侦测浏览器的语言
. 声明本地化的表达式
. 生产本地资源
在HTTP协议中,浏览器可以发送一个支持
语言的列表,包含在Http头信息里。这个列
表可以让服务器端判断用户所使用的浏览
器环境,从而进一步判断用户操作系统的
环境。
采用xml配文件来实现国际化,ASP.NET将这些操作封装起来了.
java是做用资源文件实现的.
using System.Globalization;
CultureInfo.CurrentCulture.Name方法可以
RegionInfo --国际化相关信息的类<全球一些国家的标记属性>
获得当前使用的系统。
本地化
using Resources;
Resource
using System.Resources;
Resourcemanager
App_GlobalResources
文件夹里存方着资源文件
资源表达式
显示 --<%$ Resources:[filenameprefix,]resource-key %>
全局资源放在/App_GlobalResources文件夹内
隐式 --<asp:Label ID="Label1" runat="server" meta:resourcekey="resource-keyprefix" />
本地资源放在/App_LocalResources文件夹里
--页面调用
隐式调用 :
<asp:Label ID="LabelTitle" runat="server"
Text="Currency Exchange Calculator"
meta:resourcekey="LabelResource1">
</asp:Label>
显示调用本地数据:
. <profile enabled="true"
defaultProvider="QuickStartProfileSqlProvi
der" inherits="UserDefinedProfileClass">
本地资源文件(隐式):文件名要尊守IE语言的命名规则,在调用时不用指定文件名.
<asp:Label ID="Label1"
runat="server"
meta:resourcekey="resource-keyprefix"
/>
全局资源文件(显示):可以随意写文件名称,在调用时指定文件名
<%$ Resources:[filename
prefix,]resource-key %>
<profile --用户个性数据保存
分页用存储过程会比较好.
使用Localize control 控件可以方便的显示静态文本
编码方式:
<configuration> <system.web>
<globalization requestEncoding="shift-jis"
responseEncoding="shift-jis"
fileEncoding="shift-jis" ... />
</system.web> </configuration>
读xml文件
XmlTextReader xtw = new XmlTextReader(Server.MapPath("XMLFile.xml"));
DataSet ds = new DataSet();
ds.ReadXml(xtw);
读取资源文件
GetGlobalResourceObject("className", "rkey");
<asp:Label ID="Label2" runat="server" Text="<%$ Resources:文件名,keyName%>"></asp:Label>
在gridview中的应用
<asp:GridView AutoGenerateColumns="False" DataSourceID="XmlExchangeRates" ID="ExchangeGrid"
runat="server" meta:resourcekey="GridViewResource1" >
<Columns>
<asp:TemplateField HeaderText="Name" meta:resourcekey="TemplateFieldResource1">
<ItemTemplate>
<asp:Label ID="ColumnCurrency" runat="server" Text='<%# CStr(GetGlobalResourceObject("CurrencyNames",CStr(Eval("Region")))) %>' meta:resourcekey="LabelResource4"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Exchange Value" meta:resourcekey="TemplateFieldResource2">
<ItemTemplate>
<asp:Label ID="ColumnExchangeValue" runat="server" Text='<%# CalculateExchangeValue(CStr(Eval("Rate"))) %>' meta:resourcekey="LabelResource5"></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" />
</asp:TemplateField>
</Columns>
</asp:GridView>