@@ -346,7 +346,7 @@ protected function initializeCatalogue($locale)
346
346
347
347
/**
348
348
* @param string $locale
349
- * @param bool $forceRefresh
349
+ * @param bool $forceRefresh
350
350
*/
351
351
private function initializeCacheCatalogue ($ locale , $ forceRefresh = false )
352
352
{
@@ -358,29 +358,7 @@ private function initializeCacheCatalogue($locale, $forceRefresh = false)
358
358
$ cache = new ConfigCache ($ this ->cacheDir .'/catalogue. ' .$ locale .'.php ' , $ this ->debug );
359
359
if ($ forceRefresh || !$ cache ->isFresh ()) {
360
360
$ this ->initializeCatalogue ($ locale );
361
-
362
- $ fallbackContent = '' ;
363
- $ current = '' ;
364
- $ replacementPattern = '/[^a-z0-9_]/i ' ;
365
- foreach ($ this ->computeFallbackLocales ($ locale ) as $ fallback ) {
366
- $ fallbackSuffix = ucfirst (preg_replace ($ replacementPattern , '_ ' , $ fallback ));
367
- $ currentSuffix = ucfirst (preg_replace ($ replacementPattern , '_ ' , $ current ));
368
-
369
- $ fallbackContent .= sprintf (<<<EOF
370
- \$catalogue%s = new MessageCatalogue('%s', %s);
371
- \$catalogue%s->addFallbackCatalogue( \$catalogue%s);
372
-
373
-
374
- EOF
375
- ,
376
- $ fallbackSuffix ,
377
- $ fallback ,
378
- var_export ($ this ->catalogues [$ fallback ]->all (), true ),
379
- $ currentSuffix ,
380
- $ fallbackSuffix
381
- );
382
- $ current = $ fallback ;
383
- }
361
+ $ fallbackContent = $ this ->getFallbackContent ($ this ->catalogues [$ locale ]);
384
362
385
363
$ content = sprintf (<<<EOF
386
364
<?php
@@ -408,7 +386,7 @@ private function initializeCacheCatalogue($locale, $forceRefresh = false)
408
386
409
387
$ catalogue = include $ cache ;
410
388
411
- /**
389
+ /*
412
390
* Old cache returns only the catalogue, without resourcesHash
413
391
*/
414
392
$ resourcesHash = null ;
@@ -423,6 +401,51 @@ private function initializeCacheCatalogue($locale, $forceRefresh = false)
423
401
$ this ->catalogues [$ locale ] = $ catalogue ;
424
402
}
425
403
404
+ private function getFallbackContent (MessageCatalogue $ catalogue )
405
+ {
406
+ if (!$ this ->debug ) {
407
+ // merge all fallback catalogues messages into $catalogue
408
+ $ fallbackCatalogue = $ catalogue ->getFallbackCatalogue ();
409
+ $ messages = $ catalogue ->all ();
410
+ while ($ fallbackCatalogue ) {
411
+ $ messages = array_replace_recursive ($ fallbackCatalogue ->all (), $ messages );
412
+ $ fallbackCatalogue = $ fallbackCatalogue ->getFallbackCatalogue ();
413
+ }
414
+ foreach ($ messages as $ domain => $ domainMessages ) {
415
+ $ catalogue ->add ($ domainMessages , $ domain );
416
+ }
417
+
418
+ return '' ;
419
+ }
420
+
421
+ $ fallbackContent = '' ;
422
+ $ current = '' ;
423
+ $ replacementPattern = '/[^a-z0-9_]/i ' ;
424
+ $ fallbackCatalogue = $ catalogue ->getFallbackCatalogue ();
425
+ while ($ fallbackCatalogue ) {
426
+ $ fallback = $ fallbackCatalogue ->getLocale ();
427
+ $ fallbackSuffix = ucfirst (preg_replace ($ replacementPattern , '_ ' , $ fallback ));
428
+ $ currentSuffix = ucfirst (preg_replace ($ replacementPattern , '_ ' , $ current ));
429
+
430
+ $ fallbackContent .= sprintf (<<<EOF
431
+ \$catalogue%s = new MessageCatalogue('%s', %s);
432
+ \$catalogue%s->addFallbackCatalogue( \$catalogue%s);
433
+
434
+ EOF
435
+ ,
436
+ $ fallbackSuffix ,
437
+ $ fallback ,
438
+ var_export ($ fallbackCatalogue ->all (), true ),
439
+ $ currentSuffix ,
440
+ $ fallbackSuffix
441
+ );
442
+ $ current = $ fallbackCatalogue ->getLocale ();
443
+ $ fallbackCatalogue = $ fallbackCatalogue ->getFallbackCatalogue ();
444
+ }
445
+
446
+ return $ fallbackContent ;
447
+ }
448
+
426
449
private function getResourcesHash ($ locale )
427
450
{
428
451
if (!isset ($ this ->resources [$ locale ])) {
0 commit comments