<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment;
class LocaleSubscriber implements EventSubscriberInterface
{
private $translator;
private $session;
private $environment;
public function __construct(TranslatorInterface $translator, SessionInterface $session, Environment $environment)
{
$this->translator = $translator;
$this->session = $session;
$this->environment = $environment;
}
public function onKernelController(ControllerEvent $event)
{
if ($_SERVER['HTTP_HOST'] === 'aromaforest.fr') {
$this->translator->setLocale('fr');
$this->environment->addGlobal('app_default_locale', 'fr');
$GLOBALS['app_default_locale'] = 'fr';
}else if($_SERVER['HTTP_HOST'] === 'aromaforest.uk' || $_SERVER['HTTP_HOST'] === 'english.aromaforest.fr' ){
$this->translator->setLocale('en');
$this->environment->addGlobal('app_default_locale', 'en');
$GLOBALS['app_default_locale'] = 'en';
}else{
//il faut re
// Logique de récupération de la langue depuis la session ou utilisation d'une langue par défaut
$locale_get_default = $this->session->get('_locale', 'fr');
// For local test
if ($locale_get_default === "fr" ) {
$this->translator->setLocale('fr');
$this->environment->addGlobal('app_default_locale', 'fr');
$GLOBALS['app_default_locale'] = 'fr';
} elseif($locale_get_default === "en" ) {
$this->translator->setLocale('en');
$this->environment->addGlobal('app_default_locale', 'en');
$GLOBALS['app_default_locale'] = 'en';
}
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}