В Middleware идёт проверка, есть ли в URL директория языка. Если есть, то выставляется App::setLocale($locale) и загружается страница.
При смене языка редактирую URL, в начало ссылки подставляю директорию, соответствующую выбранному языку.
При смене языка записывается кука с значением языка.
Все Route объединил в группу.
Остановился на моменте, когда значение языка в куках не равно значению языка директории (такое может быть, когда пользователь сменил язык, но в последствии вернулся на сайт по старой ссылке, соответствующей другому языку).
Хотел при отличии куки и языка в урл делать редирект. Но редирект не будет сохранять setLocale и получается бесконечный цикл. Может в $next($request) как то можно передать другие значения URL? Но скорее всего это моя больная фантазия)
Как реализовать смену языка при несоотвествии языка в куках и языка в урл?