IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[ASP .NET2] Culture et master page


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 50
    Par défaut [ASP .NET2] Culture et master page
    Bonjour a tous
    je possede un site web qui contient une master page gerant le bilinguisme.
    Dans cette master page j'ai donc une combobox qui me permet de faire un choix entre francais et anglais.

    J'ai deux problemes :
    1) Au moment ou j'effectue un changement de langue, j'ai une rechargement de ma page. Mes libellés passent bien dans la culture choisie, par contre mes boutons eux restent dans la culture de base. (mes ressources sont gérées dans un fichier resx lié à la page tandis que mes boutons sont gérés dans un fichier global resx, peut etre est ce la raison de mon erreur)

    2) Lorsque je passe d'une page a une autre, je recupere systématiquement ma culture de base et pert donc ainsi la valeur précédemment rentrée


    Voici des bouts de mon code pour plus d'infos

    Dans la master page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public partial class PortFolioMasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpCookie cookie = new HttpCookie("UserLanguage");
     
            if (LangueSelect.SelectedValue.Equals("0"))
                cookie.Value = "0";
            else
                cookie.Value = "1";
            Response.SetCookie(cookie);
        }
     
        protected void language_change(Object sender, EventArgs e)
        {
        }
    }

    Dans le fichier global.asax.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     void Application_BeginRequest(Object sender, EventArgs e)
            {
                if (Check.IsNotNul(Request.UserLanguages))
                {
                    string lang = string.Empty;//default to the invariant culture
                    HttpCookie cookie = Request.Cookies["UserLanguage"];
     
                    if (cookie != null && cookie.Value != null)
                    {
                        if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.Equals("fr"))
                        {
                            lang = cookie.Value;
                            if (lang.Equals("0"))
                            {
                                lang = "fr-FR";
                            }
                            else if (lang.Equals("1"))
                            {
                                lang = "en-US";
                            }
                        }
                        else
                        {
                            lang = cookie.Value;
                            if (lang.Equals("0"))
                            {
                                lang = "en-US";
                            }
                            else if (lang.Equals("1"))
                            {
                                lang = "fr-FR";
                            }
                        }
                    }
                    else
                    {
                        if (Request.UserLanguages[0].Contains("en-us"))
                            lang = "en-US";
                        else
                            lang = "fr-FR";
                    }
     
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);
                    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
                }
            }
    Un gros merci par avance pour vos éléments d'aide et de reponse

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu crées un nouveau cookie à chaque chargement donc c'est normal que tu perdes ton choix de langue.
    Faut d'abord tester s'il existe avant d'en créer un nouveau

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 50
    Par défaut
    tu veux dire que je devrais enlever mon code de ma master page si j'ai deja un cookie?
    J'ai essaye mais ca ne marche pas mieux...
    Pourrais tu m'en dire plus stp?

  4. #4
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    salut

    dans le pageLoad de ton masterPage tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpCookie cookie = new HttpCookie("UserLanguage");
    donc a chaque appel de ton masterpage tu créé un nouveau cookie

    il faut que tu fasses un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(cookie(userLangage) existe pas)
    {
    HttpCookie cookie = new HttpCookie("UserLanguage");
    }
    else
    {
    je recupere les valeurs
    }

  5. #5
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 50
    Par défaut
    j'avais compris l'explication, mais le test ne fonctionne pas mieux..
    Du coup je passe sur des essais via parametres HTTP....

Discussions similaires

  1. [ASP.NET C# 2.0] Master Pages
    Par mow dans le forum ASP.NET
    Réponses: 6
    Dernier message: 29/09/2008, 16h58
  2. Réponses: 6
    Dernier message: 14/08/2007, 08h26
  3. Réponses: 3
    Dernier message: 03/08/2007, 18h59
  4. Master Page asp.net 1.1
    Par groupedsi dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/06/2007, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo