如何在Web根路由(/)中设置默认语言环境?

时间:2013-07-21 12:55:13

标签: locale routes symfony-2.2

我有一个我试图国际化的symfony2网站。我有/ en和/ es前缀的路由,但如果url中没有指定语言,我希望sf2获取默认语言。

我使用以下参数定义了根路由:

home:
    [...]
    prefix:   /{_locale}/
    defaults: { _locale: en }
    requirements:
        _locale: en|es

然后,如果我去'www.web.com/en'或'www.web.com/es'它会正确重定向,但如果我去'www.web.com',它就不会默认语言('en')。我收到错误消息No route found for "GET /".

哪里出错?

感谢。

2 个答案:

答案 0 :(得分:0)

除了你的前缀之外,它看起来都很正确。取消尾随斜杠,因为否则您的路由规则试图匹配www.web.com//,这意味着您实际上没有为www.web.com定义路由。

答案 1 :(得分:0)

您可以解决此问题并公布路线

app / config / routing.yml 中设置2条不同的路线:

  1. 一个保留用于主页/,强制使用特定的控制器
  2. 一个用于所有其他路线(在此示例中定义为 注释)具有 locale 前缀
  3. 插入:

    app:
        pattern:   /
        defaults: {_controller: AppBundle:Default:index }
    
    app_locale:
        resource: "@AppBundle/Controller/"
        type:     annotation
        prefix:   /{_locale}
        defaults:  { _locale: en }