如何使用 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
我正在使用 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