Skip to content

Commit 00f84f0

Browse files
committed
[Translation][cache fallback] keep only missing messages in fallbackCatalogue.
1 parent 08c83d4 commit 00f84f0

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

src/Symfony/Component/Translation/Translator.php

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\Config\ConfigCacheInterface;
1717
use Symfony\Component\Config\ConfigCacheFactoryInterface;
1818
use Symfony\Component\Config\ConfigCacheFactory;
19+
use Symfony\Component\Translation\Catalogue\DiffOperation;
1920

2021
/**
2122
* Translator.
@@ -420,21 +421,6 @@ public function dumpCatalogue($locale, ConfigCacheInterface $cache)
420421

421422
private function getFallbackContent(MessageCatalogue $catalogue)
422423
{
423-
if (!$this->debug) {
424-
// merge all fallback catalogues messages into $catalogue
425-
$fallbackCatalogue = $catalogue->getFallbackCatalogue();
426-
$messages = $catalogue->all();
427-
while ($fallbackCatalogue) {
428-
$messages = array_replace_recursive($fallbackCatalogue->all(), $messages);
429-
$fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue();
430-
}
431-
foreach ($messages as $domain => $domainMessages) {
432-
$catalogue->add($domainMessages, $domain);
433-
}
434-
435-
return '';
436-
}
437-
438424
$fallbackContent = '';
439425
$current = '';
440426
$replacementPattern = '/[^a-z0-9_]/i';
@@ -444,6 +430,14 @@ private function getFallbackContent(MessageCatalogue $catalogue)
444430
$fallbackSuffix = ucfirst(preg_replace($replacementPattern, '_', $fallback));
445431
$currentSuffix = ucfirst(preg_replace($replacementPattern, '_', $current));
446432

433+
$fallbackMessages = $fallbackCatalogue->all();
434+
if (!$this->debug) {
435+
// keep only missing messages.
436+
$currentCatalogue = new MessageCatalogue($fallbackCatalogue->getLocale(), $catalogue->all());
437+
$operation = new DiffOperation($currentCatalogue, $fallbackCatalogue);
438+
$fallbackMessages = $operation->getResult()->all();
439+
}
440+
447441
$fallbackContent .= sprintf(<<<EOF
448442
\$catalogue%s = new MessageCatalogue('%s', %s);
449443
\$catalogue%s->addFallbackCatalogue(\$catalogue%s);
@@ -452,7 +446,7 @@ private function getFallbackContent(MessageCatalogue $catalogue)
452446
,
453447
$fallbackSuffix,
454448
$fallback,
455-
var_export($fallbackCatalogue->all(), true),
449+
var_export($fallbackMessages, true),
456450
$currentSuffix,
457451
$fallbackSuffix
458452
);

0 commit comments

Comments
 (0)