From 59f2172c013cf5b20e26f2dd57fd74e53d2648ac Mon Sep 17 00:00:00 2001 From: Abdellatif Ait boudad Date: Fri, 3 Apr 2015 08:53:14 +0100 Subject: [PATCH] [Translation][Profiler] fixed infiinite loop when collect msg from fallback. --- .../Component/Translation/DataCollectorTranslator.php | 2 ++ .../Translation/Tests/DataCollectorTranslatorTest.php | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Translation/DataCollectorTranslator.php b/src/Symfony/Component/Translation/DataCollectorTranslator.php index 99c26f182f..a94f9adabe 100644 --- a/src/Symfony/Component/Translation/DataCollectorTranslator.php +++ b/src/Symfony/Component/Translation/DataCollectorTranslator.php @@ -137,6 +137,8 @@ class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInter $locale = $fallbackCatalogue->getLocale(); break; } + + $fallbackCatalogue = $fallbackCatalogue->getFallBackCatalogue(); } } else { $state = self::MESSAGE_MISSING; diff --git a/src/Symfony/Component/Translation/Tests/DataCollectorTranslatorTest.php b/src/Symfony/Component/Translation/Tests/DataCollectorTranslatorTest.php index 1e93cb4164..8e98ad31f4 100644 --- a/src/Symfony/Component/Translation/Tests/DataCollectorTranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/DataCollectorTranslatorTest.php @@ -26,11 +26,12 @@ class DataCollectorTranslatorTest extends \PHPUnit_Framework_TestCase public function testCollectMessages() { $collector = $this->createCollector(); - $collector->setFallbackLocales(array('fr')); + $collector->setFallbackLocales(array('fr', 'ru')); $collector->trans('foo'); $collector->trans('bar'); $collector->transChoice('choice', 0); + $collector->trans('bar_ru'); $expectedMessages = array(); $expectedMessages[] = array( @@ -54,6 +55,13 @@ class DataCollectorTranslatorTest extends \PHPUnit_Framework_TestCase 'domain' => 'messages', 'state' => DataCollectorTranslator::MESSAGE_MISSING, ); + $expectedMessages[] = array( + 'id' => 'bar_ru', + 'translation' => 'bar (ru)', + 'locale' => 'ru', + 'domain' => 'messages', + 'state' => DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK, + ); $this->assertEquals($expectedMessages, $collector->getCollectedMessages()); } @@ -64,6 +72,7 @@ class DataCollectorTranslatorTest extends \PHPUnit_Framework_TestCase $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array('foo' => 'foo (en)'), 'en'); $translator->addResource('array', array('bar' => 'bar (fr)'), 'fr'); + $translator->addResource('array', array('bar_ru' => 'bar (ru)'), 'ru'); $collector = new DataCollectorTranslator($translator);