We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26480
    • 4 Posts
    Bonjour à tous,

    J’essaie de trouver un tuto pour m’expliquer comment créer un site modx en Anglais et en Français !

    Mais voilà les seuls résultats que je trouve sont pour modx évolution !

    Quelqu’un pourrait il m’éclairer à ce sujet ?

    Merci
    • Bonjour et bienvenue sdemich,

      le meilleur endroit pour trouver de la documentation pour MODx Revolution est… sa doc officielle (rtfm.modx.com), notamment dans le cas qui t’intéresse : http://rtfm.modx.com/display/revolution20/Contexts
      Sinon un article sur le sujet a été publié sur le blog de Digital Butter : http://churn.butter.com.hk/posts/2010/08/internationalization-in-modx-revolution.html
      Et pour finir, un extra publié il y a peu qui te sera certainement utile : http://modxcms.com/extras/package/757

      Bon courage pour la suite smiley
        • 26480
        • 4 Posts
        Merci beaucoup pour toutes ses infos je vais me pencher dessus.
          • 7188
          • 26 Posts
          Salut les gars, je n’ai pas encore reçu de mandat pour faire un site bilingue.
          Par contre, j’aimerais s’avoir si c’est facile à implémenter...
          • Tout est relatif smiley
            Pour le moment le seul « problème » que j’ai rencontré (sur des projets tests) c’est le fait que Wayfinder (l’extra qui permet de générer la navigation) ne supporte pas les contextes correctement. Deux alternatives à cela
            créer une ressource container et utiliser son ID comme startId pour WF
            utiliser getResources qui gère très bien les contextes.

            Après tout dépend de la nature du projet, des besoins… et des compétences des éditeurs qui administreront le site.
            Dans tous les cas, je ne peux que t’encourager à faire des tests, et éventuellement nous faire part de ton ressenti smiley
              • 36624
              • 535 Posts
              Bonjour,

              je vous conseille de jeter un oeil sur Babel : http://modxcms.com/forums/index.php/topic,7159.msg328029.html#msg328029

              Je n’ai pas encore pu la tester personnellement, mais cette solution semble très sympa et ressemble à YAMS (pour ceux qui connaissent sur Evo)!.
                CTRL+SHIFT+U - Clear Cache
                CTRL+SHIFT+H - Hiding Heft Panel
                CTRL+SHIFT+N - Fast Create Resource
                CTRL+ALT+P - Preview Recource (in edit resorce window)
                CTRL+ALT+S - Save
                • 15086
                • 13 Posts
                Bonjour à tous !

                En fait Babel implémente la gestion automatique des contextes, qui sont ainsi associés chacun à des langues différentes. Pour chaque page, il existe des références croisées vers ses homologues dans les autres langues. Ce plugin fait donc croire que l’on possède 3 langues différentes pour une même page (par exemple) alors qu’en réalité ces 3 pages sont gérées par MODx Revo comme 3 ressources distinctes.

                Ensuite, il faut pouvoir basculer de contexte côté front-end, et c’est ce que propose (entre autres) l’article suggéré par Romain.
                Quote from: Romain at Nov 16, 2010, 11:17 AM

                Sinon un article sur le sujet a été publié sur le blog de Digital Butter : http://churn.butter.com.hk/posts/2010/08/internationalization-in-modx-revolution.html
                Par contre à mon avis, l’utilisation de Lexicon (suite de l’article) avec Babel est superflue... puisque redondante avec ce package. Il faut donc choisir soit l’un soit l’autre. J’ai tout de même l’impression que Lexicon est plutôt indiqué pour le développement de Snippet, tandis que Babel correspond très bien à ce que recherche un webmaster/gestionnaire de contenu.
                • Just1,

                  La méthode des lexicons se destine effectivement plus aux snippets, plugins et à la personnalisation du back-end. En revanche ils peuvent très bien servir en front… imaginons un élément « ajouter au panier » inclus dans ton template et en plusieurs langues… pas forcement superflue cette méthode donc wink
                    • 15086
                    • 13 Posts
                    Effectivement, mais dans ce cas il s’agit d’un template, donc d’un élément et pas d’une ressource. Autrement dit c’est géré de la même manière qu’un snippet. Pour être tout à fait clair, Babel sert pour toute la partie "Ressources", et Lexicon pour toute la partie "Eléments".

                    J’en profite pour soulever ici un problème que je recontre en ce moment avec ces histoires de gestion de plusieurs langues. Je souhaite avoir un plugin de changement de langue (dans la même optique que le lien proposé, sauf que je ne veux pas de la configuration avec un sous-domaine pour chaque langue, je préfère utiliser un "?lang=") qui possède les fonctionnalités suivantes :

                    • détection automatique de la langue du navigateur, et basculement vers le contexte correspondant lors du premier chargement de page
                    • possibilité de forcer à la main le contexte si l’utilisateur en fait la demande
                    • le site reste toujours dans le contexte courant (contexte persistant malgré les changements de pages), sauf si l’une des deux conditions ci-dessus impose le changement de contexte
                    Pour l’instant ça me donne ça :
                    <?php
                    /*
                    @param   $_GET['lang']
                    */
                    
                    // ce snippet ne concerne pas le contexte "manager"
                    if ( $modx->context->get('key') != "mgr" ) {
                        // détecte la langue du navigateur
                        $langTmp = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
                        $lang = strtolower(substr(chop($langTmp[0]),0,2));
                    
                        // prend en compte la demande de l'utilisateur
                        $lang = ( !empty($_GET['lang']) )? $_GET['lang'] : $lang;
                    
                        if ($modx->getOption('cultureKey') != $lang) {
                            // détruit l'environnement en cours
                            if ( $modx->checkSession( $modx->context->get('key') ) )
                                $modx->user->removeSessionContext( $modx->context->get('key') );
                            
                            // charge le nouveau contexte
                            switch ($_GET['lang']) {
                        
                                case '':
                                case 'fr':
                                    $modx->initialize('web');
                                    break;
                        
                                case 'en':
                                default:
                                    $modx->initialize('english');
                                    break;
                        
                            }
                            
                        }
                    
                    }

                    Mais il y a plusieurs problèmes :

                    • ayant mon navigateur configuré en Français, si je force la langue à "en" puis que je retire l’attribut ?lang=en de ma barre d’adresse, le site va automatiquement basculer vers le Français
                    • $modx->initialize() ne change pas (apparemment) le contexte de la page courante, et $modx->switchContext() ne convient pas car il ne concernerait que la page courante

                    Question : comment je pourrais m’y prendre autrement pour avoir un résultat satisfaisant (sachant que je commençais à connaître à peu près Evo, mais dans Revo pour l’instant je nage un peu) ?
                    Merci de toutes vos aides cumulées wink

                    (Pour répondre à l’une des questions de départ : ça n’est pas si facile que çela à implémenter, puisque certains composants gèrent correctement les contextes, mais d’autres sont manquants ou ne gèrent pas les contextes comme attendu... Il faut sûrement encore un peu de temps.)
                      • 17422
                      • 225 Posts
                      et pourquoi ne pas utiliser une variable de session ?


                      $_SESSION[’langWeb’]=$_GET[’lang’];