diff --git a/src/Symfony/Component/Translation/Tests/TranslatorTest.php b/src/Symfony/Component/Translation/Tests/TranslatorTest.php index 0952a4514f..32b01772b6 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorTest.php @@ -239,6 +239,30 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $translator->trans('foo'); } + public function testFallbackCatalogueResources() + { + $translator = new Translator('en_GB', new MessageSelector()); + $translator->addLoader('yml', new \Symfony\Component\Translation\Loader\YamlFileLoader()); + $translator->addResource('yml', __DIR__.'/fixtures/empty.yml', 'en_GB'); + $translator->addResource('yml', __DIR__.'/fixtures/resources.yml', 'en'); + + // force catalogue loading + $this->assertEquals('bar', $translator->trans('foo', array())); + + $cataloguesProperty = new \ReflectionProperty($translator, 'catalogues'); + $cataloguesProperty->setAccessible(true); + $catalogues = $cataloguesProperty->getValue($translator); + + $resources = $catalogues['en']->getResources(); + $this->assertCount(1, $resources); + $this->assertContains( __DIR__.'/fixtures/resources.yml', $resources); + + $resources = $catalogues['en_GB']->getResources(); + $this->assertCount(2, $resources); + $this->assertContains( __DIR__.'/fixtures/empty.yml', $resources); + $this->assertContains( __DIR__.'/fixtures/resources.yml', $resources); + } + /** * @dataProvider getTransTests */ diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index 96855e8fe0..07c3fc54e4 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -255,6 +255,9 @@ class Translator implements TranslatorInterface } $fallbackCatalogue = new MessageCatalogue($fallback, $this->catalogues[$fallback]->all()); + foreach ($this->catalogues[$fallback]->getResources() as $resource) { + $fallbackCatalogue->addResource($resource); + } $current->addFallbackCatalogue($fallbackCatalogue); $current = $fallbackCatalogue; }