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 :

Problème d'internationalisation d'une application


Sujet :

ASP.NET

  1. #1
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut Problème d'internationalisation d'une application
    Bonjour,

    j'essaye de réaliser, ce que je pensais simple, l'internationalisation de mon application.

    Description de l'application
    Une master page contenant une liste déroulante contenant Anglais/Français ou English/French suivant la culture. Ces variables sont définies dans un fichier ressources situés dans le répertoire App_GlobalResources.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <tr>
                <td class="TdComboBox">
    &nbsp;
                </td>
                <td>Contact</td>
                <td>
                <asp:DropDownList runat="server" ID="HeaderLanguageComboBox" AutoPostBack="true" onchange="document.getElementById('LanguageChoice').value=this.value;" />
                <input type="text" id="LanguageChoice" name="LanguageChoice"/>
                </td>
             </tr>

    Et le remplissage de ma liste
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected override void OnInit(EventArgs e)
          {
             // REMPLIR la liste déroulante des langues
             listeDll = new List<String>();
             listeDll.Add(Resources.Resource.FRENCH);
             listeDll.Add(Resources.Resource.ENGLISH);
     
             HeaderLanguageComboBox.DataSource = listeDll;
             HeaderLanguageComboBox.DataBind();
     
             base.OnInit(e);
          }

    Vient ensuite une page aspx qui hérite d'une super page. Cette super page surcharge la méthode InitializeCulture.
    Code c# : 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
    rotected override void InitializeCulture()
          {
             string culture = "en";
             if (!String.IsNullOrEmpty(Request.Form["LanguageChoice"]))
             {
                culture = "fr";
             }
             //string culture = Request.Form["LanguageChoice"].ToString();
             // INITIALISER la culture en anglais par défaut
             CultureInfo pCultureInfo = CultureInfo.CreateSpecificCulture(culture);
     
             // AFFECTER la culture au thread courant
             Thread.CurrentThread.CurrentCulture = pCultureInfo;
             Thread.CurrentThread.CurrentUICulture = pCultureInfo;
     
             base.InitializeCulture();
          }

    Au premier appel, ma langue est bien en et j'affiche donc English et French. Lorsque je change ma valeur, mon input est bein rempli et mon Request.Form["LanguageChoice"] a bien la valeur.
    Avec un point d'arrêt à la fin de mon onInit, ma liste déroulante possède bien les valeurs Français et Anglais. Idem dans le Dispose de ma page.

    Mais à l'affichage, rien n'a changé. Ma liste contient toujours English, French.
    J'ai du mal à saisir le pourquoi.

    Auriez-vous une idée ?
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    En ajoutant un EnableViewState à false, il me change bien les valeurs. J'ai du mal à comprendre pourquoi.
    Le fait que je fasse un nouveau bind ne devrait-il pas écraser les valeurs contenues dans le viewstate ?

  3. #3
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Citation Envoyé par jbrasselet Voir le message
    Le fait que je fasse un nouveau bind ne devrait-il pas écraser les valeurs contenues dans le viewstate ?
    Pas du tout, car à ce stade là, le viewState du contrôle est encore vide vu que LoadViewState se déclenche après l’événement OnInit.
    Pour confirmer, deplace ton code de OnInit vers Page_Load sans faire EnableViewState=false, ça devrait marcher.

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Je comprend tout à fait ton explication. Mon problème (en quelque sorte) est le suivant :
    lorsque je met un point d'arrêt dans mon dispose (dernière étape du cycle de vie), ma liste déroulante contient les bonnes valeurs. A l'affichage ce n'est plus le cas. Pourtant le viewstate est passé par là entre temps non ?

  5. #5
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Citation Envoyé par jbrasselet Voir le message
    Pourtant le viewstate est passé par là entre temps non ?
    Certainement. Mais ton problème m'a l'air incohérent. Une fois OnInit terminé (et si je suppose EnableViewState=true), ton DDL sera réinitialiser par viewState. Et forcement si tu regardes la valeur du DDL dans Dispose, tu devras avoir les valeurs qui étaient dans viewState (non pas les valeurs récupérées dans OnInit) et par conséquent ce sont les valeurs qui descendent vers le client. Pourrais-tu le revérifier ?

  6. #6
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    C'est fait et j'ai bien les valeurs du databind... Enfin bref, j'ai une solution de contournement c'est déjà ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/10/2009, 15h33
  2. Problème d'accès depuis une application
    Par Cédric_07 dans le forum Access
    Réponses: 5
    Dernier message: 24/05/2006, 10h21
  3. [MySQL] Problème de tri pour une application
    Par nanor21 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 11/05/2006, 19h08
  4. [Unicode] Internationalisation d'une application
    Par Thierry Laborde dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2003, 20h15

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