Локализация сайтов. Настройки из Symfony 5 не работают в Symfony 6. где копать?
изучаю Symfony. периодически всплывают непонятки из за того, что доступные курсы сделаны про Symfony 5, а я творю в Symfony 6. непонятки решаются методом чтения мануалов. но вот я дошёл до места, который решить не получается.
суть такова:
в оригинале адрес https://localhost:8000 должен автоматически преобразовываться в https://localhost:8000/en/. а при смене локализации — соответственно в https://localhost:8000/ru/ и проч.
при этом все остальные страницы должны редиректиться на локализованный адрес. типа в https://localhost:8000/login -> в https://localhost:8000/en/login.
в обучалке сделаны следующие вещи:
config/routes.yaml (по идее вот это как раз и должно редиректить автоматом на локаль. но нет :( )
index:
path: /
defaults:
controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
path: '/{%locale%}'
permanent: true
config/routes/annotations.yaml
controllers_main:
resource: ../../src/Controller/Main/
type: annotation
prefix: /{_locale}
requirements:
_locale: '%app_locales%'
defaults:
_locale: '%locale%'
kernel:
resource: ../../src/Kernel.php
type: annotation
переменные для аннотаций добавлены в config/services.yaml:
parameters:
…
locale: 'en'
app_locales: en|fr|ru
я в symfony 6 делаю всё то же самое, но это всё игнорируется.
более того. в проекте есть ссылка:
<a href="{{ path('main_homepage',{_locale:'en'}) }}">
{{ 'en'|locale_name('en')|capitalize }}
</a>
у меня при наведении на неё отображается https://localhost:8000/?_locale=en.
а в мануале подсказка на ссылке показывает https://localhost:8000/en/
что совсем уж логично, если руками в адресную строку ввести https://localhost:8000/en/, то получаю
No route found for "GET https://localhost:8000/en/"
что конкретно и куда нужно перенести, чтобы это всё таки срабатывало?