Да, EventDispatcher - это путь.Скорее всего, вы хотите использовать kernel.request
-event для этого.Если вам нужен язык от вашего вошедшего в систему пользователя, вы должны быть осторожны, когда ваш слушатель вызывается, так как он должен запускаться после Firewall-EventSubscriber, который загружает вошедшего в систему пользователя.Вы можете контролировать порядок, указав приоритет.
В своем слушателе вы сможете выбрать пользователя и его язык и перезаписать атрибут _locale
в запросе или добавить свой собственный атрибут для него.Вы также можете сохранить эту информацию в сеансе, чтобы вам не приходилось запрашивать пользователя при каждом запросе.Вы можете найти примеры для этого в StackOverflow, например, здесь