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

Symfony PHP Discussion :

Régionaliser une page HTML


Sujet :

Symfony PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Régionaliser une page HTML
    Bonjour à tous.

    Dans une application, j'ai une page PHP qui affiche les Conditions Générales d'Utilisation (CGU) que tout nouvel utilisateur doit accepter. Ces CGU doivent être traduites dans plusieurs langues et doivent apparaître dans la page web (pas de document PDF).

    Contrairement au reste de cette page PHP (template, mini-formulaire pour que l'utilisateur confirme, etc.), les CGU forment une partie statique. C'est un texte relativement long et mis en forme (chapitres, tableaux, etc.). C'est donc un long bout de code HTML, qui ne colle à aucun template (puisque la forme des CGU peut varier complètement d'une langue à l'autre).

    Les dictionnaires XLIFF du répertoire i18n sont au format XML, donc inclure du code HTML semble exclu (dans la doc, je n'ai vu que du texte brut, éventuellement avec des conditions, mais pas de balises HTML).

    Ce que je souhaiterais, c'est avoir un fichier par langue pour les CGU (chaque fichier contient un morceau de code HTML). Du coup, la partie CGU de ma page PHP devient un simple contenu régionalisé, intégré avec l'équivalent d'un include. Après avoir lu la doc ( et ), je n'ai pas vraiment trouvé comment régionaliser un contenu HTML de taille conséquente, stocké hors base de données.

    Quelle méthode me conseillez-vous, pour respecter au mieux l'architecture de symfony et tirer le meilleur parti de sa puissance ?

    Merci.

  2. #2
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Alors la tu fait juste une variable commune pour toutes tes langues.
    et dans le définition tu mets ton et de l'HTML (meme si c'est à éviter)

    Etant donné que tu n'as pas le meme template pour chaque traduction alors tu n'as plus le choix que de mettre des balises HTML dans la traduction

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour kenny.kev, merci pour ta réponse.

    Excuse-moi, ça vient peut-être de moi, mais je n'ai pas compris ta solution. Pourrais-tu être plus précis s'il te plait ?
    Que contient cette variable commune ? Est-elle propre à la vue, à l'action, à toute l'application ?

    D'ailleurs, s'il était possible d'éviter les choses qui sont du genre, précisément, "à éviter", ce serait mieux.

    Merci.

  4. #4
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Oui pardon, je vais détailler un peu plus ^^.

    Avec le i18n tu as des fichiers xml.
    Pour faire de l’internationalisation, tu dois dans le template écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo __('cgu'); ?>
    Et dans les fichiers de traduction correspondant à la langue souhaité tu mets tout ton texte.

    le i18n n'est pas forcément ta phrase = la traduction ça peut être un id = traduction, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <trans-unit id="60001">
         <source>cgu</source>
         <target>toute ta cgu</target>
    </trans-unit>
    Normalement tu dois éviter de mettre de l'HTML dans les fichiers de traductions pour que ce soit plus facile à maintenir mais la dans ton cas tu n'as pas le choix car tu une présentation différente en fonction de la langue si j'ai bien compris.

    De plus, ça ne sera pas vraiment un problème car tout le contenu sera ta page.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voilà, tu as bien compris : les CGU de chaque langue formeront un bloc HTML assez conséquent et rien ne me garantit que j'aurai les mêmes sections, le même ordre, les mêmes tableaux, etc.

    Merci pour les rappels. Mais en l'occurrence, l'i18n avec le format XLIFF et le helper correspondant, je maîtrise.

    Mon besoin ici ne semble pas rentrer dans les cas d'utilisation standard de ces fichiers XML. Tu semblais apporter une solution dans ta première réponse, avec une variable commune à toutes les langues, etc. C'est ça qui m'intéresse, en fait.

    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ah mais attends, je reviens sur ta solution : en fait, ce que tu me proposes, c'est d'insérer un gros bloc de code HTML entre les balises <target> du fichier de langue ?

    Hum... En effet ça n'a pas l'air tellement conseillé. En tout cas, comme je le disais dans mon premier message, je n'ai vu aucun exemple de ce type dans la documentation "officielle".

    Edit: ajouter des balises HTML aux chaînes localisées ne fonctionne pas. Je viens de faire le test très simple (balises <p>texte</p>), en vain.

    Si on peut me proposer une autre solution, je suis preneur.

    Merci.
    Dernière modification par Invité ; 18/06/2012 à 12h04.

  7. #7
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    Oui cette solution est accepter sans problème, le projet que j'ai repris il y a quelque mois est fait comme ça.

    http://oldforum.symfony-project.org/index.php/t/10655/

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je viens d'éditer mon message précédent : cette solution ne fonctionne pas.
    J'aimerais si possible éviter d'avoir à remplacer tous les chevrons (> et <) par leurs codes XML ou Unicode ou que sais-je, parce que pour la maintenance, ce n'est pas top.
    Merci.
    Dernière modification par Invité ; 18/06/2012 à 12h50.

  9. #9
    Membre éclairé Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Points : 816
    Points
    816
    Par défaut
    La seule vrai solution c'est d'imposer le template pour toutes les langues si tu souhaites uniquement utiliser l'i18n.

    Ou alors tu développes une gestion de langue dans le contrôleur pour afficher le template qui correspond à la langue.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je pense que je vais adopter la seconde solution : un component inclus dans le template de la page des CGU qui appellera un sous-template propre aux CGU régionalisées.

    C'est tout de même décevant que Symfony, contrairement à ce que la documentation officielle prétend, ne permette pas de régionaliser facilement du contenu... Ou alors j'ai loupé un truc, ce qui n'est pas impossible.

    Edit : en attendant mieux, je laisse le sujet "non résolu".
    Dernière modification par Invité ; 22/06/2012 à 09h16.

Discussions similaires

  1. [VB6] Imprimer directement une page html
    Par Debra dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/04/2004, 11h24
  2. Afficher une page html
    Par Nicky dans le forum C++Builder
    Réponses: 6
    Dernier message: 14/04/2004, 14h36
  3. Inserer une page HTML comme une boite!
    Par thief dans le forum MFC
    Réponses: 4
    Dernier message: 16/01/2004, 21h13
  4. [VB.Net] Comment generer une page html dynamiquement ?
    Par Anonymous dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/03/2003, 10h22
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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