asp.net国际化的知识
时间:2010-07-16 来源:cuisuqiang
实现国际化
1.在网站上,右键添加ASP.NET文件夹
2.在新建项里添加资源文件,注意命名的规范,我们默认的为GlobalResource.resx,一般没有指定语言区域的为 回退资源文件 ,即默认资源文件。
3.添加支持英文的资源文件GlobalResource.en-US.resx
4.简单应用开始,在页面里添加一个Label,然后在页面加载事件里添加如下代码:
this.Label1.Text=Resources.GlobalResource.today+DateTime.Now.ToString("F");
(1)同时覆盖方法,指定语言环境
protected override void InitializeCulture()
{
this.UICulture = "en-us";
this.Culture = "en-us";
base.InitializeCulture();
}
(2)以上还可以这样书写
Thread.CurrentThread.CurrentCulture=CultureInfo.CreateSpecificCulture("en-us");
Thread.CurrentThread.CurrentUICulture=CultureInfo.CreateSpecificCulture("en-us");
(3)以上均为手动指定,可以自动指定,这样程序会根据当前语言环境指定资源文件
if (this.Request.UserLanguages.Length > 0)
{
this.UICulture = this.Culture = this.Request.UserLanguages[0];
}
(4)也可以这样自动指定,在页面上添加标签,但是仅针对当前页面
页面顶部加上标签UICulture="auto" 也可以将其改为en-US
也可以这样指定全局的自动指定,在配置文件中指定
(5)在web.config的<system.web>内配置
<globalization culture="auto" uiCulture="auto"/>
5.在页面上用标签指定文件值,之前要使用4里面的5种方法之一指定语言环境
<asp:Label ID="Label2" runat="server" Text="<%$ Resources:GlobalResource,today %>[注意该标签的使用] " /><% =DateTime.Now.ToString("F") %>
实现本地化
加入要对GlobalTest.aspx进行操作,注意该页面在根目录,页面有代码
<asp:Label ID="Label3" runat="server" meta:resourcekey="lblCurrentTime"[注意标签使用] /><% =DateTime.Now.ToString("F") %>
1. 在网站上,右键添加ASP.NET文件夹
2.在新建项里添加资源文件,注意命名的规范,我们默认的为GlobalTest.aspx.resx[注意是页面的名称然后资源文件后缀]
3.在资源文件中写入的Key名称有所不同,加入有Key是lblCurrentTime.Text
4.标签会先找到lblCurrentTime,然后指定的是为空间的文本赋值,也可以定制其他属性
5.本地资源文件必须与页面或控件的位置对应,App_LocalResources 可以放在任何地方,因此将对应的资源文件放置在与页面平级的文件夹下
实例:Ajax脚本国际化
1.创建页面,注册Ajax,如下
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true"[启用国际化] >
</asp:ScriptManager>
2.创建一个DIV,命名为currentTime
3.编写脚本
<script language="javascript" type="text/javascript">
function pageLoad(){
showTime();
}
function showTime(){
$get("current").innerHTML=new Date().localeFormat[注意该方法可能存在支持问题]("F");
window.setTimeout(showTime,1000);
}
</script>
4.页面增加标签UICulture[本地化时至于该属性有关] ="en-US",可以看到效果了已经
5.定义两个Ajax客户端JS文件,注意命名规范,默认为DemoFormat.js,并创建英文文件DemoFormat.en-US.js
6.在JS文件中写入
/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("Demo");
Demo.Resx={
"today":"今天是"
}
/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("Demo");
Demo.Resx={
"today":"Today Is"
}
7.页面中引入
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization[一定要设置该属性] ="true">
<Scripts>
<asp:ScriptReference Path="~/Scripts/DemoFormat.js"
ResourceUICultures[可以接受的资源文件] ="en-US"/>
</Scripts>
</asp:ScriptManager>
8.页面标签设置UICulture="en-US"
9.展示效果,因为标签设置,现在显示为英文
<script language="javascript" type="text/javascript">
document.write(Demo.Resx.today + new Date().localeFormat("yyyy/MM/dd"));
</script>