Ver código fonte

[FrameworkBundle] disable translator if not explicitely enabled

Fabien Potencier 14 anos atrás
pai
commit
dba8c67941

+ 3 - 1
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

@@ -118,7 +118,9 @@ class FrameworkExtension extends Extension
 
         $this->registerSessionConfiguration($config, $container);
 
-        $this->registerTranslatorConfiguration($config, $container);
+        if (array_key_exists('translator', $config)) {
+            $this->registerTranslatorConfiguration($config, $container);
+        }
 
         $this->addClassesToCompile(array(
             'Symfony\\Component\\HttpFoundation\\ParameterBag',

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml

@@ -93,7 +93,7 @@
         </service>
 
         <service id="templating.helper.translator" class="%templating.helper.translator.class%">
-            <tag name="templating.helper" alias="translator" />
+            <tag name="templating.helper" alias="translator" on-invalid="ignore" />
             <argument type="service" id="translator" />
         </service>
 

+ 9 - 1
src/Symfony/Bundle/FrameworkBundle/Templating/Helper/TranslatorHelper.php

@@ -28,7 +28,7 @@ class TranslatorHelper extends Helper
      *
      * @param TranslatorInterface $translator A TranslatorInterface instance
      */
-    public function __construct(TranslatorInterface $translator)
+    public function __construct(TranslatorInterface $translator = null)
     {
         $this->translator = $translator;
     }
@@ -38,6 +38,10 @@ class TranslatorHelper extends Helper
      */
     public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null)
     {
+        if (null === $this->translator) {
+            throw \RuntimeException('Translator is not enabled.');
+        }
+
         return $this->translator->trans($id, $parameters, $domain, $locale);
     }
 
@@ -46,6 +50,10 @@ class TranslatorHelper extends Helper
      */
     public function transChoice($id, $number, array $parameters = array(), $domain = 'messages', $locale = null)
     {
+        if (null === $this->translator) {
+            throw \RuntimeException('Translator is not enabled.');
+        }
+
         return $this->translator->transChoice($id, $number, $parameters, $domain, $locale);
     }
 

+ 5 - 1
src/Symfony/Bundle/TwigBundle/Extension/TransExtension.php

@@ -23,13 +23,17 @@ class TransExtension extends \Twig_Extension
 {
     protected $translator;
 
-    public function __construct(TranslatorInterface $translator)
+    public function __construct(TranslatorInterface $translator = null)
     {
         $this->translator = $translator;
     }
 
     public function getTranslator()
     {
+        if (null === $this->translator) {
+            throw \RuntimeException('Translator is not enabled.');
+        }
+
         return $this->translator;
     }
 

+ 1 - 1
src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml

@@ -44,7 +44,7 @@
 
         <service id="twig.extension.trans" class="Symfony\Bundle\TwigBundle\Extension\TransExtension" public="false">
             <tag name="twig.extension" />
-            <argument type="service" id="translator" />
+            <argument type="service" id="translator" on-invalid="ignore" />
         </service>
 
         <service id="twig.extension.helpers" class="Symfony\Bundle\TwigBundle\Extension\TemplatingExtension" public="false">