<?phpnamespace App\Twig;use App\Services\Translations;use Twig\Extension\AbstractExtension;use Twig\TwigFunction;use Twig\TwigFilter;use Symfony\Component\Security\Core\Security;use Symfony\Component\HttpFoundation\RequestStack;class TranslationsExtension extends AbstractExtension{ private $trans; private $security; private $requestStack; public function __construct(RequestStack $requestStack, Translations $trans, Security $security) { $this->trans = $trans; $this->security = $security; $this->requestStack = $requestStack; } public function getFunctions(): array { return [ new TwigFunction('getLocaleTranslations', [$this, 'getLocaleTranslations']), new TwigFunction('getArrayTranslateLocale', [$this, 'getArrayTranslateLocale']), ]; } public function getFilters() { return [ new TwigFilter('clean_n', [$this, 'clean_n']), new TwigFilter('translateLocale', [$this, 'translateLocale']), ]; } public function getLocaleTranslations($key,$locale) { return $this->trans->getLocaleTranslations($key,$locale); } public function translateLocale($key,$array = null) { $user = $this->security->getUser(); if($user != null) { $locale = $user->getLanguage(); if($locale == null) { $locale = "en"; } } else { $locale = $this->requestStack->getCurrentRequest()->getSession()->get('lang'); if(empty($lang)) { $locale = "en"; } } if($array != null) { return $this->trans->getLocaleTranslations($key,$locale,$array); } return $this->trans->getLocaleTranslations($key,$locale); } public function getArrayTranslateLocale($locale) { return $this->trans->getArrayTranslateLocale($locale); }}