/**
  * @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;
         }
     }
 }