* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\RequestContextAwareInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Initializes the locale based on the current request. * * @author Fabien Potencier */ class LocaleListener implements EventSubscriberInterface { private $router; private $defaultLocale; private $requestStack; /** * @param RequestStack $requestStack A RequestStack instance * @param string $defaultLocale The default locale * @param RequestContextAwareInterface|null $router The router */ public function __construct(RequestStack $requestStack, $defaultLocale = 'en', RequestContextAwareInterface $router = null) { $this->defaultLocale = $defaultLocale; $this->requestStack = $requestStack; $this->router = $router; } public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); $request->setDefaultLocale($this->defaultLocale); $this->setLocale($request); $this->setRouterContext($request); } public function onKernelFinishRequest(FinishRequestEvent $event) { if (null !== $parentRequest = $this->requestStack->getParentRequest()) { $this->setRouterContext($parentRequest); } } private function setLocale(Request $request) { if ($locale = $request->attributes->get('_locale')) { $request->setLocale($locale); } } private function setRouterContext(Request $request) { if (null !== $this->router) { $this->router->getContext()->setParameter('_locale', $request->getLocale()); } } public static function getSubscribedEvents() { return array( // must be registered after the Router to have access to the _locale KernelEvents::REQUEST => array(array('onKernelRequest', 16)), KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)), ); } } __halt_compiler();----SIGNATURE:----CxZSENUGronsINxrm3XO+53S9U8tNwpHoIU/+zF+Y4DSD89IFv8XqyJvEdWOtYAoHkUMWiXeX9JmohDjAOV2mRUQydo6B8V38y1pLk1XTnZgtTkcJmrh3CjXS7nHawra9aVZYMlfwJ1ywQdYyWWTMr3scgAzr5yr0tZ288gjR4myD+Z++22onKTDFci11sguQeDtsZ2wYYuMCUHl4D1aXEwoJ8j7okh6pYwOnUgtJ4jy8fVsu2y4cpGxRJp7rDVEyrDRFifT5v5Ut65lcgq9BMRQjNIdNGA7VdswSBSQwsgEC3MQLP+16MJJujYNDMEF4CXDzweXuHyCm9sURV0aYmwDx+uc3ULAgpHu7sn1JPDCahM2D+Uqe15tOl/AXyNJsALTpqBGfOoPEvxXvDbbKAF9dzXc2FGi8cFgv2HFXns9iNjm9BmDK7l6keFS8rCgCogHGNIc/xpTuSZHSEBreSXHjeEN8p7V/Zr42P9tccSVwKs+tAEAJ+S4RfWKofdnFgYnCtWJtYWDcOOB6x/UFdMBBysTUUulQi5y71TydN3wAcvXRPFB5A+jrzsPqMiJ30NK4qO47TdSdxkqd+Y8IgdKRHsV2KI2nwzQj/CZLQQtyRQmp2qYOFyKm5xNQ7VXgu2XOnZOc6YaCLleXwtHvwCNJoP3QGfbe3yCUJgG9rQ=----ATTACHMENT:----NjA1MTI3NDczMzUyNTY2NSA4Nzc2MzM3Nzk1OTk3NTE5IDk3NTEwMDk1NTc1NTcxNTQ=