我想要使用Symfony 3在我的多国网络中使用不同的主机和不同的路由。为此,我使用了JMS i18n路由。我的配置YML文件:
jms_i18n_routing:
default_locale: es_ES
locales: [es_ES, fr_FR, en_GB]
strategy: custom
hosts:
es_ES: www.aaa.local
fr_FR: www.aaa-fr.local
en_GB: www.aaa-uk.local
redirect_to_host: true
有了这个,我可以正确地使用不同的主机,但我不知道如何"翻译"路由,例如:/contacto
/contact
和/contact
。
我想要负载差异routing.yml
取决于区域设置。
使用JMSI18nRoutingBundle时,将使用routes
域(Symfony翻译组件)根据route_name
自动翻译您的路由。所以,假设你的route_name
是联系人,只需创建一个类似的翻译:
id/source: contact
domain: routes
locale: en
translation/target: /contact
id/source: contact
domain: routes
locale: es
translation/target: /contacto
现在,使用Symfony router
的路由(由捆绑包中的路由包裹)将自动返回当前区域设置的翻译路由。如果您想将其转换为特定的区域设置,只需添加路由参数_locale
,如下所示:
{{ path("contact", {"_locale": "es"}) }}
或
$this->get('router')->generate('contact', array('_locale' => 'es'));