From d3f6051939cce85cb0bd1393f74f7f700ceead71 Mon Sep 17 00:00:00 2001 From: hardchor Date: Sat, 12 Oct 2013 15:16:31 +0100 Subject: [PATCH 1/2] Removes duplicates from dumped translation messages `array_merge_recursive` combines values of duplicate array keys into arrays (`array_merge_recursive(array('test' => 1), array('test' => 2))` becomes `array('test' => array(1, 2))` which causes duplicate translation messages. This fix is copied from the controller which fixes the same issue. --- Dumper/TranslationDumper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dumper/TranslationDumper.php b/Dumper/TranslationDumper.php index 2095f470..ef781552 100644 --- a/Dumper/TranslationDumper.php +++ b/Dumper/TranslationDumper.php @@ -101,6 +101,8 @@ public function dump($targetDir = 'web', $symlink = false, $directory = null) foreach ($this->getTranslationMessages() as $locale => $domains) { foreach ($domains as $domain => $messageList) { foreach ($formats as $format) { + $messageList = array_map(function($m){ return is_array($m) ? end($m) : $m; }, $messageList); + $content = $this->engine->render('BazingaExposeTranslationBundle::exposeTranslation.' . $format . '.twig', array( 'messages' => array($domain => $messageList), 'locale' => $locale, From 88a0ae2ecf0df5c285fccfba20fea716f56c3043 Mon Sep 17 00:00:00 2001 From: Burkhard Reffeling Date: Sat, 12 Oct 2013 15:41:55 +0100 Subject: [PATCH 2/2] replaced calls to with to produce flat message arrays --- Controller/Controller.php | 6 +----- Dumper/TranslationDumper.php | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/Controller/Controller.php b/Controller/Controller.php index 270b077c..857d5094 100644 --- a/Controller/Controller.php +++ b/Controller/Controller.php @@ -119,11 +119,7 @@ public function exposeTranslationAction(Request $request, $domain_name, $_locale $messages = array(); foreach ($catalogues as $catalogue) { - $messages = array_merge_recursive($messages, $catalogue->all()); - } - - foreach ($messages as &$domain) { - $domain = array_map(function($m){ return is_array($m) ? end($m) : $m; }, $domain); + $messages = array_replace_recursive($messages, $catalogue->all()); } $content = $this->engine->render('BazingaExposeTranslationBundle::exposeTranslation.' . $_format . '.twig', array( diff --git a/Dumper/TranslationDumper.php b/Dumper/TranslationDumper.php index ef781552..9ab9fddf 100644 --- a/Dumper/TranslationDumper.php +++ b/Dumper/TranslationDumper.php @@ -101,8 +101,6 @@ public function dump($targetDir = 'web', $symlink = false, $directory = null) foreach ($this->getTranslationMessages() as $locale => $domains) { foreach ($domains as $domain => $messageList) { foreach ($formats as $format) { - $messageList = array_map(function($m){ return is_array($m) ? end($m) : $m; }, $messageList); - $content = $this->engine->render('BazingaExposeTranslationBundle::exposeTranslation.' . $format . '.twig', array( 'messages' => array($domain => $messageList), 'locale' => $locale, @@ -160,7 +158,7 @@ private function getTranslationMessages() $catalogue = $this->loaders[$extension]->load($file, $locale, $domain); if (isset($messages[$locale])) { - $messages[$locale] = array_merge_recursive($messages[$locale], $catalogue->all()); + $messages[$locale] = array_replace_recursive($messages[$locale], $catalogue->all()); } else { $messages[$locale] = $catalogue->all(); }