Bonjour à toutes / tous,
Une fois encore je viens réclamer votre aide. Le contexte : Une application Web asp.net classique avec MasterPage, que je tente d'internationaliser. J'ai bien sur lu la FAQ et essayer de la mettre en oeuvre, même chose pour les articles msdn et le tuto developpez Comme vous le devinez cela ne fonctionne pas, ou disons que partiellement. je souhaite que l'utilisateur puisse changer la langue d'affichage du site sans passer par les options du navigateur, pour cela j'ai créer une Dropdownlist avec 2 langues : fr-FR et en-US. Lorsque l'utilisateur change de langue voici le code effectué :Je récupère bien la langue en Session, lors du Page_load dans la MasterPage, je vérifie si une langue est présente en session, sinon je prends la langue du navigateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 protected void DropDownListSelectLanguage_SelectedIndexChanged(object sender, EventArgs e) { //store requested language as new culture in the session Thread.CurrentThread.CurrentUICulture = new CultureInfo(DropDownListSelectLanguage.SelectedValue); Session["user-langage"] = DropDownListSelectLanguage.SelectedValue; //reload last requested page with new culture //Server.Transfer(Request.Path); Response.Redirect(Request.Path); }Mon problème est que la langue est bien récupérée mais ne s'applique tout simplement pas aux controls statiques de la 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 protected void Page_Load(object sender, EventArgs e) { AspUtility.SessionVars Currentsession = new AspUtility.SessionVars(); if (!IsPostBack) { if (Session["user-langage"] != null) { CultureInfo CurrentCulture = new CultureInfo(Session["user-langage"].ToString()); Thread.CurrentThread.CurrentUICulture = CurrentCulture; } else { CultureInfo CurrentCulture = new CultureInfo(Request.UserLanguages[0]); Thread.CurrentThread.CurrentUICulture = CurrentCulture; } DropDownListSelectLanguage.SelectedValue = Thread.CurrentThread.CurrentUICulture.ToString();
Les labels, les onglets du Menu (ItemMenu) etc.. ne se traduisent pas.
Voici leur déclaration : La première étant la MasterPage et la deuxième la page de login
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 <div class="LanguageBox"> <asp:Image ID="LanguageSelectedImg" runat="server" /> <asp:DropDownList ID="DropDownListSelectLanguage" runat="server" Height="20px" Width="101px" AutoPostBack="true" onselectedindexchanged="DropDownListSelectLanguage_SelectedIndexChanged" > <asp:ListItem Value="en-US">English</asp:ListItem> <asp:ListItem Value="fr-FR">Français</asp:ListItem> </asp:DropDownList> <asp:Button ID="btn_logout" runat="server" Text="<%$ Resources:page_consumer, button_logout %>" Font-Names="Verdana" Font-Size="Small" OnClick="logout_click" Visible="false" /> </div> </div> </div> </div> <div class="clear hideSkiplink"> <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" Visible="false"> <Items> <asp:MenuItem NavigateUrl="~/Order_Category.aspx" Value="<%$ Resources:ItemMenu, commander %>" /> <asp:MenuItem NavigateUrl="~/MyLine.aspx" Text="<%$ Resources:ItemMenu, Inventaire %>" /> <asp:MenuItem NavigateUrl="~/consumption.aspx" Text="<%$ Resources:ItemMenu, Consommation %>" /> <asp:MenuItem NavigateUrl="~/About.aspx" Text="<%$ Resources:ItemMenu, Support %>" /> <asp:MenuItem NavigateUrl="~/FAQ.aspx" Text="<%$ Resources:ItemMenu, FAQ %>" /> <asp:MenuItem NavigateUrl="~/MyAccount.aspx" Value="<%$ Resources:ItemMenu, Mon_compte %>" /> <asp:MenuItem NavigateUrl="~/Survey.aspx" Value="<%$ Resources:ItemMenu, Enquete %>" /> </Items> </asp:Menu> </div> </div>Page_login et ItemMenu sont les fichiers .resx dans lesquels figurent les traductions.
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 <ContentTemplate> <div class="content"> <div class="Log"> <asp:Label ID="label_email" runat="server" Text="<%$ Resources:page_login, label_email %>" Class="Label" Width="100px" /> <igtxt:WebTextEdit ID="email" runat="server" EnableAppStyling="True" Width="250px" Height="22px" class="txtEdit" Style="margin-bottom: 0px"> </igtxt:WebTextEdit> </div> <div class="Log"> <asp:Label ID="label_pwd" runat="server" Text="<%$ Resources:page_login, label_pwd %>" class="Label" Width="100px" /> <igtxt:WebTextEdit ID="pwd" runat="server" EnableAppStyling="True" Width="250px" Height="22px" class="txtEdit" PasswordMode="True"> </igtxt:WebTextEdit> </div> <div class="Log" style="text-align: center"> <asp:Button ID="btn_log" runat="server" Text="<%$ Resources:page_login, button_login %>" OnClick="btn_log_Click" Style="height: 26px" /> </div> <div style="text-align: center"> <asp:Label ID="error" runat="server" Font-Bold="true"></asp:Label> <br /> <br /> <asp:Label CssClass="info" ID="LabelInfoLogin" runat="server" Font-Italic="true" ForeColor="GrayText" Text="<%$ Resources:page_login, info_Login %>"> </asp:Label> </div> </div> </ContentTemplate>
Voyez-vous quelques chose que j'ai fait de travers ? Si oui merci de me le dire, je suis perdu depuis 1 jours je ne vois plus de solution :s.
Partager