<?php
namespace App\Subscribers;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LocalSubscriber implements EventSubscriberInterface
{
private $defaultLocale;
/**
* @param $defaultLocale
*/
public function __construct(string $defaultLocale = 'tr')
{
$this->defaultLocale = $defaultLocale;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
if(!$request->hasPreviousSession())
return;
if($locale = $request->attributes->get('_locale')){
$request->getSession()->set('_locale', $locale);
}else if ( $locale = $request->getSession()->get('_locale')){
$request->setLocale($locale);
}else{
$request->getSession()->set('_locale',$this->defaultLocale);
$request->setLocale($this->defaultLocale);
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [['onKernelRequest', 17]]
];
}
}