ASP.NET 在多语言网站 C# 中保留所选语言?
ASP.NET keeping the selected language in a multilingual website C#?
这是我的代码,主要问题是当我 select 我想要的语言时,它会更改为该语言,但如果我点击另一个网页,它会变成原来的网页。
示例:我 select 英语,然后它将所有页面更改为英语,但如果我单击页面中的另一个 link,语言将更改为默认语言。
这是代码。希望有人能帮助我。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Globalization;
using System.Resources;
namespace Jaltepec
{
public partial class MainMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
cargaComboLenguajes();
}
}
private void cargaComboLenguajes()
{
String lenguage = Request.QueryString["lenguaje"] == null ? "" : Request.QueryString["lenguaje"];
if (lenguage == "en")
{
cmbIdioma.SelectedValue = "en-us";
}
else
{
cmbIdioma.SelectedValue = "es-mx";
}
}
protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
{
string language = cmbIdioma.SelectedValue;
if (!string.IsNullOrEmpty(language))
{
if (language.EndsWith("en-us"))
{
Response.Redirect("Default.aspx?lenguaje=en");
}
else
{
Response.Redirect("Default.aspx?lenguaje=es");
}
}
}
}
}
您似乎只是在为该单个请求设置语言。您可能希望将所选语言存储在会话 cookie 中,以便您可以在每次页面请求时对其进行评估。
在 asp.net 应用程序上实施全球化时可能值得拥有 google 最佳实践,例如:
http://afana.me/archive/2011/01/14/aspnet-mvc-internationalization.aspx/
private void cargaComboLenguajes()
{
if (Session["cmbIdioma"].ToString() != "")
{
cmbIdioma.SelectedValue = Session["cmbIdioma"].ToString();
}
else
{
cmbIdioma.SelectedValue = "en-us";
Session["cmbIdioma"] = "en-us";
}
}
protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
{
string language = cmbIdioma.SelectedValue;
if (!string.IsNullOrEmpty(language))
{
Session["cmbIdioma"] = cmbIdioma.SelectedValue.ToString();
Response.Redirect("Default.aspx?lenguaje=" + Session["cmbIdioma"].ToString());
}
}
这是我的代码,主要问题是当我 select 我想要的语言时,它会更改为该语言,但如果我点击另一个网页,它会变成原来的网页。 示例:我 select 英语,然后它将所有页面更改为英语,但如果我单击页面中的另一个 link,语言将更改为默认语言。
这是代码。希望有人能帮助我。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Globalization;
using System.Resources;
namespace Jaltepec
{
public partial class MainMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
cargaComboLenguajes();
}
}
private void cargaComboLenguajes()
{
String lenguage = Request.QueryString["lenguaje"] == null ? "" : Request.QueryString["lenguaje"];
if (lenguage == "en")
{
cmbIdioma.SelectedValue = "en-us";
}
else
{
cmbIdioma.SelectedValue = "es-mx";
}
}
protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
{
string language = cmbIdioma.SelectedValue;
if (!string.IsNullOrEmpty(language))
{
if (language.EndsWith("en-us"))
{
Response.Redirect("Default.aspx?lenguaje=en");
}
else
{
Response.Redirect("Default.aspx?lenguaje=es");
}
}
}
}
}
您似乎只是在为该单个请求设置语言。您可能希望将所选语言存储在会话 cookie 中,以便您可以在每次页面请求时对其进行评估。
在 asp.net 应用程序上实施全球化时可能值得拥有 google 最佳实践,例如:
http://afana.me/archive/2011/01/14/aspnet-mvc-internationalization.aspx/
private void cargaComboLenguajes()
{
if (Session["cmbIdioma"].ToString() != "")
{
cmbIdioma.SelectedValue = Session["cmbIdioma"].ToString();
}
else
{
cmbIdioma.SelectedValue = "en-us";
Session["cmbIdioma"] = "en-us";
}
}
protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
{
string language = cmbIdioma.SelectedValue;
if (!string.IsNullOrEmpty(language))
{
Session["cmbIdioma"] = cmbIdioma.SelectedValue.ToString();
Response.Redirect("Default.aspx?lenguaje=" + Session["cmbIdioma"].ToString());
}
}