/
home
/
obinna
/
html
/
boaz2
/
vendor
/
symfony
/
twig-bridge
/
Extension
/
Upload File
HOME
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bridge\Twig\Extension; use Symfony\Bridge\Twig\NodeVisitor\TranslationDefaultDomainNodeVisitor; use Symfony\Bridge\Twig\NodeVisitor\TranslationNodeVisitor; use Symfony\Bridge\Twig\TokenParser\TransDefaultDomainTokenParser; use Symfony\Bridge\Twig\TokenParser\TransTokenParser; use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorTrait; use Twig\Extension\AbstractExtension; use Twig\NodeVisitor\NodeVisitorInterface; use Twig\TwigFilter; // Help opcache.preload discover always-needed symbols class_exists(TranslatorInterface::class); class_exists(TranslatorTrait::class); /** * Provides integration of the Translation component with Twig. * * @author Fabien Potencier <fabien@symfony.com> */ final class TranslationExtension extends AbstractExtension { private $translator; private $translationNodeVisitor; public function __construct(TranslatorInterface $translator = null, NodeVisitorInterface $translationNodeVisitor = null) { $this->translator = $translator; $this->translationNodeVisitor = $translationNodeVisitor; } public function getTranslator(): TranslatorInterface { if (null === $this->translator) { if (!interface_exists(TranslatorInterface::class)) { throw new \LogicException(sprintf('You cannot use the "%s" if the Translation Contracts are not available. Try running "composer require symfony/translation".', __CLASS__)); } $this->translator = new class() implements TranslatorInterface { use TranslatorTrait; }; } return $this->translator; } /** * {@inheritdoc} */ public function getFilters(): array { return [ new TwigFilter('trans', [$this, 'trans']), ]; } /** * {@inheritdoc} */ public function getTokenParsers(): array { return [ // {% trans %}Symfony is great!{% endtrans %} new TransTokenParser(), // {% trans_default_domain "foobar" %} new TransDefaultDomainTokenParser(), ]; } /** * {@inheritdoc} */ public function getNodeVisitors(): array { return [$this->getTranslationNodeVisitor(), new TranslationDefaultDomainNodeVisitor()]; } public function getTranslationNodeVisitor(): TranslationNodeVisitor { return $this->translationNodeVisitor ?: $this->translationNodeVisitor = new TranslationNodeVisitor(); } public function trans(?string $message, array $arguments = [], string $domain = null, string $locale = null, int $count = null): string { if (null === $message || '' === $message) { return ''; } if (null !== $count) { $arguments['%count%'] = $count; } return $this->getTranslator()->trans($message, $arguments, $domain, $locale); } }