Symfony中没有JMS i18n的不同主机和路由


Different host and routes in Symfony witho JMS i18n

我想要使用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'));