Symfony Twig - 在twig中获取默认的_locale

时间:2014-12-08 12:31:13

标签: symfony path twig translation locale

我在我的网站上添加了一个语言切换器。

我的参数是这样的:

avc_coming_soon:
resource: "@AVCComingSoonBundle/Controller/"
type:     annotation
prefix:   /{_locale}
defaults:
    _locale: en
requirements:
    _locale: |fr

en默认设置

在我的树枝上,我做到了:

<div class="languages">
        <ul class="lang-menu">
            <li class="en"><a href="{{ path(app.request.get('_route'), {'_locale': 'en' })  }}"><img src="{{ asset('images/flag_en.gif') }}" alt="EN"></a></li>
            <li class="fr"><a href="{{ path(app.request.get('_route'), {'_locale': 'fr'})  }}"><img src="{{ asset('images/flag_fr.gif') }}" alt="FR"></a></li>
        </ul>
    </div>

但是当我点击“英语”时,我的路径变为www.mysite.com/en或好路线为www.mysite.com/(没有/en),因为在参数中,我有:

defaults:
    _locale: en

如何在twig中获取默认的_locale?

{{ path(app.request.get('_route'), {'_locale': <<<default>>> })  }}
谢谢你:)

2 个答案:

答案 0 :(得分:2)

您需要使用app.request.attributes

{{ path(app.request.get('_route'), {'_locale': app.request.attributes.get('_locale') })  }}

如果您在控制器中有配置,则需要在功能参数中设置默认值:

/**
 * @Route("/", name="coming_soon", options={"expose"=true}, requirements={"_locale" = "fr|en"})
 */
public function indexAction($_locale = 'en')
{
    ...
}

答案 1 :(得分:0)

我使用此捆绑包:https://github.com/schmittjoh/JMSI18nRoutingBundle

感谢捆绑,我永远不会弄乱语言环境..

您可以将捆绑包配置为除默认语言环境之外的所有内容(这是您不想要的,将注释读取到其他答案)。

对于语言切换器,您只需在任何给定路线上设置 _locale