src/Twig/TranslationsExtension.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Twig;
  3. use App\Services\Translations;
  4. use Twig\Extension\AbstractExtension;
  5. use Twig\TwigFunction;
  6. use Twig\TwigFilter;
  7. use Symfony\Component\Security\Core\Security;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class TranslationsExtension extends AbstractExtension
  10. {
  11.     private $trans;
  12.     private $security;
  13.     private $requestStack;
  14.     public function __construct(RequestStack $requestStackTranslations $transSecurity $security)
  15.     {
  16.         $this->trans $trans;
  17.         $this->security $security;
  18.         $this->requestStack $requestStack;
  19.     }
  20.     public function getFunctions(): array
  21.     {
  22.         return [
  23.             new  TwigFunction('getLocaleTranslations', [$this'getLocaleTranslations']),
  24.             new  TwigFunction('getArrayTranslateLocale', [$this'getArrayTranslateLocale']),
  25.         ];
  26.     }
  27.     public function getFilters()
  28.     {
  29.         return [
  30.             new TwigFilter('clean_n', [$this'clean_n']),
  31.             new TwigFilter('translateLocale', [$this'translateLocale']),
  32.         ];
  33.     }
  34.     public function getLocaleTranslations($key,$locale)
  35.     {
  36.         return $this->trans->getLocaleTranslations($key,$locale);
  37.     }
  38.     public function translateLocale($key,$array null)
  39.     {
  40.         $user $this->security->getUser();
  41.         if($user != null) {
  42.             $locale $user->getLanguage();
  43.             if($locale == null) {
  44.                 $locale "en";
  45.             }
  46.         } else {
  47.             $locale $this->requestStack->getCurrentRequest()->getSession()->get('lang');
  48.             if(empty($lang)) {
  49.                 $locale "en";
  50.             }
  51.         }
  52.         if($array != null) {
  53.             return $this->trans->getLocaleTranslations($key,$locale,$array);
  54.         }
  55.         return $this->trans->getLocaleTranslations($key,$locale);
  56.     }
  57.     public function getArrayTranslateLocale($locale)
  58.     {
  59.         return $this->trans->getArrayTranslateLocale($locale);
  60.     }
  61. }