src/EventListener/LocaleListener.php line 78

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Doctrine\Persistence\ManagerRegistry;
  4. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  5. use Symfony\Component\HttpKernel\HttpKernel;
  6. use Symfony\Component\HttpKernel\HttpKernelInterface;
  7. use Doctrine\ORM\EntityManager;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpKernel\Event\RequestEvent;
  10. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  11. use Symfony\Component\HttpKernel\KernelInterface;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Symfony\Component\Translation\LocaleSwitcher;
  14. use App\Entity\User;
  15. class LocaleListener
  16. {
  17.     private $container;
  18.     private LocaleSwitcher $localeSwitcher;
  19.     public function __construct(KernelInterface $appKernel,
  20.                                 ManagerRegistry $doctrine,
  21.                                 LocaleSwitcher $localeSwitcher)
  22.     {
  23.         $this->appKernel $appKernel;
  24.         $this->doctrine $doctrine;
  25.         $this->localeSwitcher $localeSwitcher;
  26. //        print('<br>LocaleListener __construct ');
  27.         if($_SERVER['HTTP_HOST'] == 'www.easycommerc.cz' OR $_SERVER['HTTP_HOST'] == 'easycommerc.cz') {
  28.             $defaultLocale 'cs';
  29.         } elseif($_SERVER['HTTP_HOST'] == 'www.easycommerc.com' OR $_SERVER['HTTP_HOST'] == 'easycommerc.com') {
  30.             $defaultLocale 'en';
  31.         } elseif($_SERVER['HTTP_HOST'] == 'www.easycommerc.eu' OR $_SERVER['HTTP_HOST'] == 'easycommerc.eu') {
  32.             $defaultLocale 'en';
  33.         } else {
  34.             $defaultLocale 'cs';
  35.         }
  36.         $this->defaultLocale $defaultLocale;
  37.     }
  38.     /**
  39.      * @throws \ReflectionException
  40.      */
  41.     public function __invoke(RequestEvent $event): void
  42.     {
  43.         $request $event->getRequest();
  44. //        if (!$event->isMainRequest()) {
  45. //            // don't do anything if it's not the master request
  46. //            return;
  47. //        }
  48.         $session $request->getSession();
  49. //        print('<br>locale listener: '.$request->getSession()->get('lang')->getLangKey());
  50. //        print('<br>session _locale: '.$request->getSession()->get('_locale'));
  51.         //$locale = 'en';
  52.         //$request->getSession()->set('_locale', $locale);
  53.         $request $event->getRequest();
  54.         if (!$request->hasPreviousSession()) {
  55.             return;
  56.         }
  57.         // try to see if the locale has been set as a _locale routing parameter
  58.         if ($locale $request->attributes->get('_locale')) {
  59.             $request->getSession()->set('_locale'$locale);
  60.         } else {
  61.             // if no explicit locale has been set on this request, use one from the session
  62.             $request->setLocale($request->getSession()->get('_locale'$this->defaultLocale));
  63.         }
  64.         if(!empty($request->getSession()->get('lang'))) {
  65.             $locale $request->getSession()->get('lang')->getLangKey();
  66.         } else {
  67.             $locale $this->defaultLocale;
  68.             //$locale = 'cz';
  69.         }
  70.         //$locale = 'en';
  71. //        print('<br> QQW LocaleListener locale: '.$locale);
  72. //        $request->setLocale($locale);
  73.         // you can get the current application locale like this:
  74.         $currentLocale $this->localeSwitcher->getLocale();
  75. //        print('<br> QQW localeSwitcher locale: '.$currentLocale);
  76.         $this->localeSwitcher->setLocale($locale);
  77.         $request->getSession()->set('_locale'$locale);
  78.     }
  79. }