src/EventSubscriber/LocaleSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. class LocaleSubscriber implements EventSubscriberInterface
  7. {
  8.     protected $translatableSubscriber;
  9.     public function __construct(TranslatableSubscriber $translatableSubscriber)
  10.     {
  11.         $this->translatableSubscriber $translatableSubscriber;
  12.     }
  13.     /**
  14.      * @return array
  15.      */
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return array(
  19.             KernelEvents::REQUEST => 'onKernelRequest',
  20.         );
  21.     }
  22.     /**
  23.      * @param RequestEvent $event
  24.      */
  25.     public function onKernelRequest(RequestEvent $event)
  26.     {
  27.         $acceptLanguage $event->getRequest()->headers->get('accept-language');
  28.         if (!is_null($acceptLanguage)) {
  29.             $event->getRequest()->setLocale(substr($acceptLanguage02));
  30.             $this->translatableSubscriber->setLocale(substr($acceptLanguage02));
  31.         }
  32.     }
  33. }