2012-01-16 71 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