Symfony 5 - 国际化路线 - 带有语言环境的前缀路线

Symfony 5 - internationalized routes - Prefix routes with locale

我们如何在 symfony5 中自动为路由路径添加语言环境前缀?

# file: config/routes.yaml

index_blog:
  path:
    en: blog/homepage
    fr: blog/accueil
  controller: App\Controller\HomepageController::index

当我们调试时,我们有这样的东西

php bin/console debug:router


  index_blog.en              ANY      ANY      ANY    /blog/homepage
  index_blog.fr              ANY      ANY      ANY    /blog/accueil

那么我们应该怎么做才能在 url 前加上 _locale 来得到类似

的东西
/**fr**/blog/accueil
/**en**/blog/homepage

JMSI18nRoutingBundle 不适用于 Symfony 5。

这是我找到的解决方案:

# file: config/routes.yaml

my_app:
  prefix:
    fr: /fr
    en: /en
    es: /es
  resource: '../src/App/Resources/config/routes/routing.yaml'
  name_prefix: app_web_
#  defaults:
#    subdomain: www
#    domain: localhost.com
#  host: "{subdomain}.{domain}"
#  requirements:
#    domain: (localhost.com|localhost.org)

如果您希望始终重定向到首选路由“/fr”(如果是“/”),您必须添加一个事件订阅者。

查看 Symfony 演示应用程序。