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"> </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
Partager