如何使用 symfony 3.4 根据请求设置语言环境

How to set the locale on a request using 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 作为语言环境。我阅读了关于这个 的解释,但我觉得我完全按照那里的描述做了。那我错过了什么?

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