diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
index b9e88311ece9e..61f90c06c5111 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 00cd236dc19c8..c368cf0501a25 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 a562931a5e9a4..f5417c1f0de14 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 0000000000000..1ace993524ec7
--- /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 ba1c3bc168316..75b77914bdfe9 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml
@@ -27,12 +27,6 @@
-
-
-
-
-
-