多语言翻译回发问题 [英] multi Language translation post back problem
本文介绍了多语言翻译回发问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用下面的代码它可以正常翻译,在一种形式我在下拉菜单上有AutoPostBack时页面自动回发它再次将aspform的语言从法语改为英语。
如何防止在回发时更改语言
I am using below code it work fine for translating , in one form i have "AutoPostBack" on dropdown when the page auto post back it changes the language of the aspform from french to english again.
how can i prevent changing the languag on postback
<asp:DropDownList ID="ddlanguage" runat="server"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
AutoPostBack="True">
<asp:ListItem Value="en">English</asp:ListItem>
<asp:ListItem Value="ar">Arabic</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button2" runat="server" Height="23px"
Text="<%$Resources:Resource, name%>" Width="100px"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Height="23px"
Text="<%$Resources:Resource, passwrd%>" Width="100px"
onclick="Button1_Click" />
global.asax
global.asax
void Application_BeginRequest(Object sender, EventArgs e)
{
// Code that runs on application startup
HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"];
if (cookie != null && cookie.Value != null)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
}
}
c#
c#
using System.Globalization;
using System.Threading;
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack){
if (Session["ddindex"] != null) {
ddlanguage.SelectedValue = Session["ddindex"].ToString();
ddlanguage.SelectedIndex = Convert.ToInt32(Session["ddindex"].ToString());
}
else{
ddlanguage.SelectedValue = Thread.CurrentThread.CurrentCulture.Name;
}
}
}
protected void ddlanguage_SelectedIndexChanged(object sender, EventArgs e)
{
Session["language"] = ddlanguage.SelectedValue;
//Sets the cookie that is to be used by Global.asax
HttpCookie cookie = new HttpCookie("CultureInfo");
cookie.Value = ddlanguage.SelectedValue;
Response.Cookies.Add(cookie);
//Set the culture and reload for immediate effect.
//Future effects are handled by Global.asax
Thread.CurrentThread.CurrentCulture = new CultureInfo(ddlanguage.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(ddlanguage.SelectedValue);
if (cookie.Value == "en"){
Session["ddindex"] = 0;
}
else if (cookie.Value == "fr"){
Session["ddindex"] = 1;
}
Server.Transfer(Request.Path);
}
}
推荐答案
资源:资源,名称%> 宽度 = 100px
< span class =code-attribute> onclick = Button1_Click / >
< asp:按钮 ID = Button2 runat = server 高度 = 23px
< span class =code-attribute> 文字 = <%
Resources:Resource, name%>" Width="100px" onclick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Height="23px" Text="<%
R资源:资源,密码%> 宽度 = 100px
< span class =code-attribute> onclick = Button1_Click / >
Resources:Resource, passwrd%>" Width="100px" onclick="Button1_Click" />
global.asax
global.asax
void Application_BeginRequest(Object sender, EventArgs e)
{
// Code that runs on application startup
HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"];
if (cookie != null && cookie.Value != null)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
}
}
c#
c#
using System.Globalization;
using System.Threading;
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack){
if (Session["ddindex"] != null) {
ddlanguage.SelectedValue = Session["ddindex"].ToString();
ddlanguage.SelectedIndex = Convert.ToInt32(Session["ddindex"].ToString());
}
else{
ddlanguage.SelectedValue = Thread.CurrentThread.CurrentCulture.Name;
}
}
}
protected void ddlanguage_SelectedIndexChanged(object sender, EventArgs e)
{
Session["language"] = ddlanguage.SelectedValue;
//Sets the cookie that is to be used by Global.asax
HttpCookie cookie = new HttpCookie("CultureInfo");
cookie.Value = ddlanguage.SelectedValue;
Response.Cookies.Add(cookie);
//Set the culture and reload for immediate effect.
//Future effects are handled by Global.asax
Thread.CurrentThread.CurrentCulture = new CultureInfo(ddlanguage.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(ddlanguage.SelectedValue);
if (cookie.Value == "en"){
Session["ddindex"] = 0;
}
else if (cookie.Value == "fr"){
Session["ddindex"] = 1;
}
Server.Transfer(Request.Path);
}
}
这篇关于多语言翻译回发问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文