<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LocaleSubscriber implements EventSubscriberInterface
{
// Langue par défaut
private $defaultLocale = 'fr';
public function __construct()
{
}
public function onKernelRequest(\Symfony\Component\HttpKernel\Event\RequestEvent $event)
{
$request = $event->getRequest();
// if (!$event->isMainRequest()) {
// // don't do anything if it's not the main request
// return;
// }
if (!$request->hasPreviousSession()) {
return;
}
if ($locale = $request->query->get('language')) {
$request->setLocale($locale);
$request->getSession()->set('language',$locale);
} else {
$request->setLocale($request->getSession()->get('language', $this->defaultLocale));
}
}
public static function getSubscribedEvents()
{
return [
// On doit définir une priorité élevée
KernelEvents::REQUEST => [['onKernelRequest', 20]],
];
}
}