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