Использование symfony 3.4 Я устанавливаю локаль с помощью прослушивателя событий с более высоким приоритетом, чем LocaleListener
, как описано в документах symfony :
namespace AppBundle\EventListener;
use AppBundle\Component\Common;
use AppBundle\Entity\Client;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class EventListener
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function onKernelRequest(GetResponseEvent $event)
{
if ($this->entityManager !== null) {
$client = Common::getClient($this->entityManager);
$event->getRequest()->setLocale($client->getDefaultLocale());
}
}
}
Теперь, насколько я понимаю, чтобы получить локаль в шаблоне ветки, я использую
{{ app.request.locale }}
, который выводит локаль, которую я установил через EventListener (а именно en
). Но я также реализую метод getDisplayLocale()
в моем Member
-объекте, с помощью которого я захожу на страницу. Идея здесь заключается в том, что без входа в систему следует использовать локаль клиента по умолчанию, если вошел в систему, локаль члена. Теперь локаль участника: de
.
Проводная вещь, которую я сейчас не понимаю, заключается в том, что страница фактически отображается на немецком языке, а строка состояния Symfony показывает немецкий, даже если переменная шаблона ветки {{ app.request.locale }}
показывает en
:
Почему переменная, отображаемая в строке состояния Symfony, и переменная из {{ app.request.locale }}
не совпадают? Как установить переменную, которая фактически используется для перевода в моем шаблоне ветки в EventListener?