我昨天结合网上的资料实现了网页的多语言.其中有简体中文,繁体中文,英文三个.主要步骤是:
1.首先建立资源文件strings.resx,再建立 strings.en-us.resx,strings.zh-cn.resx,strings.zh_hk.resx.必须要有strings.resx,这个文件可以没有任何内容.但必须有.不然在下面的default.aspx.cs中,visual studio会自动提示把这些资源文件放在App_GlobalResources目录下.
2.应用程序根目录下建立有时候叫做 ASP.NET 应用程序文件Global.asax.增加以下代码
每次访问页面时,程序都在运行这段代码一次.不知道有谁能有更好的方法.我觉得这样不是很好.麻烦提示哦!
3.以下是页面的代码
aspx
aspx.cs
在视图下增加三个字段
同样 strings.zh-hk.resx
string.en-us.resx
1.首先建立资源文件strings.resx,再建立 strings.en-us.resx,strings.zh-cn.resx,strings.zh_hk.resx.必须要有strings.resx,这个文件可以没有任何内容.但必须有.不然在下面的default.aspx.cs中,visual studio会自动提示把这些资源文件放在App_GlobalResources目录下.
#region Resource
public string Resource(string key)
{
string resourceValue = null;
CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = Resources.strings.ResourceManager;
resourceValue = rm.GetString(key, ci);
return resourceValue;
}
#endregion
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());
}
}
{
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());
}
}
每次访问页面时,程序都在运行这段代码一次.不知道有谁能有更好的方法.我觉得这样不是很好.麻烦提示哦!
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 >
< 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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Resource("LoginName");
Label2.Text = Resource("Password");
}
#region Resource
public string Resource(string key)
{
string resourceValue = null;
CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = Resources.strings.ResourceManager;
resourceValue = rm.GetString(key, ci);
return resourceValue;
}
#endregion
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());
}
}
strings.zh-cn.resxusing 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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Resource("LoginName");
Label2.Text = Resource("Password");
}
#region Resource
public string Resource(string key)
{
string resourceValue = null;
CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = Resources.strings.ResourceManager;
resourceValue = rm.GetString(key, ci);
return resourceValue;
}
#endregion
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());
}
}
在视图下增加三个字段
language | 请选择语言 |
LoginName | 用户名 |
Password | 密码 |
同样 strings.zh-hk.resx
language | 請選擇語言 |
LoginName | 用戶名 |
Password | 密碼 |
string.en-us.resx
language | Please Select Language |
LoginName | Username |
Password | Password |