LocaleListener.php

Namespace

Symfony\Component\HttpKernel\EventListener

File

drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/LocaleListener.php
View source
<?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,
        ),
      ),
    );
  }

}

Classes

Namesort descending Description
LocaleListener Initializes the locale based on the current request.