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 :

Internationalisation de pages


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut Internationalisation de pages
    Bonjour,
    Pour une application struts (jdk 1.5, struts 1.3.8, tomcat 5.5), je dois développer des pages "internationales", cad qui dépendent de la langue.
    Mais le hic, c'est que ce ne sont pas seulement les libellés qui changent mais aussi la structure de la page... Le code métier/controller est exactement le même quelque soit la langue, ce qui change c'est la disposition des éléments dans la page HTML.
    Donc, il faudrait que je fasse des jsp internationalisées :
    index_fr.jsp
    index_en.jsp
    ... et ça pour toutes les jsp.
    ça, ça me convient....
    ce qui me gène c'est l'appel de ces jsp...
    j'aimerai éviter de faire ça dans mon struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action name="MonForm" path="/init" type="MonAction">
        <forward name="success_fr" path="init/view_fr.do"/>
        <forward name="success_en" path="init/view_en.do"/>
    </action>
    <action foward="/jsp/init_fr.jsp" path="/init/view_fr.do" />
    <action foward="/jsp/init_en.jsp" path="/init/view_en.do" />
    Savez-vous s'il existe un moyen d'internationaliser l'appel des JSP? cad que j'écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action name="MonForm" path="/init" type="MonAction">
        <forward name="success" path="init/view.do"/>
    </action>
    <action foward="/jsp/init.jsp" path="/init/view.do" />
    et que je développe les jsp : init_fr.jsp et init_en.jsp.... et c'est struts qui appellerai la bonne jsp en fonction de la Locale?
    Vous avez des idées...?

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Pourquoi la structure de la page change-t-elle?

    Elle change tant que ca?

    En tout cas je ne crois pas que c'est faisable simplement, il va falloir que tu fasses comme tu étais parti.

    A moins que tu ne mettes un parametre à tous tes forward et que ce parametre contiennent la langue choisi:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <forward name="success" path="init/view_{0}.do"/>
    Et quand tu recupere le forward tu remplaces les parametres par la langue.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par maxf1
    Pourquoi la structure de la page change-t-elle?
    ça, il faut demander aux designers qui s'amusent bcp ;-)
    Citation Envoyé par maxf1
    Elle change tant que ca?
    je ne sais pas encore... mais les designers nous ont prévenu qu'il y aurait des différences entre les pays!

    Citation Envoyé par maxf1
    En tout cas je ne crois pas que c'est faisable simplement, il va falloir que tu fasses comme tu étais parti.

    A moins que tu ne mettes un parametre à tous tes forward et que ce parametre contiennent la langue choisi:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <forward name="success" path="init/view_{0}.do"/>
    Et quand tu recupere le forward tu remplaces les parametres par la langue.
    le coup du {0}, c'est pas mal...ça réduit quand même le struts-config.xml, je ne savais pas qu'on pouvait le faire.
    bon, je vais sûrement partir dans cette voie alors.
    Merci!
    Matthieu

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Salut,

    Pourquoi ne peut garder la meme structure et utiliser les Locale.
    Ensuite avec le tag jstl fmt:message on ecrit les textes.
    Les textes sont ensuite ecrits dans un fchier different pour chaque langue.

    Je developpe des applications a Barcelone, c'est comme ca que nous procedons ici, car toutes les applis sont en 2 langues (minimum) catalan et castillan.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par willoi
    Salut,
    Pourquoi ne peut garder la meme structure et utiliser les Locale.
    Car tout simplement, les structures des pages sont différentes selon les langues... c'est comme ça... je ne peux pas changer ce pré-requis décidé par les designers

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par maxf1
    A moins que tu ne mettes un parametre à tous tes forward et que ce parametre contiennent la langue choisi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <forward name="success" path="init/view_{0}.do"/>
    Et quand tu recupere le forward tu remplaces les parametres par la langue.
    est-ce que tu peux préciser un peu plus ta pensée... car là... je ne vois pas trop comment faire....
    merci d'avance
    Matthieu

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Citation Envoyé par mattheox
    est-ce que tu peux préciser un peu plus ta pensée... car là... je ne vois pas trop comment faire....
    merci d'avance
    Matthieu
    Dans ton cas c'est dommage que les designers soit un peu bete, qu'un button soit ecran en francais ou en allemand ca ne doit pas changer sa place dans la page.

    Tu pourras leur dire qu'ils ont une vision un peu bizarre de designer leur site. Car changer le design veut quasiement dire differente appli selon les langues (en gros).

    En plus des qu'il va y avoir une autre langue il y aura beaucoup de chose à revoir à la place de seuleument quelques fichiers properties


    Sinon pour ma methode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <forward name="success" path="init/view_{0}.do"/>
    c'est pas trop ca car ca t'évitera juste d'ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <forward name="success_fr" path="init/view_fr.do"/>
        <forward name="success_en" path="init/view_en.do"/>
    mais tu sera obligé d'avoir une action pour chaque langue, beurk. Faisable mais beurk, car chaque action aura comme classe la meme action mais pas la meme jsp...

    IL faudrait regarder si ce n'est pas possible de mettre des parametres dans le nom de la jsp vers laquelle tu forward. En gros avoir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action name="MonForm" path="/init" type="MonAction">
        <forward name="success" path="init/view.do"/>
    </action>
    <action forward="/jsp/init_{0}.jsp" path="/init/view.do" />
    Pour tester suffit de faire dans ton action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActionForward actionForward = mapping.findForward("success");
    Object[] obj = new Object[] { "en" };
    String s2 = MessageFormat.format(actionForward.getPath(), obj);
    ActionForward af = new ActionForward(actionForward.getName(), s2, actionForward.getRedirect());
    return af;
    J'espere que ca marchera et surtout que ca t'aidera. Normalement ca marche j'ai testé chez moi. Euh une p'tite precision "en" faut remplacer par la locale qui est utilisé.

    Sinon un truc plus simple est que si les jsp ne change pas enormément il vaut p'etre mieux de faire des conditions dans la jsp. Car sinon ca t'oblige a avoir une jsp pour chaque pays......... Pas mega super surtout pour la maitnenance ==> ya une erreur dans une jsp, on gere combien de pays? 30????? Bon ben 30 modif à faire......

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    merci maxf1 pour ton post..., je vais tester ta suggestion pour ma culture personnelle...
    en effet, j'ai trouvé une autre solution :
    Dans la jsp, init.jsp je fais des includes des init_LANGUE.jsp en fonction de test logic sur la langue.. ce qui permet de ne pas modifier le fichier struts-config.xml...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:equals name="langue" value="fr">
       <%@include file="init_fr.jsp" %>
    </logic:equals>
    <logic:equals name="langue" value="en">
       <%@include file="init_en.jsp" %>
    </logic:equals>

  9. #9
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Oui je pense que c'est mieux ce que tu as fait, ca te permet de spécifier une page par defaut au cas ou juste une langue est différente.
    Et puis comme ca tu a des actions simple sans parametre qui se promene.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/10/2008, 12h42
  2. Pages d'erreur internationalisées
    Par AlienQueen dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 09/09/2008, 15h02
  3. [DisplayTag] Internationalisation du bas de page
    Par c0rwyn dans le forum Taglibs
    Réponses: 1
    Dernier message: 06/08/2008, 14h13
  4. [WebLogic Portal] comment internationaliser ? (titres des pages / book)
    Par d_token dans le forum Portails
    Réponses: 2
    Dernier message: 18/01/2008, 14h37

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