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\HttpFoundation\HeaderUtils;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. class LocaleSubscriber implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @return array<string, array<int[]|string[]>>
  12.      */
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             KernelEvents::REQUEST => [['onKernelRequest'20]],
  17.         ];
  18.     }
  19.     public function onKernelRequest(RequestEvent $event): void
  20.     {
  21.         $request $event->getRequest();
  22.         $acceptLanguage $request->headers->get('accept-language');
  23.         if (empty($acceptLanguage)) {
  24.             return;
  25.         }
  26.         $arr HeaderUtils::split($acceptLanguage',;');
  27.         if (empty($arr[0][0])) {
  28.             return;
  29.         }
  30.         // Symfony expects underscore instead of dash in locale
  31.         $locale str_replace('-''_'$arr[0][0]);
  32.         $request->setLocale($locale);
  33.     }
  34. }