当前位置:首页 > Asp.net2.0 多语言网页的实现

Asp.net2.0 多语言网页的实现

点击次数:1101  更新日期:2010-12-30
\n

我昨天结合网上的资料实现了网页的多语言.其中有简体中文,繁体中文,英文三个.主要步骤是:

1.首先建立资源文件strings.resx,再建立strings.en-us.resx,strings.zh-cn.resx,strings.zh_hk.resx.必须要有strings.resx,这个文件可以没有任何内容.但必须有.不然在下面的default.aspx.cs中,visual studio会自动提示把这些资源文件放在App_GlobalResources目录下.


\n

#region Resource
public string Resource(string key)
{
string resourceValue = null;


\n

CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = Resources.strings.ResourceManager;
resourceValue = rm.GetString(key, ci);
return resourceValue;
}
#endregion


\n


中 Resources.strings.ResourceManager就会访问不到

2.应用程序根目录下建立有时候叫做 ASP.NET 应用程序文件Global.asax.增加以下代码

void Application_BeginRequest(object sender, EventArgs e)
{
try
{
if (Request.Cookies["CultureResource"] != null)
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Request.Cookies["CultureResource"].Value);
else
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
}
catch (Exception)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
}

}


\n

每次访问页面时,程序都在运行这段代码一次.不知道有谁能有更好的方法.我觉得这样不是很好.麻烦提示哦!


\n

3.以下是页面的代码

aspx
<TABLE id=”Table1″ align=”center” cellSpacing=”0″ cellPadding=”0″ width=”100%” border=”0″>
<colgroup>
<col width=”50%”>
</col>
<col width=”50%”>
</col>
</colgroup>
<TR>
<TD align=”right”><%=Resource(“language”) %>:</TD>
<TD>
<asp:Button id=”Button1″ runat=”server” Text=”中文” onClick=”Button1_Click”></asp:Button>
<asp:Button id=”Button2″ runat=”server” Text=”英文” onClick=”Button2_Click”></asp:Button>
<asp:Button id=”Button3″ runat=”server” Text=”繁体中文” onClick=”Button3_Click”></asp:Button>
</TD>
</TR>
<TR>
<TD align=”right”>
<asp:Label id=”Label1″ runat=”server”>Label</asp:Label>:</TD>
<TD>
<asp:TextBox id=”txtLoginName” runat=”server” Width=”100%”></asp:TextBox></TD>
</TR>
<TR>
<TD align=”right”>
<asp:Label id=”Label2″ runat=”server”>Label</asp:Label>:</TD>
<TD>
<asp:TextBox id=”txtPassword” runat=”server” Width=”100%”></asp:TextBox></TD>
</TR>
</TABLE>
aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Resources;
using System.Globalization;
using System.Reflection;
using Microsoft.VisualBasic;


\n

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Resource(“LoginName”);
Label2.Text = Resource(“Password”);


\n

}


\n

Resource#region Resource
public string Resource(string key)
{
string resourceValue = null;


\n

CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = Resources.strings.ResourceManager;
resourceValue = rm.GetString(key, ci);
return resourceValue;
}
#endregion


\n


protected void Button1_Click(object sender, EventArgs e)
{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["CNCulture"].ToString());
System.Web.UI.Page currentPage = (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());
}
protected void Button2_Click(object sender, EventArgs e)
{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["ENCulture"].ToString());
System.Web.UI.Page currentPage = (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());


\n

}
}
strings.zh-cn.resx

在视图下增加三个字段
language 请选择语言
LoginName 用户名
Password 密码


\n

同样strings.zh-hk.resx
language 請選擇語言
LoginName 用戶名
Password 密碼


\n

string.en-us.resx
language Please Select Language
LoginName Username
Password Password


来源:http://www.cnblogs.com/harryguo

\n