src/EventSubscriber/LocaleSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  5. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. use Twig\Environment;
  9. class LocaleSubscriber implements EventSubscriberInterface
  10. {
  11. private $translator;
  12. private $session;
  13. private $environment;
  14. public function __construct(TranslatorInterface $translator, SessionInterface $session, Environment $environment)
  15. {
  16. $this->translator = $translator;
  17. $this->session = $session;
  18. $this->environment = $environment;
  19. }
  20. public function onKernelController(ControllerEvent $event)
  21. {
  22. if ($_SERVER['HTTP_HOST'] === 'aromaforest.fr') {
  23. $this->translator->setLocale('fr');
  24. $this->environment->addGlobal('app_default_locale', 'fr');
  25. $GLOBALS['app_default_locale'] = 'fr';
  26. }else if($_SERVER['HTTP_HOST'] === 'aromaforest.uk' || $_SERVER['HTTP_HOST'] === 'english.aromaforest.fr' ){
  27. $this->translator->setLocale('en');
  28. $this->environment->addGlobal('app_default_locale', 'en');
  29. $GLOBALS['app_default_locale'] = 'en';
  30. }else{
  31. //il faut re
  32. // Logique de récupération de la langue depuis la session ou utilisation d'une langue par défaut
  33. $locale_get_default = $this->session->get('_locale', 'fr');
  34. // For local test
  35. if ($locale_get_default === "fr" ) {
  36. $this->translator->setLocale('fr');
  37. $this->environment->addGlobal('app_default_locale', 'fr');
  38. $GLOBALS['app_default_locale'] = 'fr';
  39. } elseif($locale_get_default === "en" ) {
  40. $this->translator->setLocale('en');
  41. $this->environment->addGlobal('app_default_locale', 'en');
  42. $GLOBALS['app_default_locale'] = 'en';
  43. }
  44. }
  45. }
  46. public static function getSubscribedEvents()
  47. {
  48. return [
  49. KernelEvents::CONTROLLER => 'onKernelController',
  50. ];
  51. }
  52. }