/** * @author Krzysztof Bednarczyk * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if (!$event->isMasterRequest()) { return; } $token = $this->tokenStorage->getToken(); /** * From auth */ /** @var UserLanguageInterface $user */ if ($token && ($user = $token->getUser()) && $user instanceof UserLanguageInterface && $user->getLanguage()) { $request->setLocale($user->getLanguage()->getLocale()); $this->translator->setLocale($request->getLocale()); return; } /** * Cookies */ $cookieName = $this->container->getParameter("bordeux.language.cookie_name"); if ($request->cookies->has($cookieName)) { $cookieLocale = $request->cookies->get($cookieName) ?: "none"; if ($this->manager->hasLocale($cookieLocale)) { $request->setLocale($cookieLocale); $this->translator->setLocale($request->getLocale()); return; } } /** * From browser header */ $languages = $request->getLanguages(); foreach ($languages as $locale) { if ($this->manager->hasLocale($locale)) { $request->setLocale($locale); $this->translator->setLocale($request->getLocale()); return; } } }