asp.net国际化和本地化
客户端语言自动识别功能,还可以通过Accept-Language获得客户端使用的语言
<%@ Page Culture = “auto:zh-cn”>
语言自动识别,但若不在支持范围内,则执行auto.语言文化会在PreInit事件中初始化。
通过在System.Globalization命名空间下
RegionInfo region = new RegionInfo(CultureInfo.CurrentCulture.Name);//获得一对象
//? 通过该对象的方法实现针对不同文化的不同操作
?
本地化
本地资源文件
1,隐式
App_LocalResource目录下放一些 *.resx文件 abcd.aspx.resx默认的资源文件, abcd.aspx..zh-cn.resx对简体中文时使用的资源文件,abcd.aspx.ja.resx对日文等。只针对特定的页面,不只是aspx页,用户控件和master页也可以。对应的页的所有的服务器控件,用户控件和运行在服务器端的HTML控件,若控件属性定义时有[Localizable(true)]标记的都会自动的加入对应的资源文件,只需填入你想要的值就行了。
<%@ Page Culture = “auto” UICultrue = “auto” meta:resourceKey=”PageResource1” %>
及其引用控件
<asp:label id=”label1” meta:resourceKey = “Label1Resource1” runat=”server” />对应的资源标识符都有IDE自动完成,不用自己去添加。
2,显示
可以用于那些属性定义时不带[Localizable(true)],
在上述资源文件中加入
<data name = “MyColor” xml:space =”Preserver”>
? <value>Green</value>
</data>
在页面中
<asp:TextBox ID=”textbox1” runat=”server” meta:resourceKey=”对不同的资源文件中可设为不同的值”? BackColor=”<%$ Resources:MyColor %>” />
全局资源文件
在App_GlobalResource目录下添加yourName.resx文件,yourName.zh-cn.resx文件等。
在对应的编辑器中输入键/值对就行了。
引用时
Text = “<%$ Resources:yourName,yourKey %>”
就行了
?
若其中有一些控件不想应用这些资源文件,可以加一个meta:localize = “false”的属性
?
在后台的代码中访问这些资源文件
button1.Text = GetLocalResourceObject(“ButtonResource1.Text”).ToString();
button2.Text = GetGlobalResourceObject(“yourName”,”yourKey”).ToString();
?
静态文本的本地化
使用本地资源
<asp:Localize id=”lo1” runat=”server” meta:resourcekey = “welcome” >welcome</asp:Localize>
使用全局资源
<asp:Localize id=”lo2” runat=”server” text=”<%$ Resources:welcomeName,welcomeKey %>” >welcome</asp:Localize>
?
本人博客的文章大部分来自网络转载,因为时间的关系,没有写明转载出处和作者。所以在些郑重的说明:文章只限交流,版权归作者。谢谢