src/EventSubscriber/LocaleSubscriber.php line 19
<?phpnamespace App\EventSubscriber;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Contracts\Translation\TranslatorInterface;use Twig\Environment;class LocaleSubscriber implements EventSubscriberInterface{public function __construct(Environment $twig, EntityManagerInterface $em, private TranslatorInterface $translator){$this->twig = $twig;$this->em = $em;}public function onKernelRequest(RequestEvent $event): void{$request = $event->getRequest();$languages = ['en', 'fr', 'de', 'es', 'pt', 'ar', 'it'];if ($request->query->get('lang') !== null && in_array($request->query->get('lang'), $languages)) {$request->setLocale($request->query->get('lang'));$request->getSession()->set('_locale', null);} else {// try to see if the locale has been set as a _locale routing parameterif ($locale = $request->attributes->get('_locale')) {$request->getSession()->set('_locale', $locale);} else {if (!empty($request->getSession()->get('_locale'))) {$locale = $request->getSession()->get('_locale');} elseif (!empty($request->cookies->get('_locale'))) {$locale = $request->cookies->get('_locale');} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {$locale = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);}if (!in_array($locale, $languages)) {$locale = 'en';}$request->setLocale($locale);}}$this->translator->setLocale($request->getLocale());}public static function getSubscribedEvents(): array{return [KernelEvents::REQUEST => 'onKernelRequest',];}}