src/EventSubscriber/TranslationEventListener.php line 29
<?php// src/EventSubscriber/TranslationEventListener.phpnamespace App\EventSubscriber;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Cookie;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpKernel\Event\ResponseEvent;class TranslationEventListener implements EventSubscriberInterface{public function onKernelRequest(RequestEvent $event): Request{$request = $event->getRequest();if ($request->get('lang')) {// Utiliser la langue du get$locale = $request->get('lang');} else if ($request->cookies->has('lang')) {// Utiliser la langue du cookie$locale = $request->cookies->get('lang');} else {// Utiliser la langue du header "Accept-Language"$acceptLanguages = explode(',', $request->headers->get('Accept-Language'));$locale = in_array('fr', $acceptLanguages) ? 'fr' : 'en';}//set local$request->setLocale($locale);$request->setDefaultLocale($locale);return $request;}public function onKernelResponse(ResponseEvent $event): Response{$request = $event->getRequest();$response = $event->getResponse();$locale = $request->getLocale();// Vérifier si le cookie de langue est définiif (!$request->cookies->has('lang') || $request->cookies->get('lang') != $locale) {$cookie = new Cookie('lang', $locale, strtotime('+1 year'), '/', null, true, false);$response->headers->setCookie($cookie);}return $response;}public static function getSubscribedEvents(): array{return [KernelEvents::REQUEST => ['onKernelRequest', 200],KernelEvents::RESPONSE => 'onKernelResponse',];}}