使用 Symfony 3 进行路由翻译



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

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

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

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

我尝试使用JMSI18nRoutingBundle,但似乎它没有保持相同的路由名称。

有什么想法为不同的区域设置获取相同的路由名称并对其进行翻译吗?

最后,我从这个JMSI18nRoutingBundle问题中得到了答案。它没有记录在案,所以有人必须弄清楚:

您需要在翻译目录中为每个语言环境创建一个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

等等。

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

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

最新更新