8311 sujets

Développement web côté serveur, CMS

Salut salut

Je suis sur un petit problème de traduction, enfin.. d'utilisation de l'objet $translator de symfony.

Mon translator marche bien quand je fais un setLocal('fr') j'ai bien tous mes libéllés fr et si je met setLocal('en') (english) ça fonctionne bien aussi.

Par défault, j'ai configurer sur "fr". ça fonctionne.

Là où ça craint, c'est que je fais un setLocal dans mon ControlleurA.php (rename exprès) et dans mon ControlleurB.php j'ai toujours fr alors que si je dump mon translator avant la redirection j'ai bien "en"

Controlleur A :

        
       $lang    = $session->get("lang");
        $translator->setLocale($lang);
        $request->setLocale($lang);
        $this->container->get('translator')->setLocale($lang);


Ici je test différents manière d’appeler le translator. $lang est égale soit à "fr", soit à "en".
Ici on va dire que c'est "en"
A la suite de ces quelques lignes, je fais un,
echo "<pre>";
         var_dump($translator->trans('LIB_TITLE'));
         echo "</pre>";
         die;

Et donc que mon translator à fonctionné car je vois "Title" et non "Titre".

Par contre, j'ai un redirectToRoute qui me redirige vers mon ControlleurB.php

Controlleur B :
$translatorBis = $this->get('translator');
			echo "<pre>";
			var_dump($translatorBis->getLocale());
			echo "</pre>";
			die;

ici je vois que c'est "fr" et pas "en"... je comprend pas pk ...
Soit un black box effect ! Smiley biggol (peut probable)

$this c'est la classe du contrôleur ? Si oui il faut lui réassigner la valeur car avec un $this->get('translator') tu récupère la valeur de la property : controllerB->translator et pas controllerA->translator.

Autre possibilité dans ton controllerA tu fais un $this->container->get('translator') et dans le controllerB un $this->get('translator').

Smiley brothers