src/EventSubscriber/KernelRequestSubscriber.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Gedmo\Translatable\TranslatableListener;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. class KernelRequestSubscriber implements EventSubscriberInterface
  8. {
  9.     private $translatableListener;
  10.     public function __construct(TranslatableListener $translatableListener)
  11.     {
  12.         $this->translatableListener $translatableListener;
  13.     }
  14.     /**
  15.      * @return string[]
  16.      */
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             KernelEvents::REQUEST => [['setRequestLocale'0]],
  21.         ];
  22.     }
  23.     public function setRequestLocale(RequestEvent $event)
  24.     {
  25.         $request $event->getRequest();
  26.         $locale $request->attributes->get('_locale');
  27.         if (!$locale) {
  28.             $locale $request->cookies->get('_locale');
  29.         }
  30.         if (!$locale) {
  31.             $locale $_ENV['LOCALE'];
  32.         }
  33.         if ($locale) {
  34.             $request->setLocale($locale);
  35.             $this->translatableListener->setTranslatableLocale($locale);
  36.         }
  37.     }
  38. }