<?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.
*/
namespace Symfony\Component\HttpKernel\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Routing\RequestContextAwareInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Initializes the locale based on the current request.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class LocaleListener implements EventSubscriberInterface {
private $router;
private $defaultLocale;
public function __construct($defaultLocale = 'en', RequestContextAwareInterface $router = null) {
$this->defaultLocale = $defaultLocale;
$this->router = $router;
}
public function onKernelRequest(GetResponseEvent $event) {
$request = $event
->getRequest();
$request
->setDefaultLocale($this->defaultLocale);
if ($locale = $request->attributes
->get('_locale')) {
$request
->setLocale($locale);
}
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,
),
),
);
}
}
Name | Description |
---|---|
LocaleListener | Initializes the locale based on the current request. |