diff --git a/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php b/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php
index fffc593f0e6c9..607302d9917c6 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 434053d94604a..258e654b8f12b 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 82d5b4c6621cf..7dbe57dc2e264 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 2ba81acef0529..b3dd76d42adc2 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 4fb2aec557f67..0000000000000
--- 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 b8053c853b128..0000000000000
--- 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 bafe8d8eb9133..1c6e54438e1c9 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
*/