Partage
  • Partager sur Facebook
  • Partager sur Twitter

Traduire mon Site [Symfony 3.4]

Traduire mon Site [Symfony 3.4]

Sujet résolu
    19 novembre 2019 à 17:32:01

    Bonjour à tous,

    j'ai un problème avec la traduction de mon site.

    quand je modifie le locale directement dans le config , la traduction se passe bien mais si je le fait sur le lien en précédant avec un préfixe /fr ou /en

    il ne traduit pas.

    je ne sais pas vraiment ou j'ai foiré:

    voici mon code :

    Fichier config

    parameters:
        locale: fr
    
    framework:
        #esi: ~
        translator: { fallbacks: ['%locale%'] }

    mes fichiers de traduction 

    message.fr.twig

    translate.links1: Accueil
    translate.links2: Nos Articles
    translate.links3: Nos Livres
    translate.links3: Contact



    Message.en.twig

    translate.links1: Home
    translate.links2: Our Articles
    translate.links3: Nos Books
    translate.links3: Contact



    Ficher twig

    <html>
      <body>
         <a href="#"> {{ 'translate.links1'|trans }}</a>
         <a href="#"> {{ 'translate.links2'|trans }}</a>
         <a href="#"> {{ 'translate.links3'|trans }}</a>
      </body>
    </html>

    j'ai ensuite taper la commade suivante :

    php bin/console debug:translation fr MonBundle
    php bin/console debug:translation en MonBundle

    lorsque je change la langue dans mon config , xa marche

    mais pas sur le lien 

    par exemple : http://127.0.0.1:8000/en/traduction ou http://127.0.0.1:8000/fr/traduction  ne traduit pas du tout

    quelqu'un peut me dire le problème svp...


    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2019 à 21:35:02

      Salut !

      Peux-tu nous montrer les définitions de tes routes ?

      • Partager sur Facebook
      • Partager sur Twitter
        19 novembre 2019 à 21:59:41

        oui toute suite, merci Ymox ,

        miroir_site_homepage:
            path:     /
            defaults: { _controller: MiroirSiteBundle:Default:index }
        miroir_site_homearticles:
            path:     /articles
            defaults: { _controller: MiroirSiteBundle:Default:articles }
        miroir_site_homearticle:
            path:     /article/{id}
            defaults: { _controller: MiroirSiteBundle:Default:article }
            requirements:
                id:   \d+
        miroir_site_homelivres:
            path:     /livres
            defaults: { _controller: MiroirSiteBundle:Default:livres }
        miroir_site_homelivresbycategorie:
            path:     /livres/{id}
            defaults: { _controller: MiroirSiteBundle:Default:livresByCategorie }
            requirements:
                id:   \d+
        miroir_site_homelivre:
            path:     /livre/{id}
            defaults: { _controller: MiroirSiteBundle:Default:livre }
            requirements:
                id:   \d+
        miroir_site_homepanier:
            path:     /panier/{id}
            defaults: { _controller: MiroirSiteBundle:Default:monpanier }
            requirements:
                id:   \d+
        miroir_site_removepanier:
            path:     /panier/remove/{id}
            defaults: { _controller: MiroirSiteBundle:Default:removepanier }
            requirements:
                id:   \d+
        miroir_site_homecontacts:
            path:     /contacts
            defaults: { _controller: MiroirSiteBundle:Default:contacts }
        miroir_site_home_notfound:
            path:     /404
            defaults: { _controller: MiroirSiteBundle:Default:notfound }
        miroir_site_homecommande:
            path:     /commande
            defaults: { _controller: MiroirSiteBundle:Default:commande }
        miroir_site_bondecommande:
            path:     /bondecommande
            defaults: { _controller: MiroirSiteBundle:Default:bondecommande }
        miroir_site_bondecommandefinale:
            path:     /bondecommandefinale
            defaults: { _controller: MiroirSiteBundle:Default:bondecommandefinale }
        miroir_site_traduction:
            path:     /{_locate}/traduction
            defaults: { _controller: MiroirSiteBundle:Default:traduction }
            requirements:
                _locale: fr|en|



        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2019 à 22:11:46

          Le paramètre dans ta route miroir_site_traduction contient une coquille  ;)

          • Partager sur Facebook
          • Partager sur Twitter
            19 novembre 2019 à 22:16:01

            une coquille ???

            stp peux-tu être explicite ??

            • Partager sur Facebook
            • Partager sur Twitter
              19 novembre 2019 à 22:24:49

              Tu sais ce qu'est un paramètre de route ? Alors relis le nom que tu as utilisé lettre à lettre.

              Une coquille, c'est une faute de frappe.

              • Partager sur Facebook
              • Partager sur Twitter
                19 novembre 2019 à 22:46:38

                Effectivement ,
                 ce fameux locate :colere2:.
                c'est bon , xa marche maintenant.
                dsl mais je savais pas pour le mot "coquille" Ymox , merci pour l'infos
                je profite de l'occasion ,
                j'aimerai proposer un lien pour permettre à l'utilisateur de choisir sa langue.
                 comment vais-je gérer le paramètre de langue dans mon contrôleur si par exemple , il choisit anglais 
                dans l'ensemble peux tu me dire sur le plan technique , quelques pistes à implémenter ? 
                • Partager sur Facebook
                • Partager sur Twitter
                  19 novembre 2019 à 23:07:23

                  Pour un lien qui permet de choisir la langue d'affichage d'une page, je verrais assez simplement une boucle sur toutes les locales disponibles et générer la même route avec en paramètre chacune des locales. Quelque chose dans le goût de ce qui suit (pas testé).

                  {% set locales = ['fr', 'de', 'it'] %}
                  {% for locale in locales if not locale = app.request.locale %}
                      {{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': locale}) }}
                  {% endfor %}
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 novembre 2019 à 23:33:51

                    okay j'ai compris...

                    je creuse le sujet 

                    merci de pour ta disponibiliter ;)

                    -
                    Edité par alinftu 19 novembre 2019 à 23:34:07

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Traduire mon Site [Symfony 3.4]

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown