C11: Localizing 网站的本地化

本文介绍了ASP.NET中实现国际化的方法,包括使用全局资源和页面级资源。详细讲解了资源文件的放置位置、命名规则及如何在页面和代码中引用这些资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Global Resources

Global resources 被所有的页面、控件、类共享,最适于存储多国语言数据。这里的数据不仅包括字符串,而且包括图片,图标,声音,和任何其它二进制内容。这些资源文件一般放在App_GlobalResources目录下,

.

Figure 11-1

打开一resx文件,你能够在窗口左上角选择添加图片或者图标或者插入其它文件。

添加了一些字符串和图片后,你能到一个.cs 文件中输入 Resources.Messages去智能化的显示所有的资源名。

Figure 11-3

在控件中使用资源如下图Figure 11-4 ,选择控件的Expressions属性,在弹出的对话框中输入资源Key

下面是使用资源后的Html代码

<asp:Label ID="lblGreeting2" runat="server"
   Text
='<%$ Resources:Messages, Greeting2 %>' / >

用Page-level Resources

你能建立 page-level resources 放在 App_LocalResources 目录,App_LocalResources 目录必须和调用的页面文件在同一级目录。例如,如果页面在根目录,你建立App_LocalResources 在根目录,如果页面在 /Test,你就要建立 /Test/App_LocalResources 目录. 每一个页面文件对应一个resx文件,resx文件名前面部分和页面文件的名字相同。如一个页面文件为Localization.aspx,它的资源文件名固定为 Localization.aspx.resx, 对应到中文则命名为 Localization.aspx.zh-cn.resx .

Figure 11-5

 

页面中使用方式如下:
<asp:Label ID="lblCopyright" runat="server"
   Text
="<%$ Resources:CopyrightMessage %>" / >
代码中引用如下:

string copyrightMsg = (string)this.GetLocalResourceObject("CopyrightMessage");


对同一控件的不同属性值可以采取下面一次同时赋值的方法

1、在resx文件中采用label2.Text;label2.Tooltip的命名方式,前面是类对象名,后面是属性名;

2、在页面文件中采用下面方式引用

<asp:Label ID="lblTitle" runat="server" Font-Size="X-Large" ForeColor="#C00000"
   meta:resourcekey
="label2" Text="Localization Demo"
   Texttip
="This page provides a nice demo of new ASP.NET 2.0 localization features"
/>

上面例子中,在Text和Texttip中的赋值会被resx中的值替代。

这种方法对于页面的标题也有效,下面为定义方法 设置网站当前的语言 Culture,有下面三种方法

<%@ Page Language="C#" meta:resourcekey="PageResource1" ...other attributes... %>

 

1、在Global.asax 文件中 的Application_BeginRequest 事件中设置如下:

 

、在 web.config 文件的 元素中设置如下:

 

void Application_BeginRequest (Object sender, EventArgs e)
{
     
if (Request.UserLanguages!=null)

   
if (Request.UserLanguages.Length > 0)
   
{
      CultureInfo culture 
= CultureInfo.CreateSpecificCulture(
         Request.UserLanguages[
0]);
      Thread.CurrentThread.CurrentCulture 
= culture;
      Thread.CurrentThread.CurrentUICulture 
= culture;
   }

}

2

你也能在每个页面文件中加入以下指示符: 3、在BasePage 类中重载下面的方法:

<configuration>
   
<system.web>
      
<globalization culture="auto" uiCulture="auto" />
      ...
   
</system.web>
</configuration>

 

<%@ Page Culture="auto" UICulture="auto" ... %>

 

protected override void InitializeCulture()
{
   
string culture = Helpers.GetCurrentCulture();
   
this.Culture = culture;
   
this.UICulture = culture;
}

 

重点:

如果你在 @Page 指示符中设置了Culture="auto".而在 Global.asax 文件中又在事件中用程序指定当前的 culture, 你必须记得去移除 @Page 指示符中的设置。 否则前面的automatic设置将覆盖你程序中的设置,因为页面文件分析执行是在 global.asax 事件之后的。如果你是在页面的 InitializeCulture 事件中设转置Culture,则不用移除@Page 指示符中的设置。因为这个事件是在页面分析后执行的。

注意: 可以这样设置this.Culture="zh-cn";

zh-cn是规定的中文标识,英文标识为en-US,当你的浏览器指定的首选语言是中文时,系统就会

自动加载扩展名为zh-cn的资源文件如Default.aspx.zh-cn.resx。对于Web.sitemap文件必须要加上ation="true",如下:

http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true" >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值