Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 4.3] Mettre une traduction par dossier

Sujet résolu
19 novembre 2019 à 9:27:42

Bonjour,

Je sollicite votre aide pour un problème d'organisation dans Symfony 4.

Pour garder une structure propre dans mes dossiers, je souhaiterai mettre les traductions de mon site dans un dossier différent par langage, pour avoir une structure comme ci-dessous

/translation
     /fr
     /en
     /it

Mon problème c'est que je ne vois pas comment paramétrer Symfony pour qu'il prenne en considération cette structure.

Voici mon fichier translation.yaml

framework:
    default_locale: '%locale%'
    translator:
        default_path: '%kernel.project_dir%/translations/%locale%'
        fallbacks:
            - '%locale%'

Et dans services.yaml j'ai ceci

parameters:
    locale: 'fr'


A noté que si je mets toutes mes traductions (fr, en, it) dans "/translation/fr" et que mon visiteur change de langue, cela fonctionne parfaitement quand je modifie la variable locale via 

$request->setLocale($lang);

Ce changement se fait dans event de type KernelRequest qui s’exécute avant le "LocaleListener", comme indiqué dans la doc Symfony https://symfony.com/doc/current/translation/locale.html

Si quelqu'un a une solution ou une piste de réflexion à m'apporter pour résoudre mon problème.

Merci d'avance.

  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2019 à 14:33:10

bonjour,

dans la config tu peux lister tous les dossiers comportant les fichiers de traduction(https://symfony.com/doc/current/translation.html#translation-resource-file-names-and-locations) :

framework:
    default_locale: '%locale%'
    translator:
        paths:
            - '%kernel.project_dir%/translations/fr'
            - '%kernel.project_dir%/translations/en'
        fallbacks:
            - '%locale%'



  • Partager sur Facebook
  • Partager sur Twitter
19 novembre 2019 à 15:40:20

Si ça ne te dérange pas d'avoir la locale également dans le nom du fichier, tu peux garder les paramètres du framework par défaut et avoir une structure dans ce style :

translations/
    en/
        admin.en.yaml
        messages.en.yaml
    fr/
        admin.fr.yaml
        messages.fr.yaml
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2019 à 9:31:10

Bonjour,

Merci armel.mc, c'est exactement ce que je voulais.

jmsche, c'est également ce que j'ai fait.



  • Partager sur Facebook
  • Partager sur Twitter