我在后端网站上添加了一个新配置,因此我可以更改所有网站的语言。它工作得很好,但我现在要做的就是让网站打开,并在数据库中设置语言;但我已经在使用JMSi18nRoutingBundle,我的默认语言环境设置为' fr'例如。
如何告诉JMSi18nRoutingBundle配置更改数据库的默认语言环境。这可能吗?
答案 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中添加默认参数。