路线中的Symfony2语言环境

| 我遵循了Symfony2 doc http://symfony.com/doc/2.0/book/translation.html#the-locale-and-the-url并将语言环境添加到我的路线中。但是,当我在树枝模板中放置{{path(\'myroute \')}}}时,我找不到通过路由携带语言环境的方法,但是语言环境始终会获得备用值,而不是采用当前语言环境。 我尝试了{{path(\'myroute \',{\'_ locale \':_locale})}},但收到错误\“ Variable \” _ locale \“不存在\”。 任何的想法?     
已邀请:
由于使用了该线程http://www.mail-archive.com/symfony-users@googlegroups.com/msg34838.html,因此已用“ 0”修复。     
在Symfony2.1中,语言环境存储在请求中,因此您必须使用以下代码:
{{ path(\'address\', {\'_locale\': app.request.locale}) }}
    
两页: localhost.lo / xx / about localhost.lo / xx / hello / {name} 其中xx-routing.yml中描述的几种语言环境 -routing.yml
home:
  resource: \"@JetInformBundle/Resources/config/routing.yml\"
  prefix: /{_locale}
  requirements:
    _locale: ^en|de|ru|uk|pl$
-JetInformBundle routing.yml
hello:
  pattern:  /hello/{name}
  defaults: { _controller: JetInformBundle:Default:index, name: \'alexander\' }

about:
  pattern:  /about
  defaults: { _controller: JetInformBundle:Default:about }
-DefaultController.php
<?php

namespace Jet\\InformBundle\\Controller;

use Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;
use Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route;
use Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Template;
use Symfony\\Component\\HttpFoundation\\Request;

class DefaultController extends Controller
{
    public function indexAction($name, Request $request)
    {
        return $this->render(\'JetInformBundle:Default:index.html.twig\',
                             array(\'name\' => $name, \'matches\' =>     $this->matchAction($request)));
    }

    public function aboutAction(Request $request)
    {
        return $this->render(\'JetInformBundle:Default:about.html.twig\',
                              array(\'matches\' => $this->matchAction($request)));
    }

    protected function matchAction(Request $request)
    {
        return $this->get(\'router\')->match($request->getRequestUri());
    }
}
-index.html.twig
{% extends \'::base.html.twig\' %}

{% block body %}
<h1>{{ \'hello.name\'|trans }} {{ name }}!</h1>
<h3>{{ \'your.locale\'|trans }} [{{ app.request.get(\'_locale\') }}]</h3>

{% include \'JetInformBundle:Default:locales.html.twig\'
            with {
                \'uripath\': \'hello\',
                \'params\': {
                    \'name\': app.request.get(\'name\')
                }
            }
%}

{% include \'JetInformBundle:Default:matches.html.twig\'
            with { \'matches\': matches } %}

<div>
    <p>{{ \'return.to\'|trans }} <a href=\"{{ path(\'about\', { \'_locale\': app.request.get(\'_locale\') }) }}\">About</a></p>
</div>
{% endblock %}
-about.html.twig
{% extends \'::base.html.twig\' %}

{% block body %}
<h1>{% trans %}about.page{% endtrans %}</h1>
<h3>{% trans %}your.locale{% endtrans %} [{{ app.request.get(\'_locale\') }}]</h3>

{% include \'JetInformBundle:Default:locales.html.twig\'
            with { \'uripath\': \'about\', \'params\': {}} %}

{% include \'JetInformBundle:Default:matches.html.twig\'
            with { \'matches\': matches } %}

<div>
    <p>{% trans%}return.to{% endtrans%} <a href=\"{{ path(\'hello\', { \'name\': app.request.get(\'name\'), \'_locale\': app.request.get(\'_locale\') }) }}\">Hello</a></p>
</div>
{% endblock %}
-locales.html.twig
{% if not params %}
    {% set params = {} %}
{% endif %}

<div class=\"langs\">
    <ul>
        <li>
            {% if app.request.get(\'_locale\') == \'ru\' %}
                Русский
            {% else %}
                <a href=\"{{ path(uripath, params|merge({ \'_locale\': \'ru\' })) }}\">Русский</a>
            {% endif %}
        </li>
        <li>
            {% if app.request.get(\'_locale\') == \'en\' %}
                English
            {% else %}
                <a href=\"{{ path(uripath, params|merge({ \'_locale\': \'en\' })) }}\">English</a>
            {% endif %}
        </li>
        <li>
            {% if app.request.get(\'_locale\') == \'uk\' %}
                Украiнська
            {% else %}
                <a href=\"{{ path(uripath, params|merge({ \'_locale\': \'uk\' })) }}\">Украiнська</a>
            {% endif %}
        </li>
        <li>
            {% if app.request.get(\'_locale\') == \'de\' %}
                Deutsch
            {% else %}
                <a href=\"{{ path(uripath, params|merge({ \'_locale\': \'de\' })) }}\">Deutsch</a>
            {% endif %}
        </li>
        <li>
            {% if app.request.get(\'_locale\') == \'pl\' %}
                Polish
            {% else %}
                <a href=\"{{ path(uripath, params|merge({ \'_locale\': \'pl\' })) }}\">Polish</a>
            {% endif %}
        </li>
    </ul>
</div>
-matchs.html.twig
<h5>Matches</h5>
<ol>
{% for key, value in matches %}
    <li>{{ key }} : {{ value }} </li>
{% endfor %}
</ol>
    
简写形式:
{{ path(\'address\', {\'_locale\': app.session.locale}) }}
    

要回复问题请先登录注册