diff --git a/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php b/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php index fffc593f0e6c..607302d9917c 100644 --- a/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php @@ -17,6 +17,7 @@ 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\TokenParser\AbstractTokenParser; @@ -29,6 +30,13 @@ */ class TranslationExtension extends AbstractExtension { + use TranslatorTrait { + getLocale as private; + setLocale as private; + trans as private doTrans; + transChoice as private doTransChoice; + } + private $translator; private $translationNodeVisitor; @@ -91,7 +99,7 @@ public function getTranslationNodeVisitor() public function trans($message, array $arguments = array(), $domain = null, $locale = null) { if (null === $this->translator) { - return strtr($message, $arguments); + return $this->doTrans($message, $arguments, $domain, $locale); } return $this->translator->trans($message, $arguments, $domain, $locale); @@ -100,7 +108,7 @@ public function trans($message, array $arguments = array(), $domain = null, $loc public function transchoice($message, $count, array $arguments = array(), $domain = null, $locale = null) { if (null === $this->translator) { - return strtr($message, $arguments); + return $this->doTransChoice($message, $count, array_merge(array('%count%' => $count), $arguments), $domain, $locale); } return $this->translator->transChoice($message, $count, array_merge(array('%count%' => $count), $arguments), $domain, $locale); diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 434053d94604..258e654b8f12 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -873,10 +873,6 @@ private function registerTemplatingConfiguration(array $config, ContainerBuilder } else { $container->removeDefinition('templating.helper.assets'); } - - if (!$this->translationConfigEnabled) { - $container->removeDefinition('templating.helper.translator'); - } } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml index 82d5b4c6621c..7dbe57dc2e26 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml @@ -58,7 +58,7 @@ - + diff --git a/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/TranslatorHelper.php b/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/TranslatorHelper.php index 2ba81acef052..b3dd76d42adc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/TranslatorHelper.php +++ b/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/TranslatorHelper.php @@ -13,15 +13,23 @@ use Symfony\Component\Templating\Helper\Helper; use Symfony\Contracts\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\TranslatorTrait; /** * @author Fabien Potencier */ class TranslatorHelper extends Helper { + use TranslatorTrait { + getLocale as private; + setLocale as private; + trans as private doTrans; + transChoice as private doTransChoice; + } + protected $translator; - public function __construct(TranslatorInterface $translator) + public function __construct(TranslatorInterface $translator = null) { $this->translator = $translator; } @@ -31,6 +39,10 @@ public function __construct(TranslatorInterface $translator) */ public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null) { + if (null === $this->translator) { + return $this->doTrans($id, $parameters, $domain, $locale); + } + return $this->translator->trans($id, $parameters, $domain, $locale); } @@ -39,6 +51,10 @@ public function trans($id, array $parameters = array(), $domain = 'messages', $l */ public function transChoice($id, $number, array $parameters = array(), $domain = 'messages', $locale = null) { + if (null === $this->translator) { + return $this->doTransChoice($id, $number, $parameters, $domain, $locale); + } + return $this->translator->transChoice($id, $number, $parameters, $domain, $locale); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_disabled.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_disabled.php deleted file mode 100644 index 4fb2aec557f6..000000000000 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_disabled.php +++ /dev/null @@ -1,8 +0,0 @@ -loadFromExtension('framework', array( - 'translator' => false, - 'templating' => array( - 'engines' => array('php'), - ), -)); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_enabled.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_enabled.php deleted file mode 100644 index b8053c853b12..000000000000 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/templating_php_translator_enabled.php +++ /dev/null @@ -1,8 +0,0 @@ -loadFromExtension('framework', array( - 'translator' => true, - 'templating' => array( - 'engines' => array('php'), - ), -)); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index bafe8d8eb913..1c6e54438e1c 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -701,20 +701,6 @@ public function testTranslatorMultipleFallbacks() $this->assertEquals(array('en', 'fr'), $calls[1][1][0]); } - public function testTranslatorHelperIsRegisteredWhenTranslatorIsEnabled() - { - $container = $this->createContainerFromFile('templating_php_translator_enabled'); - - $this->assertTrue($container->has('templating.helper.translator')); - } - - public function testTranslatorHelperIsNotRegisteredWhenTranslatorIsDisabled() - { - $container = $this->createContainerFromFile('templating_php_translator_disabled'); - - $this->assertFalse($container->has('templating.helper.translator')); - } - /** * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException */