Локализация сайтов. Настройки из 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/"

что конкретно и куда нужно перенести, чтобы это всё таки срабатывало?


Ответы (0 шт):