public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { string language = "en-us"; if (Session["Language"] != null) language = (string)Session["Language"]; if (Session["Language"] == null) { if (this.Request.Headers.Count > 0) { if (this.Request.Headers.GetValues("Accept-Language").Length > 0) //浏览器端的区域 language =this.Request.Headers.GetValues("Accept-Language")[0].ToLower(); } } if (DropDownList1.Items.FindByValue(language) == null) language = this.DropDownList1.Items[0].Value;//如果浏览器端的区域不在列表中,那么取列表中第一个值 for (int i = 0; i < this.DropDownList1.Items.Count; i++) { if (DropDownList1.Items[i].Value.ToLower() == language.ToLower()) { DropDownList1.SelectedIndex = i; break; } }
Resources.Resource1.Culture = new System.Globalization.CultureInfo(language); Session["Language"] = language; } ResourcesChange.setSj(this); //设置相关组件的事件 } protected void DropDownList1_TextChanged(object sender, EventArgs e) { Session["Language"] = DropDownList1.Items[DropDownList1.SelectedIndex].Value; Resources.Resource1.Culture = new System.Globalization.CultureInfo(DropDownList1.Items[DropDownList1.SelectedIndex].Value); } } static class ResourcesChange //静态类用来制定组件事件 { static public void Image1_PreRender(object sender, EventArgs e) { //查找相应资源 if ((sender is System.Web.UI.WebControls.Button)) { System.Web.UI.WebControls.Button button = (System.Web.UI.WebControls.Button)sender; string id = Resources.Resource1.ResourceManager.GetString(button.ID.ToString(), Resources.Resource1.Culture); if (id!=null) button.Text = id; } if (sender is System.Web.UI.WebControls.Image) { Image senderImage = (Image)sender; string id = Resources.Resource1.ResourceManager.GetString(senderImage.ID.ToString(), Resources.Resource1.Culture); if (id != null) senderImage.ImageUrl = "MyImg.aspx?id=" + id; } } static public void setSj(System.Web.UI.Control sender) { foreach (System.Web.UI.Control c in sender.Controls) { if ((c is System.Web.UI.WebControls.Image) ||(c is System.Web.UI.WebControls.Button)) c.PreRender += Image1_PreRender; if (c.HasControls()) setSj(c); } } } 在下面连接中有源码下载 http://www.mybuffet.cn/CSharpAspNet.aspx
方案一,数据库的一张产品表中加上繁体和英文字段,
方案二,做三张表,一张表全为英文,一张表全为简体中文,一张表全为繁体中文
但是,怎么才能用resx文件,在一张页面上分别调用出不同的语言呢?
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string language = "en-us";
if (Session["Language"] != null) language = (string)Session["Language"]; if (Session["Language"] == null)
{
if (this.Request.Headers.Count > 0)
{
if (this.Request.Headers.GetValues("Accept-Language").Length > 0) //浏览器端的区域
language =this.Request.Headers.GetValues("Accept-Language")[0].ToLower();
}
} if (DropDownList1.Items.FindByValue(language) == null) language = this.DropDownList1.Items[0].Value;//如果浏览器端的区域不在列表中,那么取列表中第一个值 for (int i = 0; i < this.DropDownList1.Items.Count; i++)
{
if (DropDownList1.Items[i].Value.ToLower() == language.ToLower())
{
DropDownList1.SelectedIndex = i;
break;
}
}
Resources.Resource1.Culture = new System.Globalization.CultureInfo(language);
Session["Language"] = language;
}
ResourcesChange.setSj(this); //设置相关组件的事件
} protected void DropDownList1_TextChanged(object sender, EventArgs e)
{
Session["Language"] = DropDownList1.Items[DropDownList1.SelectedIndex].Value;
Resources.Resource1.Culture = new System.Globalization.CultureInfo(DropDownList1.Items[DropDownList1.SelectedIndex].Value);
}
}
static class ResourcesChange //静态类用来制定组件事件
{
static public void Image1_PreRender(object sender, EventArgs e)
{
//查找相应资源
if ((sender is System.Web.UI.WebControls.Button))
{
System.Web.UI.WebControls.Button button = (System.Web.UI.WebControls.Button)sender;
string id = Resources.Resource1.ResourceManager.GetString(button.ID.ToString(), Resources.Resource1.Culture);
if (id!=null)
button.Text = id;
}
if (sender is System.Web.UI.WebControls.Image)
{
Image senderImage = (Image)sender;
string id = Resources.Resource1.ResourceManager.GetString(senderImage.ID.ToString(), Resources.Resource1.Culture);
if (id != null)
senderImage.ImageUrl = "MyImg.aspx?id=" + id;
}
} static public void setSj(System.Web.UI.Control sender)
{ foreach (System.Web.UI.Control c in sender.Controls)
{
if ((c is System.Web.UI.WebControls.Image) ||(c is System.Web.UI.WebControls.Button))
c.PreRender += Image1_PreRender;
if (c.HasControls())
setSj(c);
}
}
}
在下面连接中有源码下载
http://www.mybuffet.cn/CSharpAspNet.aspx
http://www.mybuffet.cn/Demo/CSharpforNet/%B9%DC%C0%ED%D4%B1/20091029104625_MyWeb.rar
http://www.mybuffet.cn