1

在我使用 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'));

它奏效了。我不知道为什么我必须添加那个新方法,但是很好,正在工作......

谢谢。

4

0 回答 0