diff --git a/src/Symfony/Component/Translation/Tests/TranslatorTest.php b/src/Symfony/Component/Translation/Tests/TranslatorTest.php index ac8a35e72f..3432fdac69 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorTest.php @@ -67,6 +67,20 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $this->assertEquals('foobar', $translator->trans('bar')); } + public function testAddResourceAfterTrans() + { + $translator = new Translator('fr', new MessageSelector()); + $translator->addLoader('array', new ArrayLoader()); + + $translator->setFallbackLocales(array('en')); + + $translator->addResource('array', array('foo' => 'foofoo'), 'en'); + $this->assertEquals('foofoo', $translator->trans('foo')); + + $translator->addResource('array', array('bar' => 'foobar'), 'en'); + $this->assertEquals('foobar', $translator->trans('bar')); + } + /** * @dataProvider getTransFileTests * @expectedException \Symfony\Component\Translation\Exception\NotFoundResourceException diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index 47e8fe183f..a45dd0b75e 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -94,7 +94,11 @@ class Translator implements TranslatorInterface { $this->resources[$locale][] = array($format, $resource, $domain); - unset($this->catalogues[$locale]); + if(in_array($locale, $this->fallbackLocales)) { + $this->catalogues = array(); + } else { + unset($this->catalogues[$locale]); + } } /**