如何使用symfony 3.4在请求上设置语言环境

时间:2019-04-19 09:47:02

标签: php symfony localization locale symfony-3.4

我正在使用symfony 3.4,并且希望为请求设置显示区域设置。

我尝试按照in the Symfony documentation的说明使用以下代码

namespace AppBundle\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

class EventListener
{
    private $tokenStorage;

    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $request = $event->getRequest();
        $request->setLocale('en');
    }
}

,但不影响页面。在symfony状态栏上,它仍显示de_DE为区域设置。我阅读了关于此stackoverflow post的说明,但感觉就像我所做的一样。那我想念什么?

1 个答案:

答案 0 :(得分:1)

必须在LocaleListener之前调用自定义侦听器,它会基于当前请求初始化语言环境。为此,请将侦听器优先级设置为高于LocaleListener优先级的值(可以通过运行debug:event kernel.request命令获得该值)。 查看文档https://symfony.com/doc/3.4/translation/locale.html