ASP.NET通过资源文件来实现全球化与本地化。
全球化:就是实现不同语言的显示
本地化:就是一种语言多种版本,比如英式英语与美式英语
资源文件分为全局资源文件(App_GlobalResources)以及局部资源文件(App_LocalResources)
a、如果要创建全局资源文件,则必须有名为 App_GlobalResources 的文件夹。若要创建该文件夹,请在“解决方案资源管理器”中右击网站的名称,然后单击“添加文件夹”,再单击“App_GlobalResources 文件夹”。应用程序中只能有一个这样的文件夹,且它必须位于应用程序的根目录下
b、如果要创建局部资源文件,则必须有名为 App_LocalResources 的文件夹。若要创建该文件夹,请在“解决方案资源管理器”中右击网站的名称,然后单击“添加文件夹”,再单击“App_LocalResources 文件夹”。应用程序中可以有多个这样的文件夹,且它们可以位于应用程序中的任意一级目录中。
使用局部资源文件:
首先我们创建一个Login.aspx页面,然后在App_LocalResources中创建一个Login.aspx.resx资源文件
Login.aspx部分代码如下:
<div>
<asp:Label ID="lblName" runat="server" meta:resourcekey="lblName"
></asp:Label>
</div>
在Login.aspx.resx中添加如下键值:
名称 值
lblName.Text 登录名
这样运行lblName的Text值为“登录名”
那如何让lblName的Text值显示为英文呢?
我们需要在App_LocalResources中创建一个Login.aspx.en.resx资源文件。并添加如下键值
名称 值
lblName.Text LoginName
再在Login.aspx后台页面添加如下代码:
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
}
这样lblName的Text值显示为“LoginName”
注意事项:aspx页面必须和App_LocalResources文件夹在同一个目录下,也就说如果你把Login.aspx页面放在Account文件夹下,那就必须在Account文件夹下创建App_LocalResources文件夹。
局部资源文件名称规则:
a、页面或控件名称.扩展名.语言.resx
b、页面或控件名称.扩展名.语言-区域性.resx
从 ASP.NET 网页生成局部资源文件:
a、打开要创建资源文件的页。
b、切换到“设计”视图
c、在“工具”菜单中,单击“生成局部资源文件“
使用全局资源文件:在Login.aspx页面添加如下代码
<asp:Button ID="Button2" runat="server"
Text="<%$ Resources:LocalizedText, Msg1 %>"/>
在App_GlobalResources文件夹下创建LocalizedText.resx,并添加如下键值:
名称 值
Msg1 按钮
那么Button2就会显示“按钮”文字
全局资源的多语言和局部资源的多语言一样的实现。
全局资源命名规则: (名称可以随意命名)
a、名称.语言.resx
b、名称.语言-区域性.resx