<?php/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/namespaceSymfony\Component\HttpKernel\EventListener;
useSymfony\Component\HttpKernel\Event\GetResponseEvent;
useSymfony\Component\HttpKernel\KernelEvents;
useSymfony\Component\HttpFoundation\Request;
useSymfony\Component\Routing\RequestContextAwareInterface;
useSymfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Initializes the locale based on the current request.
*
* @author Fabien Potencier <fabien@symfony.com>
*/class LocaleListenerimplements EventSubscriberInterface {
private $router;
private $defaultLocale;
public function__construct($defaultLocale = 'en', RequestContextAwareInterface $router = null) {
$this->defaultLocale = $defaultLocale;
$this->router = $router;
}
public functionsetRequest(Request $request = null) {
if (null === $request) {
return;
}
if ($locale = $request->attributes
->get('_locale')) {
$request
->setLocale($locale);
}
if (null !== $this->router) {
$this->router
->getContext()
->setParameter('_locale', $request
->getLocale());
}
}
public functiononKernelRequest(GetResponseEvent $event) {
$request = $event
->getRequest();
$request
->setDefaultLocale($this->defaultLocale);
$this
->setRequest($request);
}
public static functiongetSubscribedEvents() {
returnarray(
// must be registered after the Router to have access to the _locale
KernelEvents::REQUEST => array(
array(
'onKernelRequest',
16,
),
),
);
}
}