From 1e671552254e902d5495ebc1cc3bc6b282d5a04a Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 14 Dec 2016 22:05:29 +0100 Subject: [PATCH] don't load translator services if not required --- .../Bundle/FrameworkBundle/CHANGELOG.md | 2 ++ .../FrameworkExtension.php | 27 ++++++++++++------- .../Resources/config/form_csrf.xml | 2 +- .../Resources/config/identity_translator.xml | 13 +++++++++ .../Resources/config/translation.xml | 6 ----- 5 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/identity_translator.xml diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md index b9e88311ece9..61f90c06c511 100644 --- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md @@ -4,6 +4,8 @@ CHANGELOG 3.3.0 ----- + * Translation related services are not loaded anymore when the `framework.translator` option + is disabled. * Added `GlobalVariables::getToken()` 3.2.0 diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 00cd236dc19c..c368cf0501a2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -14,6 +14,7 @@ use Doctrine\Common\Annotations\Reader; use Symfony\Bridge\Monolog\Processor\DebugProcessor; use Symfony\Component\Cache\Adapter\AdapterInterface; +use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -85,14 +86,22 @@ public function load(array $configs, ContainerBuilder $container) $this->annotationsConfigEnabled = $this->isConfigEnabled($container, $config['annotations']); // A translator must always be registered (as support is included by - // default in the Form component). If disabled, an identity translator - // will be used and everything will still work as expected. - if (class_exists('Symfony\Component\Translation\Translator') || $this->isConfigEnabled($container, $config['form'])) { - if (!class_exists('Symfony\Component\Translation\Translator')) { + // default in the Form and Validator component). If disabled, an identity + // translator will be used and everything will still work as expected. + if ($this->isConfigEnabled($container, $config['translator']) || $this->isConfigEnabled($container, $config['form']) || $this->isConfigEnabled($container, $config['validation'])) { + if (!class_exists('Symfony\Component\Translation\Translator') && $this->isConfigEnabled($container, $config['translator'])) { + throw new LogicException('Translation support cannot be enabled as the Translation component is not installed.'); + } + + if (!class_exists('Symfony\Component\Translation\Translator') && $this->isConfigEnabled($container, $config['form'])) { throw new LogicException('Form support cannot be enabled as the Translation component is not installed.'); } - $loader->load('translation.xml'); + if (!class_exists('Symfony\Component\Translation\Translator') && $this->isConfigEnabled($container, $config['validation'])) { + throw new LogicException('Validation support cannot be enabled as the Translation component is not installed.'); + } + + $loader->load('identity_translator.xml'); } if (isset($config['secret'])) { @@ -165,7 +174,7 @@ public function load(array $configs, ContainerBuilder $container) $this->registerEsiConfiguration($config['esi'], $container, $loader); $this->registerSsiConfiguration($config['ssi'], $container, $loader); $this->registerFragmentsConfiguration($config['fragments'], $container, $loader); - $this->registerTranslatorConfiguration($config['translator'], $container); + $this->registerTranslatorConfiguration($config['translator'], $container, $loader); $this->registerProfilerConfiguration($config['profiler'], $container, $loader); $this->registerCacheConfiguration($config['cache'], $container); $this->registerWorkflowConfiguration($config['workflows'], $container, $loader); @@ -802,15 +811,13 @@ private function createVersion(ContainerBuilder $container, $version, $format, $ * @param array $config A translator configuration array * @param ContainerBuilder $container A ContainerBuilder instance */ - private function registerTranslatorConfiguration(array $config, ContainerBuilder $container) + private function registerTranslatorConfiguration(array $config, ContainerBuilder $container, LoaderInterface $loader) { if (!$this->isConfigEnabled($container, $config)) { return; } - if (!class_exists('Symfony\Component\Translation\Translator')) { - throw new LogicException('Translation support cannot be enabled as the Translator component is not installed.'); - } + $loader->load('translation.xml'); $this->translationConfigEnabled = true; diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml index a562931a5e9a..f5417c1f0de1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml @@ -10,7 +10,7 @@ %form.type_extension.csrf.enabled% %form.type_extension.csrf.field_name% - + %validator.translation_domain% diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/identity_translator.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/identity_translator.xml new file mode 100644 index 000000000000..1ace993524ec --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/identity_translator.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml index ba1c3bc16831..75b77914bdfe 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml @@ -27,12 +27,6 @@ - - - - - -