php - Twig do not set the locale in Symfony 3 -
i created eventlistener set locale based on user preferences, set langage in listener:
$request->setlocale($user->getlanguage()); $request->getsession()->set('_locale',$user->getlanguage());
i tried both..
i register listener in service.yml
:
app.event_listener.locale: class: 'appbundle\eventlistener\localelistener' arguments: - '@security.token_storage' tags: - {name: 'kernel.event_listener', event: 'kernel.request', method: 'onkernelrequest'}
i tried add priority: 17
service not change anything...
the listener seems works, can locale in controller $request->getlocale()
(or session).
but twig still in default language defined in config.yml
:
parameters: locale: fr
i'm pretty lost now, tips ?
i tried lot of stuff (change priority, check if locale passed front etc...) forced translator in eventlistener:
public function onkernelrequest(getresponseevent $event) { $request = $event->getrequest(); if ($this->tokenstorage->gettoken()) { $user = $this->tokenstorage->gettoken()->getuser(); if ($user && $user instanceof user) { $request->setlocale($user->getlanguage()); } elseif ($request->query->has('locale')) { $request->setlocale($request->query->get('locale')); } else { $request->setlocale($request->getpreferredlanguage()); } } $this->translator->setlocale($request->getlocale()); }
i don't understand why, should done in symfony translator, works...
Comments
Post a Comment