src/EventSubscriber/LocaleSubscriber.php line 24

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. class LocaleSubscriber implements EventSubscriberInterface
  8. {
  9.     private string $defaultLocale;
  10.     /**
  11.      * LocaleSubscriber constructor.
  12.      * @param string $defaultLocale
  13.      */
  14.     public function __construct(string $defaultLocale 'en')
  15.     {
  16.         $this->defaultLocale $defaultLocale;
  17.     }
  18.     public function onKernelRequest(RequestEvent $event): void
  19.     {
  20.         $request $event->getRequest();
  21.         $setLanguage null;
  22.         foreach ($request->getLanguages() as $language) {
  23.             if (null === $setLanguage) {
  24.                 switch ($language) {
  25.                     case 'de':
  26.                     case 'pl':
  27. //                    case 'en':
  28.                         $setLanguage $language;
  29.                         break;
  30.                     default:
  31.                         break;
  32.                 }
  33.             }
  34.         }
  35.         if ($setLanguage === null) {
  36.             $request->setLocale($this->defaultLocale);
  37.         } else {
  38.             $request->setLocale($setLanguage);
  39.         }
  40.     }
  41.     public static function getSubscribedEvents(): array
  42.     {
  43.         return [
  44.             KernelEvents::REQUEST => [['onKernelRequest'20]]
  45.         ];
  46.     }
  47. }