我在我的网站上添加了一个语言切换器。
我的参数是这样的:
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>>> }) }}
谢谢你:)
答案 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 。