diff --git a/UPGRADE-3.2.md b/UPGRADE-3.2.md
index d3488ce0d3..7b1189b41c 100644
--- a/UPGRADE-3.2.md
+++ b/UPGRADE-3.2.md
@@ -4,6 +4,9 @@ UPGRADE FROM 3.1 to 3.2
FrameworkBundle
---------------
+ * The `symfony/translation` dependency has been removed; require it via `composer
+ require symfony/translation` if you depend on it and don't already depend on
+ `symfony/symfony`
* The `symfony/asset` dependency has been removed; require it via `composer
require symfony/asset` if you depend on it and don't already depend on
`symfony/symfony`
diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
index ec9447cf4a..3e47378a46 100644
--- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
+++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
@@ -4,6 +4,7 @@ CHANGELOG
3.2.0
-----
+ * Removed `symfony/translation` from the list of required dependencies in `composer.json`
* Removed `symfony/asset` from the list of required dependencies in `composer.json`
* The `Resources/public/images/*` files have been removed.
* The `Resources/public/css/*.css` files have been removed (they are now inlined in TwigBundle).
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php
index 138964e286..e789a9525f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php
@@ -84,6 +84,18 @@ EOF
;
}
+ /**
+ * {@inheritdoc}
+ */
+ public function isEnabled()
+ {
+ if (!class_exists('Symfony\Component\Translation\Translator')) {
+ return false;
+ }
+
+ return parent::isEnabled();
+ }
+
/**
* {@inheritdoc}
*/
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
index 9c74f51d3f..04c9a4d118 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
@@ -66,6 +66,18 @@ EOF
;
}
+ /**
+ * {@inheritdoc}
+ */
+ public function isEnabled()
+ {
+ if (!class_exists('Symfony\Component\Translation\Translator')) {
+ return false;
+ }
+
+ return parent::isEnabled();
+ }
+
/**
* {@inheritdoc}
*/
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 00714cbc96..a3a50eed2d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -70,11 +70,6 @@ class FrameworkExtension extends Extension
$loader->load('services.xml');
$loader->load('fragment_renderer.xml');
- // 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.
- $loader->load('translation.xml');
-
// Property access is used by both the Form and the Validator component
$loader->load('property_access.xml');
@@ -84,6 +79,17 @@ class FrameworkExtension extends Extension
$configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs);
+ // 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')) {
+ throw new LogicException('Form support cannot be enabled as the Translation component is not installed.');
+ }
+
+ $loader->load('translation.xml');
+ }
+
if (isset($config['secret'])) {
$container->setParameter('kernel.secret', $config['secret']);
}
@@ -762,6 +768,11 @@ class FrameworkExtension extends Extension
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.');
+ }
+
$this->translationConfigEnabled = true;
// Use the "real" translator instead of the identity default
diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
index 63055fd303..e1648befed 100644
--- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
+++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
@@ -85,8 +85,10 @@ class FrameworkBundle extends Bundle
$container->addCompilerPass(new AddCacheWarmerPass());
$container->addCompilerPass(new AddCacheClearerPass());
$container->addCompilerPass(new AddExpressionLanguageProvidersPass());
- $container->addCompilerPass(new TranslationExtractorPass());
- $container->addCompilerPass(new TranslationDumperPass());
+ if (class_exists('Symfony\Component\Translation\Translator')) {
+ $container->addCompilerPass(new TranslationExtractorPass());
+ $container->addCompilerPass(new TranslationDumperPass());
+ }
$container->addCompilerPass(new FragmentRendererPass(), PassConfig::TYPE_AFTER_REMOVING);
$container->addCompilerPass(new SerializerPass());
$container->addCompilerPass(new PropertyInfoPass());
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml
index d7095605e3..ba1c3bc168 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml
@@ -131,5 +131,11 @@
+
+
+
+
+
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml
index 5c1f78b1c4..72a200b313 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml
@@ -56,12 +56,6 @@
-
-
-
-
-
-
diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json
index c461e975b9..ec8debfaff 100644
--- a/src/Symfony/Bundle/FrameworkBundle/composer.json
+++ b/src/Symfony/Bundle/FrameworkBundle/composer.json
@@ -32,7 +32,6 @@
"symfony/security-csrf": "~2.8|~3.0",
"symfony/stopwatch": "~2.8|~3.0",
"symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
"doctrine/cache": "~1.0",
"doctrine/annotations": "~1.0"
},
@@ -48,6 +47,7 @@
"symfony/expression-language": "~2.8|~3.0",
"symfony/process": "~2.8|~3.0",
"symfony/serializer": "~2.8|~3.0",
+ "symfony/translation": "~2.8|~3.0",
"symfony/validator": "~3.2",
"symfony/yaml": "~3.2",
"symfony/property-info": "~2.8|~3.0",