从数据库更改默认语言环境,这可能吗?

时间:2015-08-07 14:32:06

标签: symfony

我在后端网站上添加了一个新配置,因此我可以更改所有网站的语言。它工作得很好,但我现在要做的就是让网站打开,并在数据库中设置语言;但我已经在使用JMSi18nRoutingBundle,我的默认语言环境设置为' fr'例如。

如何告诉JMSi18nRoutingBundle配置更改数据库的默认语言环境。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个RequestListener来根据用户设置区域设置。

class RequestListener
{
    protected $securityContext;

    public function __construct(SecurityContextInterface $securityContext) // this is @service_container
    {
        $this->securityContext = $securityContext;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $kernel          = $event->getKernel();
        $request         = $event->getRequest();

        //user must be logged in
        if ($this->securityContext->getToken()) {

            $user   = $this->securityContext->getToken()->getUser();

            //setting the locale for the user (used for error messages)
            $request->setLocale($user->getLocale());
        }
    }
}

然后,如果需要,您甚至可以重定向到另一条路线。我不知道JMSi18nRoutingBundle是如何工作的,以及您是否需要在URL中添加默认参数。