【问题标题】:Change default locale from database , is that possible?从数据库更改默认语言环境,这可能吗?
【发布时间】:2015-08-07 14:32:06
【问题描述】:

我在我的后端网站中添加了一个新配置,所以我可以更改所有网站的语言。它运行良好,但我现在要做的是使网站以数据库中设置的语言打开;但我已经在使用 JMSi18nRoutingBundle,例如,我的默认语言环境设置为“fr”。

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

【问题讨论】:

  • 你想在数据库中保存翻译吗?
  • 我想加载这个配置的变量 default_locale jms_i18n_routing: default_locale: %locale% default_locale 必须从数据库加载,从我的实体配置snapplr.com/snap/hx39看这张图,当我把语言改成法语,网站必须以新语言打开?

标签: symfony


【解决方案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 添加默认参数。

【讨论】:

  • 你不应该注入整个容器,而应该只注入所需的依赖项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 2011-10-29
相关资源
最近更新 更多