多语言翻译回发问题 [英] multi Language translation post back problem

查看:71
本文介绍了多语言翻译回发问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用下面的代码它可以正常翻译,在一种形式我在下拉菜单上有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆