2016-04-19 22 views
0

我想在Symfony 3的多國網絡中使用不同的主機和不同的路由。爲此我使用了JMS i18n路由。 我的配置文件陽明海運:Symfony witho JMS中的不同主機和路由i18n

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 

有了這個,我可以正確地使用不同的主機,但我不知道我怎麼能「翻譯」的路線,f.ex:/contacto/contact/contact

我想加載不同routing.yml取決於語言環境。

回答

2

使用JMSI18nRoutingBundle時,您的路由將根據您的route_name使用routes域(Symfony Translation Component)自動翻譯。 因此,假設您的route_name的接觸,只需要創建一個翻譯是這樣的:使用的Symfony router(這是由從包一包)將從目前的自動返回翻譯的路線

id/source: contact 
domain: routes 
locale: en 
translation/target: /contact 

id/source: contact 
domain: routes 
locale: es 
translation/target: /contacto 

現在你的路由語言環境。 如果你想將它轉換爲特定的區域設置,只需添加路由參數_locale這樣的:

{{ path("contact", {"_locale": "es"}) }} 

$this->get('router')->generate('contact', array('_locale' => 'es')); 
+0

我要在我的'messages.es_Es.yml'添加以下代碼?我真的使用.po/.mo翻譯文件 –

+0

它不是「代碼」,不是特定的格式(不是yml)。但是你可以使用你的.po/.mo翻譯文件。 – toooni

+0

好吧,我產生一個新的翻譯文件:routes.es_ES.po(和的.mo)與此: 'MSGID 「接觸」'' msgstr 「CONTACTO」' 但如果我去/ CONTACTO的路線不匹配。你能告訴我如何以及在哪裏可以翻譯這條路線的「部分」?謝謝! –