在 Symfony 4 中创建包含语言环境的 URL

Creating URLs containing the locale in Symfony 4

我正在创建一个支持多种语言的 Symfony 4 网络应用程序。路由已经完成,所以我可以有 /en/suchpage/de/suchpage。我现在正在寻找一种使用正确语言环境 link 到 "suchpage" 的方法。

路由如下所示:

suchpage:
    path: /{_locale}/suchpage/
    controller: App\Controller\SimplePageController::such
    requirements:
        maw: '%app.locales%'
    defaults:
        _locale: '%locale%'

我正在使用 Twig,我需要从 Twig 模板中 link 到页面的正确版本。这个"works":

{{ path('suchpage', {'_locale': app.request.locale}) }}

它有两个问题:

  1. 我不想到处重复这个。像 {{ page('suchpage') }} 这样的东西会好得多。是否存在这样的功能?可以让 path() 表现得像这样吗?

  2. 如果在请求中未指定区域设置,则此操作失败,这是可能发生的,因为并非所有页面都需要它(因为有些页面有默认设置)。

有一个维护包,JMSI18nRoutingBundle,可以满足您的需求。

composer require jms/i18n-routing-bundle

关于此捆绑包的一些有用链接:

包装师:https://packagist.org/packages/jms/i18n-routing-bundle

GitHub : https://github.com/schmittjoh/JMSI18nRoutingBundle