diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index c9fac59318..1597c22022 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -116,6 +116,13 @@ EOF ? new DiffOperation($currentCatalogue, $extractedCatalogue) : new MergeOperation($currentCatalogue, $extractedCatalogue); + // Exit if no messages found. + if (!count($operation->getDomains())) { + $output->writeln("\nNo translation found."); + + return; + } + // show compiled list of messages if ($input->getOption('dump-messages') === true) { foreach ($operation->getDomains() as $domain) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Translation/TranslationLoader.php b/src/Symfony/Bundle/FrameworkBundle/Translation/TranslationLoader.php index aea1ec4e22..c22c6191af 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Translation/TranslationLoader.php +++ b/src/Symfony/Bundle/FrameworkBundle/Translation/TranslationLoader.php @@ -47,6 +47,10 @@ class TranslationLoader */ public function loadMessages($directory, MessageCatalogue $catalogue) { + if (!is_dir($directory)) { + return; + } + foreach ($this->loaders as $format => $loader) { // load any existing translation files $finder = new Finder(); diff --git a/src/Symfony/Component/Translation/Writer/TranslationWriter.php b/src/Symfony/Component/Translation/Writer/TranslationWriter.php index 9d70c12f37..d78bfa98ac 100644 --- a/src/Symfony/Component/Translation/Writer/TranslationWriter.php +++ b/src/Symfony/Component/Translation/Writer/TranslationWriter.php @@ -67,6 +67,10 @@ class TranslationWriter // get the right dumper $dumper = $this->dumpers[$format]; + if (isset($options['path']) && !is_dir($options['path'])) { + mkdir($options['path'], 0777, true); + } + // save $dumper->dump($catalogue, $options); }