- //Generate current route with preferred language
- //XXX: may trigger a Symfony\Component\Routing\Exception\RouteNotFoundException if route is not found for preferred locale
- $uri = $this->router->generate(
- //Current route
- $request->get('_route'),
- //Force preferred locale
- ['_locale' => $preferred]+$request->get('_route_params')
- );
-
- //Regenerate route with preferred locale
- $event->setResponse(new RedirectResponse($uri, 302));
+ //Send vary header as current page locale depend on it
+ header('Vary: accept-language');
+
+ //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);