From: Raphaƫl Gertz Date: Thu, 12 Aug 2021 15:36:47 +0000 (+0200) Subject: Switch on the fly locale with fb_locale=xx set X-Git-Tag: 0.2.0~90 X-Git-Url: https://git.rapsys.eu/airbundle/commitdiff_plain/b30faf659c060eeb3f3dfc1e57b20c697e279bb9 Switch on the fly locale with fb_locale=xx set --- diff --git a/EventSubscriber/FacebookSubscriber.php b/EventSubscriber/FacebookSubscriber.php new file mode 100644 index 0000000..d950a54 --- /dev/null +++ b/EventSubscriber/FacebookSubscriber.php @@ -0,0 +1,75 @@ +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]] + ]; + } +}