JMSI18nRoutingBundle检测首选语言

时间:2013-07-17 00:05:25

标签: symfony symfony-2.3

有没有办法检测策略“prefix_except_default”的用户区域设置?

例如

默认语言环境:en

如果我访问www.example.com并且用户的区域设置设置为“fr”,则会将我重定向到www.example.com/fr

与“前缀”一样,只有语言环境默认路由才有www.example.com而不是www.example.com/en

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<ul id="language-selector">
    {% if app.request.attributes.get('_route') == 'homepage' %}            
        <li><a href="{{ path("homepage", {"_locale": "fr"}) }}">FR</a></li>
        <li><a href="{{ path("homepage", {"_locale": "en"}) }}">EN</a></li>
    {% else %}
        <li><a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'fr'})) }}">FR</a></li>
        <li><a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}">EN</a></li>
    {% endif %}
</ul>

感谢@xiidea的解释;)

答案 1 :(得分:0)

您的意思是_locale参数或浏览器的preferredLocale吗? 如果设置了_locale,则应自动完成重定向。 要检查浏览器的preferredLocale,您可以使用以下行:

$request->getPreferredLanguage();

或在Twig:

app.request.preferredLocale