locales = $locales; //Set router $this->router = $router; } /** * Change locale for request with ?fb_locale=xx * * @param RequestEvent The request event */ public function onKernelRequest(RequestEvent $event) { //Retrieve request $request = $event->getRequest(); //Check for facebook locale if ( $request->query->has('fb_locale') && in_array($preferred = $request->query->get('fb_locale'), $this->locales) ) { //Set locale $request->setLocale($preferred); //Set default locale $request->setDefaultLocale($preferred); //Get router context $context = $this->router->getContext(); //Set context locale $context->setParameter('_locale', $preferred); //Set back router context $this->router->setContext($context); } } /** * Get subscribed events * * @return array The subscribed events */ public static function getSubscribedEvents() { return [ // must be registered before the default locale listener KernelEvents::REQUEST => [['onKernelRequest', 10]] ]; } }