使用 Symfony 3 进行路由翻译

Routes translation with Symfony 3

我正在尝试为现有 Symfony 3 网络应用程序中定义的路由添加翻译。我看到 Symfony 4 已经实现了这个功能*,你可以:

foo:
  path:
    en: contact
    es: contacto
    cat: contacte

(来自 https://symfony.com/blog/new-in-symfony-4-1-internationalized-routing

但是对于 Symfony 3,您似乎必须为每个语言环境配置不同的路由名称。如果可能的话,我需要保持路由名称相同,因为很多逻辑都取决于路由名称。

我试过 JMSI18nRoutingBundle 但它似乎没有保持相同的路线名称。

有没有想法为不同的语言环境获取相同的路由名称并进行翻译?

终于从this JMSI18nRoutingBundle issue那里得到了答案。它没有记录,所以有人必须弄清楚:

您需要在 translations 目录中为每个语言环境创建一个 routes.<locale>.yml,并使用 route_name 和 locale_route 作为键值。例如

# routes.en.yml
contact: /contact
who_we_are: /who-we-are
# routes.es.yml
contact: /contacto
who_we_are: /quienes-somos

等等。

然后您只需清除缓存即可使这些路由正常工作。

您还可以为默认区域设置使用默认路由定义,并避免使用其中一个文件。