C11: Localizing 网站的本地化
使用Global Resources
Global resources 被所有的页面、控件、类共享,最适于存储多国语言数据。这里的数据不仅包括字符串,而且包括图片,图标,声音,和任何其它二进制内容。这些资源文件一般放在App_GlobalResources目录下,
.
Figure 11-1
打开一resx文件,你能够在窗口左上角选择添加图片或者图标或者插入其它文件。
添加了一些字符串和图片后,你能到一个.cs 文件中输入 Resources.Messages去智能化的显示所有的资源名。
Figure 11-3
在控件中使用资源如下图Figure 11-4 ,选择控件的Expressions属性,在弹出的对话框中输入资源Key
下面是使用资源后的Html代码
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、在页面文件中采用下面方式引用
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,有下面三种方法
1、在Global.asax 文件中 的Application_BeginRequest 事件中设置如下:
、在 web.config 文件的
{
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
<system.web>
<globalization culture="auto" uiCulture="auto" />
...
</system.web>
</configuration>
{
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",如下: