在我使用 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 监听器中,它从“es”语言环境加载翻译,我不知道为什么:加载错误的语言环境
在这里我可以看到在会话参数中有'_locale'参数为'en':Session locale
希望你能帮助我,谢谢!
更新:
我需要在 LocaleListener 事件中指定:
$this->translator->setLocale($getLang);
在 BaseController 这个(在顶部):
$container->get('translator')->setLocale($session->get('_locale'));
它奏效了。我不知道为什么我必须添加那个新方法,但是很好,正在工作......
谢谢。