From 0ef08f58489ba3486816586d5a8df6e4d5fbc297 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 17 Feb 2013 18:30:02 +0100 Subject: [PATCH] [Translator] fixed inconsistency in Translator --- UPGRADE-3.0.md | 5 ++++ .../FrameworkExtension.php | 2 +- .../Tests/Translation/TranslatorTest.php | 6 ++-- .../Component/Translation/CHANGELOG.md | 6 ++++ src/Symfony/Component/Translation/README.md | 2 +- .../Translation/Tests/TranslatorTest.php | 20 ++++++------- .../Component/Translation/Translator.php | 28 ++++++++++++++++++- 7 files changed, 53 insertions(+), 16 deletions(-) diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index 5fe5a5bbaf..50d13d50b3 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -79,6 +79,11 @@ UPGRADE FROM 2.x to 3.0 $route->setSchemes('https'); ``` +### Translator + + * The `Translator::setFallbackLocale()` method has been removed in favor of + `Translator::setFallbackLocales()`. + ### Twig Bridge * The `render` tag is deprecated in favor of the `render` function. diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 7cff079e82..6b65f623f0 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -531,7 +531,7 @@ class FrameworkExtension extends Extension // Use the "real" translator instead of the identity default $container->setAlias('translator', 'translator.default'); $translator = $container->findDefinition('translator.default'); - $translator->addMethodCall('setFallbackLocale', array($config['fallback'])); + $translator->addMethodCall('setFallbackLocales', array($config['fallback'])); // Discover translation directories $dirs = array(); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php index 99751d1239..1988def931 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php @@ -45,7 +45,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase { $translator = $this->getTranslator($this->getLoader()); $translator->setLocale('fr'); - $translator->setFallbackLocale(array('en', 'es')); + $translator->setFallbackLocales(array('en', 'es')); $this->assertEquals('foo (FR)', $translator->trans('foo')); $this->assertEquals('bar (EN)', $translator->trans('bar')); @@ -59,7 +59,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase // prime the cache $translator = $this->getTranslator($this->getLoader(), array('cache_dir' => $this->tmpDir)); $translator->setLocale('fr'); - $translator->setFallbackLocale(array('en', 'es')); + $translator->setFallbackLocales(array('en', 'es')); $this->assertEquals('foo (FR)', $translator->trans('foo')); $this->assertEquals('bar (EN)', $translator->trans('bar')); @@ -71,7 +71,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $loader = $this->getMock('Symfony\Component\Translation\Loader\LoaderInterface'); $translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir)); $translator->setLocale('fr'); - $translator->setFallbackLocale(array('en', 'es')); + $translator->setFallbackLocales(array('en', 'es')); $this->assertEquals('foo (FR)', $translator->trans('foo')); $this->assertEquals('bar (EN)', $translator->trans('bar')); diff --git a/src/Symfony/Component/Translation/CHANGELOG.md b/src/Symfony/Component/Translation/CHANGELOG.md index 81402f557a..9b41c109a2 100644 --- a/src/Symfony/Component/Translation/CHANGELOG.md +++ b/src/Symfony/Component/Translation/CHANGELOG.md @@ -1,6 +1,12 @@ CHANGELOG ========= +2.3.0 +----- + + * added Translator::getFallbackLocales() + * deprecated Translator::setFallbackLocale() in favor of the new Translator::setFallbackLocales() method + 2.2.0 ----- diff --git a/src/Symfony/Component/Translation/README.md b/src/Symfony/Component/Translation/README.md index 4aab5f714e..ca591a309e 100644 --- a/src/Symfony/Component/Translation/README.md +++ b/src/Symfony/Component/Translation/README.md @@ -9,7 +9,7 @@ translated strings from these including support for pluralization. use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('fr_FR', new MessageSelector()); - $translator->setFallbackLocale('fr'); + $translator->setFallbackLocales(array('fr')); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array( 'Hello World!' => 'Bonjour', diff --git a/src/Symfony/Component/Translation/Tests/TranslatorTest.php b/src/Symfony/Component/Translation/Tests/TranslatorTest.php index ac8a35e72f..3829feccee 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorTest.php @@ -27,7 +27,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $this->assertEquals('fr', $translator->getLocale()); } - public function testSetFallbackLocale() + public function testSetFallbackLocales() { $translator = new Translator('en', new MessageSelector()); $translator->addLoader('array', new ArrayLoader()); @@ -37,11 +37,11 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase // force catalogue loading $translator->trans('bar'); - $translator->setFallbackLocale('fr'); + $translator->setFallbackLocales(array('fr')); $this->assertEquals('foobar', $translator->trans('bar')); } - public function testSetFallbackLocaleMultiple() + public function testSetFallbackLocalesMultiple() { $translator = new Translator('en', new MessageSelector()); $translator->addLoader('array', new ArrayLoader()); @@ -51,7 +51,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase // force catalogue loading $translator->trans('bar'); - $translator->setFallbackLocale(array('fr_FR', 'fr')); + $translator->setFallbackLocales(array('fr_FR', 'fr')); $this->assertEquals('bar (fr)', $translator->trans('bar')); } @@ -62,7 +62,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $translator->addResource('array', array('foo' => 'foofoo'), 'en_US'); $translator->addResource('array', array('bar' => 'foobar'), 'en'); - $translator->setFallbackLocale('en'); + $translator->setFallbackLocales(array('en')); $this->assertEquals('foobar', $translator->trans('bar')); } @@ -113,7 +113,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase $translator->addResource('array', array('foo' => 'foo (en_US)'), 'en_US'); $translator->addResource('array', array('bar' => 'bar (en)'), 'en'); - $translator->setFallbackLocale(array('en_US', 'en')); + $translator->setFallbackLocales(array('en_US', 'en')); $this->assertEquals('foo (en_US)', $translator->trans('foo')); $this->assertEquals('bar (en)', $translator->trans('bar')); @@ -122,7 +122,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase public function testTransNonExistentWithFallback() { $translator = new Translator('fr', new MessageSelector()); - $translator->setFallbackLocale('en'); + $translator->setFallbackLocales(array('en')); $translator->addLoader('array', new ArrayLoader()); $this->assertEquals('non-existent', $translator->trans('non-existent')); } @@ -246,7 +246,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase public function testTransChoiceFallback() { $translator = new Translator('ru', new MessageSelector()); - $translator->setFallbackLocale('en'); + $translator->setFallbackLocales(array('en')); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array('some_message2' => 'one thing|%count% things'), 'en'); @@ -256,7 +256,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase public function testTransChoiceFallbackBis() { $translator = new Translator('ru', new MessageSelector()); - $translator->setFallbackLocale(array('en_US', 'en')); + $translator->setFallbackLocales(array('en_US', 'en')); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array('some_message2' => 'one thing|%count% things'), 'en_US'); @@ -269,7 +269,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase public function testTransChoiceFallbackWithNoTranslation() { $translator = new Translator('ru', new MessageSelector()); - $translator->setFallbackLocale('en'); + $translator->setFallbackLocales(array('en')); $translator->addLoader('array', new ArrayLoader()); $this->assertEquals('10 things', $translator->transChoice('some_message2', 10, array('%count%' => 10))); diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index 439a62d34b..4538781c79 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -122,14 +122,40 @@ class Translator implements TranslatorInterface * * @param string|array $locales The fallback locale(s) * + * @deprecated since 2.3, to be removed in 3.0. Use setFallbackLocales() instead. + * * @api */ public function setFallbackLocale($locales) + { + $this->setFallbackLocales(is_array($locales) ? $locales : array($locales)) + } + + /** + * Sets the fallback locales. + * + * @param array $locales The fallback locales + * + * @api + */ + public function setFallbackLocales(array $locales) { // needed as the fallback locales are linked to the already loaded catalogues $this->catalogues = array(); - $this->fallbackLocales = is_array($locales) ? $locales : array($locales); + $this->fallbackLocales = $locales; + } + + /** + * Gets the fallback locales. + * + * @return array $locales The fallback locales + * + * @api + */ + public function getFallbackLocales() + { + return $this->fallbackLocales; } /**