Asp.Net3.5国际化

Asp.Net3.5国际化

  环境:VS2008、SqlServer2005。在学习的过程中遇到一些问题,通过查资料学习得到解决,现在共享出来,希望对对这有所帮助,若有不对之处,请提出宝贵意见。

一、为什么需要代码国际化?

    随着社会的进步,人们的交流不在局限于某一个区域。同样,软件的使用也不再面向某一区域的用户,它的用户可能是来自不同国家的、具有很大的文化差异的人们,所以代码的国际化是必要的。这里所说的是Asp.Net的国际化。

二、添加和使用本地资源

    资源文件分两种:本地资源文件和全局资源文件,资源文件有它特定存储位置。新建一个名GlobalTest的Web项目,在该项目中默认有一个名称为Default.aspx的页面。.NET提供两个专门存储资源文件的文件夹,本地资源文件夹--App_LocalResources,全局资源文件夹--App_GlobalResources。右击项目选择“添加”-->“添加ASP.NET文件夹”-->选择相应的操作来增加资源文件夹。

    资源文件的命名有一定的规则,本地资源文件命名规则为:Aspx文件名称.+语言/特定区域名称+.resx,例如:Default.aspx.zh-cn.resx,其中“zh-cn”为“中文-中国”的名称,这个名称可以从IE中查看,打开IE-->"工具"-->"Internet 选项"-->"语言"-->"添加",即可查看语言和特定区域名称信息。使用资源文件必须要有一个默认的资源文件,这个文件在找不到和客户端浏览器设置的区域对应的资源文件时就会调用。默认资源文件命名规则:Aspx文件名称+.resx。无论全局资源文件或本地资源文件,都必须要有一个默认的资源文件。本地资源文件中没有默认的资源文件会显示空白,全局资源文件中如果没有资源文件将不能通过编译。这样每个aspx文件都会有它对应的资源文件,本例中只做中文和英文,那么就添加资源文件:Default.aspx.resx、Default.aspx.zh-cn.resx、Default.aspx.en-us.resx。如图所示:

    本例默认资源文件为英文的,这样Default.aspx.resx和Default.aspx.en-us.resx中的内容一样,数据如下:

    

Default.aspx.zh-cn.resx文件内容如下:

同时,必须在Default.aspx文件的page命令中加上属性:Culture="auto" UICulture="auto",Auto表示根据浏览器所设置的区域自动适应。

Default.aspx完整代码如下:

1 <%@ Page Language="C#" AutoEventWireup="true" Culture="auto" UICulture="auto"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title><asp:Localize ID="localizeTitle" runat="server" meta:ResourceKey="LocalizeTitle"></asp:Localize></title>
 8 </head>
 9 <body>
10     <form id="form1" runat="server">
11     <div>
12                <asp:Localize ID="LocalizeContent" runat="server" meta:ResourceKey="LocalizeContent"></asp:Localize>
13         <br />
14         <asp:Button ID="btnSubmit" runat="server" meta:ResourceKey="btnSubmit"/>
15     </div>
16     </form>
17 </body>
18 </html>


 

现在可以测试了。打开IE更改语言选项,选择中文并将其升到第一个(第一个为默认选择的区域),可以看到中文的效果。

    如果不想每个aspx页面的page都加如上所说的Culture="auto"、UICulture="auto"属性,可在Web.Config文件中配置:<globalizatioin culture="auto" uiCulture="auto" fileEncoding="utf-8">,将此节点放在<system.web>下就可以有同样的效果。

    使用资源文件分为隐式使用和显式使用,上面代码即为隐式使用。即添加meta:ResourceKey属性,而值对应资源文件的名称字段。

 

<asp:Localize ID="LocalizeContent" runat="server" meta:ResourceKey="LocalizeContent"></asp:Localize>
 <asp:Button ID="btnSubmit" runat="server" meta:ResourceKey="btnSubmit"/>

显式使用:即用到资源文件的控件的Text属性修改为Text="<%$ Resources:btnSubmit.Text %>"即可。其中btnSubmit.Text对应资源文件中的名称字段。

三、添加和使用全局资源文件

    全局资源文件的添加和本地资源文件添加类似,但全局资源文件的命名规则不同:自定义命名字符串+.resx(默认资源名称)、自定义命名字符串+.语言/特定区域名称+.resx。全局资源文件数量可能会大大少于本地资源文件,如果做两种语言的话3个资源文件就足够了。

    全局资源文件是不和页面相关的,整个网站都能访问到的资源文件。比如完整的站点地图、网站通用性文字,对这些内容的本地化只能用全局资源文件来实现了。绑定全局资源文件的代码示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值