2012-01-16 70 views
3

我想通過Symfony2安裝中的url定義頁面語言。我的路由通過控制器內部的註釋工作。路由中的區域設置,默認語言也沒有參數

的routing.yml

_index: 
    resource: "@MyMainBundle/Controller/SiteController.php" 
    type:  annotation 

siteController.php

/** 
* @Route("/{_locale}/{site}", name="_site_site", defaults={"_locale" = "en"}, requirements={"site" = "about|cities|download|blog", "_locale" = "en|de|fr|es"}) 
*/ 

這個安靜的工作很好,但是啥子我想要的,是以下URL調用同樣的動作。

http://example.com/download 
http://example.com/en/download 
http://example.com/de/download 

沒有languge參數,頁面應該切換回默認語言,但這是我可以在我的操作中處理的內容。

我發現這個答案,但無法讓它工作。 Symfony2 default locale in routing

回答

7

只需添加另一個不包含區域設置的@Route註釋。

/** 
* @Route("/{_locale}/{site}/") 
* @Route("/{site}/") 
*/ 
+2

謝謝!我只需添加'defaults = {「_ locale」=「en」}',否則會導致錯誤,如果在URL中找不到區域設置。 – madc 2012-01-17 15:31:50

+0

您可以在type =「annotation」要求之後在routing.yml中添加語言環境: _locale:en | fr – 2014-02-28 21:20:17