Set locale in Symfony 2.1

谁说我不能喝 提交于 2019-11-28 07:04:40
webda2l

The declaration of the LocaleListener in yml (inspired by the current declaration of the new LocaleListener: \vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\web.xml)

services:
    my_listener:
        class: "FK\MyWebsiteBundle\Listener\LocaleListener"
        arguments: [%locale%]
        tags:
            -  { name: kernel.event_subscriber }

Some snippets:

A language switcher in your template:

{% for locale in ['en', 'fr', 'cn'] %}
    <li {% if locale == app.request.locale %}class="active"{% endif %}>
        <a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale' : locale})) }}">{{ locale }}</a>
    </li>
{% endfor %}

A redirection with locale change from a controller:

$LocalizedUrl = $this->get('router')->generate(
    $request->attributes->get('_route'), 
    ['_locale' => $locale] + $request->attributes->get('_route_params')
);

return new \Symfony\Component\HttpFoundation\RedirectResponse($LocalizedUrl);

You should get the translator instance linked to your symfony kernel container:

$this->container->get('translator')->setLocale('fr');
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!