<
appSettings
>
< add key = " DefaultCulture " value = " zh-cn " />
< add key = " CNCulture " value = " zh-cn " />
< add key = " ENCulture " value = " en-us " />
</ appSettings >
< add key = " DefaultCulture " value = " zh-cn " />
< add key = " CNCulture " value = " zh-cn " />
< add key = " ENCulture " value = " en-us " />
</ appSettings >
1 首先有WEB配置文件中写入以下的
2.添加资源文件
右键添加新项目,选中Assembly Resource File,命名为strings.en-us.resx和strings.zh-cn.resx,然后配置如下
<?
xml version="1.0" encoding="utf-8"
?>
< root >
< xsd:schema id ="root" xmlns ="" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:msdata ="urn:schemas-microsoft-com:xml-msdata" >
< xsd:element name ="root" msdata:IsDataSet ="true" >
< xsd:complexType >
< xsd:choice maxOccurs ="unbounded" >
< xsd:element name ="data" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
< xsd:element name ="comment" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="2" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" />
< xsd:attribute name ="type" type ="xsd:string" />
< xsd:attribute name ="mimetype" type ="xsd:string" />
</ xsd:complexType >
</ xsd:element >
< xsd:element name ="resheader" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" use ="required" />
</ xsd:complexType >
</ xsd:element >
</ xsd:choice >
</ xsd:complexType >
</ xsd:element >
</ xsd:schema >
< resheader name ="ResMimeType" >
< value > text/microsoft-resx </ value >
</ resheader >
< resheader name ="Version" >
< value > 1.0.0.0 </ value >
</ resheader >
< resheader name ="Reader" >
< value > System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< resheader name ="Writer" >
< value > System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< data name ="LoginName" >
< value > Username </ value >
</ data >
< data name ="Password" >
< value > Password </ value >
</ data >
</ root >
< root >
< xsd:schema id ="root" xmlns ="" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:msdata ="urn:schemas-microsoft-com:xml-msdata" >
< xsd:element name ="root" msdata:IsDataSet ="true" >
< xsd:complexType >
< xsd:choice maxOccurs ="unbounded" >
< xsd:element name ="data" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
< xsd:element name ="comment" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="2" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" />
< xsd:attribute name ="type" type ="xsd:string" />
< xsd:attribute name ="mimetype" type ="xsd:string" />
</ xsd:complexType >
</ xsd:element >
< xsd:element name ="resheader" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" use ="required" />
</ xsd:complexType >
</ xsd:element >
</ xsd:choice >
</ xsd:complexType >
</ xsd:element >
</ xsd:schema >
< resheader name ="ResMimeType" >
< value > text/microsoft-resx </ value >
</ resheader >
< resheader name ="Version" >
< value > 1.0.0.0 </ value >
</ resheader >
< resheader name ="Reader" >
< value > System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< resheader name ="Writer" >
< value > System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< data name ="LoginName" >
< value > Username </ value >
</ data >
< data name ="Password" >
< value > Password </ value >
</ data >
</ root >
<?
xml version="1.0" encoding="utf-8"
?>
< root >
< xsd:schema id ="root" xmlns ="" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:msdata ="urn:schemas-microsoft-com:xml-msdata" >
< xsd:element name ="root" msdata:IsDataSet ="true" >
< xsd:complexType >
< xsd:choice maxOccurs ="unbounded" >
< xsd:element name ="data" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
< xsd:element name ="comment" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="2" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" />
< xsd:attribute name ="type" type ="xsd:string" />
< xsd:attribute name ="mimetype" type ="xsd:string" />
</ xsd:complexType >
</ xsd:element >
< xsd:element name ="resheader" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" use ="required" />
</ xsd:complexType >
</ xsd:element >
</ xsd:choice >
</ xsd:complexType >
</ xsd:element >
</ xsd:schema >
< resheader name ="ResMimeType" >
< value > text/microsoft-resx </ value >
</ resheader >
< resheader name ="Version" >
< value > 1.0.0.0 </ value >
</ resheader >
< resheader name ="Reader" >
< value > System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< resheader name ="Writer" >
< value > System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< data name ="LoginName" >
< value > 用户名 </ value >
</ data >
< data name ="Password" >
< value > 密码 </ value >
</ data >
</ root >
< root >
< xsd:schema id ="root" xmlns ="" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:msdata ="urn:schemas-microsoft-com:xml-msdata" >
< xsd:element name ="root" msdata:IsDataSet ="true" >
< xsd:complexType >
< xsd:choice maxOccurs ="unbounded" >
< xsd:element name ="data" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
< xsd:element name ="comment" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="2" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" />
< xsd:attribute name ="type" type ="xsd:string" />
< xsd:attribute name ="mimetype" type ="xsd:string" />
</ xsd:complexType >
</ xsd:element >
< xsd:element name ="resheader" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name ="value" type ="xsd:string" minOccurs ="0" msdata:Ordinal ="1" />
</ xsd:sequence >
< xsd:attribute name ="name" type ="xsd:string" use ="required" />
</ xsd:complexType >
</ xsd:element >
</ xsd:choice >
</ xsd:complexType >
</ xsd:element >
</ xsd:schema >
< resheader name ="ResMimeType" >
< value > text/microsoft-resx </ value >
</ resheader >
< resheader name ="Version" >
< value > 1.0.0.0 </ value >
</ resheader >
< resheader name ="Reader" >
< value > System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< resheader name ="Writer" >
< value > System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 </ value >
</ resheader >
< data name ="LoginName" >
< value > 用户名 </ value >
</ data >
< data name ="Password" >
< value > 密码 </ value >
</ data >
</ root >
3.在Global.asax写如下代码
protected
void
Application_BeginRequest(Object sender, EventArgs e)
... {
try
...{
if(Request.Cookies["CultureResource"]!=null)
Thread.CurrentThread.CurrentCulture=new CultureInfo(Request.Cookies["CultureResource"].Value);
else
Thread.CurrentThread.CurrentCulture=new CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture;
}
catch(Exception)
...{
Thread.CurrentThread.CurrentCulture=new CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
}
}
... {
try
...{
if(Request.Cookies["CultureResource"]!=null)
Thread.CurrentThread.CurrentCulture=new CultureInfo(Request.Cookies["CultureResource"].Value);
else
Thread.CurrentThread.CurrentCulture=new CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture;
}
catch(Exception)
...{
Thread.CurrentThread.CurrentCulture=new CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
}
}
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
using System.Threading;
using System.Resources;
using System.Globalization;
using System.Diagnostics;
using System.Reflection;
namespace Document
... {
/**//**//**//// <summary>
/// Summary description for Login.
/// </summary>
public class Login : System.Web.UI.Page
...{
protected System.Web.UI.WebControls.TextBox txtLoginName;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
private void Page_Load(object sender, System.EventArgs e)
...{
Label1.Text = Resource("LoginName");
Label2.Text = Resource("Password");
}
Web Form Designer generated codeWeb Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//**//**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
...{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
ResourceResource#region Resource
public string Resource(string key)
...{
string resourceValue = null;
CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = new ResourceManager("Document.strings", Assembly.GetExecutingAssembly());
resourceValue = rm.GetString(key,ci);
return resourceValue;
}
#endregion
private void Button2_Click(object sender, System.EventArgs e)
...{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["ENCulture"].ToString());
System.Web.UI.Page currentPage= (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());
}
private void Button1_Click(object sender, System.EventArgs e)
...{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["CNCulture"].ToString());
System.Web.UI.Page currentPage= (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());
}
private void UpdateCultureCookie(string culture)
...{
if(Request.Cookies["CultureResource"] != null)
...{
Response.Cookies["CultureResource"].Value = culture;
Response.Cookies["CultureResource"].Expires = System.DateTime.Now.AddDays(30);
}
else
...{
HttpCookie cultureCookie = new HttpCookie("CultureResource");
cultureCookie.Value = culture;
cultureCookie.Expires = System.DateTime.Now.AddDays(30);
Response.Cookies.Add(cultureCookie);
}
}
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
using System.Threading;
using System.Resources;
using System.Globalization;
using System.Diagnostics;
using System.Reflection;
namespace Document
... {
/**//**//**//// <summary>
/// Summary description for Login.
/// </summary>
public class Login : System.Web.UI.Page
...{
protected System.Web.UI.WebControls.TextBox txtLoginName;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
private void Page_Load(object sender, System.EventArgs e)
...{
Label1.Text = Resource("LoginName");
Label2.Text = Resource("Password");
}
Web Form Designer generated codeWeb Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//**//**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
...{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
ResourceResource#region Resource
public string Resource(string key)
...{
string resourceValue = null;
CultureInfo ci = CultureInfo.CurrentCulture;
ResourceManager rm = new ResourceManager("Document.strings", Assembly.GetExecutingAssembly());
resourceValue = rm.GetString(key,ci);
return resourceValue;
}
#endregion
private void Button2_Click(object sender, System.EventArgs e)
...{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["ENCulture"].ToString());
System.Web.UI.Page currentPage= (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());
}
private void Button1_Click(object sender, System.EventArgs e)
...{
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["CNCulture"].ToString());
System.Web.UI.Page currentPage= (System.Web.UI.Page)this;
Response.Redirect(currentPage.Request.Url.ToString());
}
private void UpdateCultureCookie(string culture)
...{
if(Request.Cookies["CultureResource"] != null)
...{
Response.Cookies["CultureResource"].Value = culture;
Response.Cookies["CultureResource"].Expires = System.DateTime.Now.AddDays(30);
}
else
...{
HttpCookie cultureCookie = new HttpCookie("CultureResource");
cultureCookie.Value = culture;
cultureCookie.Expires = System.DateTime.Now.AddDays(30);
Response.Cookies.Add(cultureCookie);
}
}
}
}