summaryrefslogtreecommitdiff
path: root/vendor/symfony/translation/Dumper/FileDumper.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/translation/Dumper/FileDumper.php')
-rw-r--r--vendor/symfony/translation/Dumper/FileDumper.php43
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));
}
}