<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LocaleSubscriber implements EventSubscriberInterface
{
protected $translatableSubscriber;
public function __construct(TranslatableSubscriber $translatableSubscriber)
{
$this->translatableSubscriber = $translatableSubscriber;
}
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return array(
KernelEvents::REQUEST => 'onKernelRequest',
);
}
/**
* @param RequestEvent $event
*/
public function onKernelRequest(RequestEvent $event)
{
$acceptLanguage = $event->getRequest()->headers->get('accept-language');
if (!is_null($acceptLanguage)) {
$event->getRequest()->setLocale(substr($acceptLanguage, 0, 2));
$this->translatableSubscriber->setLocale(substr($acceptLanguage, 0, 2));
}
}
}