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 :

Internationalisation ASP.NET.. Encore


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut Internationalisation ASP.NET.. Encore
    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é :
    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);
            }
    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
    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();
    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 :
    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>
    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>
    Page_login et ItemMenu sont les fichiers .resx dans lesquels figurent les traductions.

    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.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Petit up,
    j'en profite au passage pour signaler ce que j'ai oublié hier lorsque je lance le site avec un nivagateur configué sur "en-US" pour la langue, la traduction s'effectue correctement et partout. Ce qui me fait penser à une mauvaise construction de la page asp.net malgré la présence d'une fonction InitializeCulture(), j'ai remarqué en debuggant qu'a aucun moment elle est executée.

    Y'a t'il quelques chose de spécial à faire pour passer dans l'Initializeculture() ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut
    Bon après 3 jours,

    voici un tutoriel (anglais) qui explique de façon claire ce qu'il faut faire, il y'a même un exemple de solution. L'important étant que toutes les pages (WebForm) hérite de la classe "BasePage.cs" présente dans le tutoriel :

    Tutoriel Internationalisation

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

Discussions similaires

  1. Internationalisation en ASP.net
    Par pevnet dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 12/05/2009, 23h15
  2. [ASP.NET 2.0] Internationaliser une liste déroulante dynamique
    Par franculo_caoulene dans le forum Débuter
    Réponses: 1
    Dernier message: 12/09/2008, 20h42
  3. internationalisation en asp.net
    Par tortuegenie dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/01/2008, 17h26

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