We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21946
    • 283 Posts
    Bonjour, j’ai besoin d’un coup de main pour réaliser un petit plug-in pour un site bilingue smiley
    Je souhaite faire un site français/anglais et la solution que j’aimerais mettre en oeuvre est la suivante: je crée pour les articles deux Variables de modele : "content-en" (textarea avec tinyMCE) et "pagetitle-en" : de cette manière l’utilisateur peut rentrer la version anglaise de l’article juste dessous la version française.

    Ensuite je dois simplement appeler [+content+] pour la version française et [+content-en+] pour la version anglaise. L’idée est d’appeler automatiquement le bon tag en fonction de la langue choisie par l’utilisateur. Ce dernier clique sur un lien pour choisir la langue et pour l’instant je stocke le résultat dans une variable de session.

    Voici le plug in que j’ai fait et qui marche très bien (onParseDocument) pour les place holders de type [*content*] mais pas du tout pour ceux de la forme [+content+] contenu dans les chunks !

    if($_SESSION['lang']=='en')
    {
    $french=array("[*content*]","[*pagetitle*]","[+content+]","[+pagetitle+]");
    $english=array("[*content-en*]","[*pagetitle-en*]","[+content-en+]","[+pagetitle-en+]");
    $output = $modx->documentOutput;
    $modx->documentOutput = str_replace($french,$english,"$output");

    }

    Comment je dois m’y prendre pour remplacer les tags [+content+] des chunks, quelle variable dois-je appeler? huh
      [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
      • 23383
      • 138 Posts
      Tu as pensé faire un snippet qui charge tes chunks en fonction de ta langue ? Je pense meme que tu pourrais le mettre en cache.
        • 21946
        • 283 Posts
        Oui j’en ai fait un pour le systeme bilingue que j’ai fait moi-même: il y’a un snippet qui enregistre la langue dans ne variable de session (ou un cookie comme dans la méthode de susan http://modxcms.com/forums/index.php/topic,409.msg2145.html#msg2145 )

        et un snippet qui détecte la langue puis affiche le bon chunk.
        En revanche on ne peut pas le mettre en cache car sinon il retourne uniquement le chunk en cache; c’est à dire qu’il ne réagit plus au changement de langue.

        En revanche, pour tout mettre en cache il existe une autre solution : en se basant sur la création d’une variable de modele pour la traduction de l’article, il suffit ensuite d’afficher les deux versions en même temps sur la page mais de masquer celle qui n’intéresse pas le visiteur. (avec un snippet qui insere un "display:none" ou il faut selon la langue). On retombe ainsi à 0 requetes sql pour l’affichage en fonction de la langue.
          [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
          • 23383
          • 138 Posts
          Quote from: nyl at Aug 20, 2008, 05:02 AM

          et un snippet qui détecte la langue puis affiche le bon chunk.
          En revanche on ne peut pas le mettre en cache car sinon il retourne uniquement le chunk en cache; c’est à dire qu’il ne réagit plus au changement de langue.

          Juste smiley

          Quote from: nyl at Aug 20, 2008, 05:02 AM

          En revanche, pour tout mettre en cache il existe une autre solution : en se basant sur la création d’une variable de modele pour la traduction de l’article, il suffit ensuite d’afficher les deux versions en même temps sur la page mais de masquer celle qui n’intéresse pas le visiteur. (avec un snippet qui insere un "display:none" ou il faut selon la langue). On retombe ainsi à 0 requetes sql pour l’affichage en fonction de la langue.

          Ok, je capte. C’est effectivement une bonne idée pour une quantité de contenu faible

          Mais je me pose une question désormais! Si il y avait un plugin qui regardait le contenu de tes pages, contenu où tu mettrais par exemple des parties en anglais et d’autres en francais, par exemple à cette manière :
          <div class="lang-fr">lorem</div><div class="lang-en">ipsum</div>

          Et que le plugin choisit en fonction de la variable de session la langue a afficher, tu penses que ca irait plus vite ?

          Simple curiosité.

          Mais note que ca s’écarte de la facilité d’utilisation que tu avais exprimée dans un autre post wink
            • 21946
            • 283 Posts
            Je ne sais pas, en fait en faisant ce systeme bilingue je me suis surtout rendu compte que je ne comprenais pas vraiment le fonctionnement de modx au niveau du "parsage", de son ordre; et de ce qui lui prend du temps ou pas.

            Par exemple vaut-il mieux utiliser un test phx pour aficher un appel en fonction de l’id du doc ou bien carrément insérer l’appel dans une variable de modele servant à ça dans les docs (on m’a dit que c’était déconseillé mais ça permet d’utiliser un seul template pour tout le site et de changer les appels de snippets selon les pages sans tests conditionnels dans tous les sens) ? huh

            Mais note que ca s’écarte de la facilité d’utilisation que tu avais exprimée dans un autre post
            Oui, Là j’ai fait un onglet "version anglaise" pour chaque doc et ça marche très bien, je trouve ça plus pratique pour insérer du contenu. Mais cette solution convient bien pour le site que j’ai fait et surement pas pour d’autres, je conseille la solution de susan qui semble la plus complète.

            Si je dois refaire un site billingue, je n’utiliserai pas à nouveau modx, ça m’a demandé une surcharge de travail du fait qu’il ne soit pas prévu pour ça; pas tant au niveau de l’affichage des articles qu est simple à gérer en deux langues mais pour une foule d’autres petits détails qui m’ont vraiment cassé la tete !
              [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
              • 23383
              • 138 Posts
              Ouais, je comprends. Par contre, je pense que je vais attendre de mieux connaitre Revolution pour me dire si oui ou non, je referai un site multilangues sur modx.

              Ici, j’ai un pote qui travaille sur Typo3, et faut l’avouer que le workflow et le multi-langues, sont quand même des trucs en béton. Ca serait bien d’avoir ca sur modx smiley

              Enfin, on s’écarte du sujet...
                • 21946
                • 283 Posts
                boaf de toute façon personne ne répond à ma question de base et j’ai résolu le probleme autrement.
                Oui pour la gestion multilangue je parlais juste de modx 0.9.6; j’attends avec impatience de pouvoir tester la nouvelle mouture de modx qui contiendra tout ça. (elle est déjà en test alpha non?)

                  [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
                  • 23383
                  • 138 Posts
                  Yep, alpha 3 si je ne me trompe pas. J’ai malheureusement pas eu le temps de la tester et la version svn que j’avais testé date de Mathusalem.
                  Mais comme d’habitude, j’en ai entendu que du bien.