src/Twig/TranslationsExtension.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Twig;
  3. use App\Services\Core\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 $requestStack, Translations $trans, Security $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. }