['onKernelRequest'] ]; } public function onKernelRequest(RequestEvent $event): void { $request = $event->getRequest(); // only trigger on the homepage if ('/' !== $request->getPathInfo()) { return; } // Ignore requests from referrers with the same HTTP host in order to prevent // changing language for users who possibly already selected it for this application. $referer = $request->headers->get('referer'); if ($referer !== null && 0 === stripos($referer, $request->getSchemeAndHttpHost())) { return; } $allLanguages = $this->localeService->getTranslatedLocales(); // Add the default locale at the first position of the array, because getPreferredLanguage() // returns the first element when no appropriate language is found array_unshift($allLanguages, 'en'); $preferredLanguage = $request->getPreferredLanguage(array_unique($allLanguages)); $response = new RedirectResponse($this->urlGenerator->generate('homepage', ['_locale' => $preferredLanguage])); $event->setResponse($response); } }