Symfony 3.4 как установить локаль - PullRequest
1 голос
/ 20 апреля 2019

Использование 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 locale and app.request.locale

Почему переменная, отображаемая в строке состояния Symfony, и переменная из {{ app.request.locale }} не совпадают? Как установить переменную, которая фактически используется для перевода в моем шаблоне ветки в EventListener?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...