2017-09-21 9 views
1

Ceci est mon code, le principal problème est lorsque je sélectionne la langue que je veux, cela change la langue, mais si je clique sur une autre page web, il se tourne vers l'original. Exemple: Je sélectionne l'anglais, puis il change toute la page en anglais mais si je clique sur un autre lien dans la page, la langue change à la langue par défaut.ASP.NET conservant la langue sélectionnée dans un site Web multilingue C#?

Voici le code. J'espère que quelqu'un peut m'aider.

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"); 
       } 
      } 
     } 

    } 
} 

Répondre

0
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()); 

     } 
    } 
+0

ressemble à ça ne change pas la langue, mais merci de toute façon. – Elayas

+0

Édité ma réponse. S'il vous plaît essayez maintenant. – Deepak

+0

pour une raison quelconque, il laisse tomber cette erreur « Une exception de type « System.NullReferenceException » a eu lieu dans Jaltepec.dll mais n'a pas été traitée dans le code utilisateur » dans cette partie « si (session [ » cmbIdioma « ]! = » «) » – Elayas

1

On dirait que vous définissez uniquement la langue pour cette requête unique. Vous souhaiterez probablement stocker la langue sélectionnée dans le cookie de session afin de pouvoir l'évaluer à chaque demande de page.

Probablement la peine d'avoir un Google de meilleures pratiques lors de la mise en œuvre la mondialisation sur une application asp.net, par exemple:

http://afana.me/archive/2011/01/14/aspnet-mvc-internationalization.aspx/

+0

Merci, je vais vérifier, eh oui, je veux le garder la même chose en tout. – Elayas