diff options
Diffstat (limited to 'vendor/symfony/translation/Dumper/FileDumper.php')
| -rw-r--r-- | vendor/symfony/translation/Dumper/FileDumper.php | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/vendor/symfony/translation/Dumper/FileDumper.php b/vendor/symfony/translation/Dumper/FileDumper.php index 2009c53403..477fcfa19e 100644 --- a/vendor/symfony/translation/Dumper/FileDumper.php +++ b/vendor/symfony/translation/Dumper/FileDumper.php @@ -67,36 +67,37 @@ abstract class FileDumper implements DumperInterface throw new InvalidArgumentException('The file dumper needs a path option.'); } + $hasMessageFormatter = class_exists(\MessageFormatter::class); + // save a file for each domain foreach ($messages->getDomains() as $domain) { - $fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale()); - if (!file_exists($fullpath)) { - $directory = \dirname($fullpath); + if ($hasMessageFormatter) { + $defaultDomain = $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX; + $altDomain = $domain; + } else { + $defaultDomain = $domain; + $altDomain = $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX; + } + $defaultPath = $options['path'].'/'.$this->getRelativePath($defaultDomain, $messages->getLocale()); + $altPath = $options['path'].'/'.$this->getRelativePath($altDomain, $messages->getLocale()); + + if (!file_exists($defaultPath) && file_exists($altPath)) { + [$defaultPath, $altPath] = [$altPath, $defaultPath]; + } + + if (!file_exists($defaultPath)) { + $directory = \dirname($defaultPath); if (!file_exists($directory) && !@mkdir($directory, 0777, true)) { throw new RuntimeException(sprintf('Unable to create directory "%s".', $directory)); } } - $intlDomain = $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX; - $intlMessages = $messages->all($intlDomain); - - if ($intlMessages) { - $intlPath = $options['path'].'/'.$this->getRelativePath($intlDomain, $messages->getLocale()); - file_put_contents($intlPath, $this->formatCatalogue($messages, $intlDomain, $options)); - - $messages->replace([], $intlDomain); - - try { - if ($messages->all($domain)) { - file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options)); - } - continue; - } finally { - $messages->replace($intlMessages, $intlDomain); - } + if (file_exists($altPath)) { + // clear alternative translation file + file_put_contents($altPath, $this->formatCatalogue(new MessageCatalogue($messages->getLocale()), $altDomain, $options)); } - file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options)); + file_put_contents($defaultPath, $this->formatCatalogue($messages, $domain, $options)); } } |
