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

Struts 1 Java Discussion :

[I18N] internationalisation ne marche pas


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut [I18N] internationalisation ne marche pas
    Salut,
    Je veux faire l'internationalisation eb utilisant struts et comme c'est la première fois que je fais ça, j'ai consulter la faq de struts et suivi les instructions mais ça ne marche pas
    Quelqu'un pourrait m'aider please
    Merci

  2. #2
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Salut,

    as tu précisé dans ton strutsconfig :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message-resources parameter="resources.sc" />
    (ce qui signifie que ton .properties est dans WEB-INF/classes/resources)

    as tu mis dans ta page jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:html locale="true">
    (ce qui implique que tu utilises les tags struts-html)

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    oui, j'ai bien mis locale = true dans ma page jsp et j'ai mis dans monstrutsconfig
    <message-resources parametermessage-"com.myapp.struts.MyResourceBundle" />
    car mon fichier .properties se trouve dans com.myapp.struts mais ça ne marche pas. Et si j'ai envie de changer de langue comment il faut faire ?
    C'est-à-dire que j'ai envie que lorsque l'utilisateur veut visualiser le site en anglais alors il lui suffit de cliquer sur un lien ou un drapeau.
    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Le probleme c'est que lorsque je clique sur le lien anglais il me redige vers une page vide de meme lorsque je clique sur le lien français. J'ai fait exactement comme dans la faq struts , j'ai rajouté en plus les liens :
    <html:link href=switch.do?lang='fr'&cty='FR'>FR</html:link>
    <html:link href=switch.do?lang='en'&cty='EN'>EN</html:link>
    et l'action correspondante


  5. #5
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Ton .properties, si je ne dis pas de betises doit se situer dans WEB-INF/classes
    et vu ta config ton bundle doit s'appeler MyResourceBundle.properties

    et apres essaye de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message-resources parameter="XXX.MyResourceBundle"

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Oui, j'ai fais tout ça mais j'ai toujours le meme probleme.
    Voici tout mon cose :
    1. Fichier myResourceBundle :
    default.welcome=hello
    2. dans ma page jsp j'ai fait <html:html locale = "true">
    3. dans struts-config.xml :
    <message-resources parametermessage-resources="MyResourceBundle" />

    en faisant ceci, je n'est ni exception ni rien sauf que je n'observe pa sma page en anglais.

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    J'ai compris d'ou proviens mon erreur. En fait j'ai cru que ce machin est tellemnt magique qu'en mettant default.welcome=hello. Il me traduira tout mon site en anglais.
    Donc dans le . properties, je dois mettre tous les mots qui se trouvent dans mon site mais mon probleme c'est de savoir comment ?
    Par exemple j'ai un lien qui s'appelle dossiers. Pour pouvoir le traduire je met quoi dans mon .properties ?

    Merci infiniment

  8. #8
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    les libellés de tes messages son complètements arbitraires.

    A toi de trouver un solution facile a maintenir.

    Une technique est d'utiliser des mots clé (premier mot type de msg, deuxieme mot nom de la page troisieme mot résumé) :

    exemple :

    label.accueil.msgBienvenue =Bienvenue sur le site
    lien.accueil.dossier =Dossier

    ...

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Par exemple dans ma page JSP j'ai le code suivant :
    <html:link action="./LancerDossierAction.do">Dossiers</html:link>

    J'ai envie d'avoir dossiers en anglais si je séléctionne de visualiser le site en anglais et en français sinon.
    Dans mon . properties je dois mettre quoi exactement.
    ça ne marche pas avec : default.dossiers=folders

  10. #10
    Membre averti
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut
    Salut,

    si dans ton .properties tu met default.dossiers=folders, dans ta jsp tu dois utiliser le tag <bean:message> de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="./LancerDossierAction.do"><bean:message key="default.dossiers"/></html:link>
    J'espère que ça t'aidera...
    Coralie.

  11. #11
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Oui, j'ai fait ce que tu m'a dit mais Tomcat me sort l'exception suivante :
    javax.servlet.jsp.JspException: Exception forwarding for name LancerDossierAction: javax.servlet.ServletException: Missing message for key "default.dossiers"
    org.apache.struts.taglib.logic.ForwardTag.doForward(ForwardTag.java:125)
    org.apache.struts.taglib.logic.ForwardTag.doEndTag(ForwardTag.java:105)
    org.apache.jsp.Bienvenue_jsp._jspx_meth_logic_forward_0(Bienvenue_jsp.java:111)
    org.apache.jsp.Bienvenue_jsp._jspService(Bienvenue_jsp.java:70)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362

    Tu vois c'est quoi l'erreur ??

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut [debutant] changement de langue à la demande


    Je veux pouvoir changer la langue de mon site à la demande de l'utilisateur.
    Pour cela, j'ai fait comme indiqué dans la FAQ Struts à ce lien http://java.developpez.com/faq/strut...18n#langswitch
    mais j'ai quelques problèmes.
    Voici le code que je rajoute dans ma jsp pour faire les liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <html:link href="switch.do?lang='fr'" style="color:#000000">FR</html:link>
    <html:link href="switch.do?lang='en'&cty='US'" style="color:#000000">EN</html:link>

    la classe SwithLangAction que j'ai copier/coller de la FAQ :
    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
    32
    33
    34
    35
    36
    37
    38
    public class SwithLangAction extends Action{
     
        private Object source;
     
        /** Creates a new instance of SwithLangAction */
        public SwithLangAction() {
        }
         public ActionForward perform(ActionMapping mapping, 
                                                     ActionForm form, 
                                                     HttpServletRequest request, 
                                                     HttpServletResponse response)
          throws IOException, ServletException 
       {
          //récupération des paramètres passés et de l'url du referer
          String country = request.getParameter("cty");
          String language = request.getParameter("lang");
          String referer = (String) request.getAttribute("REFERER");
          HttpSession session = request.getSession();
          ActionForward forward = null;
     
          // définition de la locale
          setLocale( request, new Locale( language, country ) );
     
          // redirection vers une page définie par défaut
          if( source==null )
          {
             forward = (mapping.findForward("success"));
          }
          // redirection vers l'url du referrer.
          else 
          {
             forward = new RedirectingActionForward();
             forward.setPath( (String) source);
          }
     
          return forward;
       } 
    }
    Le code que je rajoute pour mapper cette action dans mon fichier de config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <action path="/switch"
                type="fr.edition.eni.action.SwithLangAction"
                name="acceuilForm"
                scope="request"
                input="/acceuilForm.jsp">
                <forward name="success" path="/acceuilForm.jsp"></forward>
                <forward name="erreur" path="/erreur.jsp"></forward>
             </action>
    mon probleme c'est que lorsque je clique sur un des liens, je suis redigé vers une page vide. Je pense que le probleme provient de mon fichier de config mais je n'arrive pas à voir c'est quoi exactement.

    Mercie de bien vouloir m'aider.

  13. #13
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    Alors personne ne peut m'aider ou me dire s'il existe une autre méthode de faire ceci ?
    Pleeeeeeeeeease

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

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 12h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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