vendor/symfony/http-kernel/EventListener/TranslatorListener.php line 49

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <[email protected]>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\HttpKernel\EventListener;
  11. @trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.'TranslatorListener::class), \E_USER_DEPRECATED);
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\RequestStack;
  15. use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
  16. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  17. use Symfony\Component\HttpKernel\KernelEvents;
  18. use Symfony\Component\Translation\TranslatorInterface;
  19. use Symfony\Contracts\Translation\LocaleAwareInterface;
  20. /**
  21.  * Synchronizes the locale between the request and the translator.
  22.  *
  23.  * @author Fabien Potencier <[email protected]>
  24.  *
  25.  * @deprecated since Symfony 4.3, use LocaleAwareListener instead
  26.  */
  27. class TranslatorListener implements EventSubscriberInterface
  28. {
  29.     private $translator;
  30.     private $requestStack;
  31.     /**
  32.      * @param LocaleAwareInterface $translator
  33.      */
  34.     public function __construct($translatorRequestStack $requestStack)
  35.     {
  36.         if (!$translator instanceof TranslatorInterface && !$translator instanceof LocaleAwareInterface) {
  37.             throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.'__METHOD__LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
  38.         }
  39.         $this->translator $translator;
  40.         $this->requestStack $requestStack;
  41.     }
  42.     public function onKernelRequest(GetResponseEvent $event)
  43.     {
  44.         $this->setLocale($event->getRequest());
  45.     }
  46.     public function onKernelFinishRequest(FinishRequestEvent $event)
  47.     {
  48.         if (null === $parentRequest $this->requestStack->getParentRequest()) {
  49.             return;
  50.         }
  51.         $this->setLocale($parentRequest);
  52.     }
  53.     public static function getSubscribedEvents()
  54.     {
  55.         return [
  56.             // must be registered after the Locale listener
  57.             KernelEvents::REQUEST => [['onKernelRequest'10]],
  58.             KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest'0]],
  59.         ];
  60.     }
  61.     private function setLocale(Request $request)
  62.     {
  63.         try {
  64.             $this->translator->setLocale($request->getLocale());
  65.         } catch (\InvalidArgumentException $e) {
  66.             $this->translator->setLocale($request->getDefaultLocale());
  67.         }
  68.     }
  69. }