在我使用Symfony 2.3之前,翻译工作正常。该地区之前正好装载,我去了“Symfony Profiler”,一切都还好。 现在,在2.8.3中,使用与之前相同的配置,它加载默认语言环境('es'),但不加载我想要加载的语言环境('en')。
我在一个作为服务加载的监听器中设置它:
$getLang = $getLang->getLang(); // = 'en'
$event->getRequest()->setLocale($getLang);
$this->session->set('_locale', $getLang);
如果我执行var_dump:
var_dump('$getLang = ' . $getLang);
echo '<br>';
var_dump($event->getRequest()->getLocale());
echo '<br>';
var_dump($this->session->get('_locale'));
echo '<br>';
然后它向我显示:
string(13) "$getLang = en"
string(2) "en"
string(2) "en"
但是在Symfony Listener中,它从'es'语言环境加载翻译,我不知道为什么:Loading wrong locale
在这里我可以看到,在会话参数中,'_locale'参数为'en':Session locale
希望你能帮助我,谢谢!
更新
我需要在LocaleListener事件中指定:
$this->translator->setLocale($getLang);
在BaseController中(在顶部):
$container->get('translator')->setLocale($session->get('_locale'));
它有效。我不知道为什么我要添加这种新方法,但是,正在工作......
感谢。