src/EventSubscriber/RedirectToLocaleSubscriber.php line 68
<?php/** This file is part of the AdminLTE-Bundle demo.** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace App\EventSubscriber;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;/*** When visiting the homepage, this listener redirects the user to the most* appropriate localized version according to the browser settings.** See http://symfony.com/doc/current/components/http_kernel/introduction.html#the-kernel-request-event** @author Oleg Voronkovich <oleg-voronkovich@yandex.ru>*/class RedirectToLocaleSubscriber implements EventSubscriberInterface{/*** List of supported locales.** @var string[]*/private $locales = [];private string $defaultLocale = '';/*** @param string $locales Supported locales separated by '|'* @param string|null $defaultLocale*/public function __construct(private UrlGeneratorInterface $urlGenerator, $locales, $defaultLocale = null){$this->locales = explode('|', trim($locales));if (empty($this->locales)) {throw new \UnexpectedValueException('The list of supported locales must not be empty.');}$this->defaultLocale = $defaultLocale ?: $this->locales[0];if (!in_array($this->defaultLocale, $this->locales)) {throw new \UnexpectedValueException(sprintf('The default locale ("%s") must be one of "%s".', $this->defaultLocale, $locales));}// Add the default locale at the first position of the array,// because Symfony\HttpFoundation\Request::getPreferredLanguage// returns the first element when no an appropriate language is foundarray_unshift($this->locales, $this->defaultLocale);$this->locales = array_unique($this->locales);}public static function getSubscribedEvents(): array{return [KernelEvents::REQUEST => ['onKernelRequest'],];}public function onKernelRequest(RequestEvent $event){$request = $event->getRequest();// Ignore sub-requests and all URLs but the homepageif ('/admin' !== $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.if (0 === stripos($request->headers->get('referer'), $request->getSchemeAndHttpHost())) {return;}$preferredLanguage = $request->getPreferredLanguage($this->locales);$response = new RedirectResponse($this->urlGenerator->generate('app_admin_index', ['_locale' => $preferredLanguage]));$event->setResponse($response);}}