diff --git a/UPGRADE-3.2.md b/UPGRADE-3.2.md index d3488ce0d3a46..7b1189b41c352 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 ec9447cf4aae5..3e47378a46ab3 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 138964e286e53..e789a9525f720 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php @@ -84,6 +84,18 @@ protected function configure() ; } + /** + * {@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 9c74f51d3f4bb..04c9a4d118e4b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -66,6 +66,18 @@ protected function configure() ; } + /** + * {@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 00714cbc96c1d..a3a50eed2d323 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -70,11 +70,6 @@ public function load(array $configs, ContainerBuilder $container) $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 @@ public function load(array $configs, ContainerBuilder $container) $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 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder 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 63055fd303de1..e1648befed87d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php @@ -85,8 +85,10 @@ public function build(ContainerBuilder $container) $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 d7095605e3b4d..ba1c3bc168316 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 5c1f78b1c4f75..72a200b313fa4 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 c461e975b9a43..ec8debfaff7a9 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",