feature #9541 [Translation] make IdentityTranslater consistent with normal translator (Tobion)

This PR was merged into the master branch.

Discussion
----------

[Translation] make IdentityTranslater consistent with normal translator

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | n/a

The MessageSelector should not be required in the constructor of the IdentityTranslator because it's also optional for the [Translator](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Translation/Translator.php#L64).
I also fixed the TranslatorInterface phpdoc and the IdentityTranslator params similar to 90a20d7835

Commits
-------

7cdb260 [Translation] make IdentityTranslater consistent with normal translator
This commit is contained in:
Fabien Potencier 2013-11-21 08:05:43 +01:00
commit 95b2d02ce9
6 changed files with 41 additions and 43 deletions

View File

@ -30,7 +30,7 @@ abstract class FileDumper implements DumperInterface
public function dump(MessageCatalogue $messages, $options = array())
{
if (!array_key_exists('path', $options)) {
throw new \InvalidArgumentException('The file dumper need a path options.');
throw new \InvalidArgumentException('The file dumper needs a path option.');
}
// save a file for each domain

View File

@ -26,13 +26,13 @@ class IdentityTranslator implements TranslatorInterface
/**
* Constructor.
*
* @param MessageSelector $selector The message selector for pluralization
* @param MessageSelector|null $selector The message selector for pluralization
*
* @api
*/
public function __construct(MessageSelector $selector)
public function __construct(MessageSelector $selector = null)
{
$this->selector = $selector;
$this->selector = $selector ?: new MessageSelector();
}
/**
@ -60,7 +60,7 @@ class IdentityTranslator implements TranslatorInterface
*
* @api
*/
public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null)
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
return strtr((string) $id, $parameters);
}
@ -70,7 +70,7 @@ class IdentityTranslator implements TranslatorInterface
*
* @api
*/
public function transChoice($id, $number, array $parameters = array(), $domain = 'messages', $locale = null)
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
{
return strtr($this->selector->choose((string) $id, (int) $number, $locale ?: $this->getLocale()), $parameters);
}

View File

@ -31,9 +31,9 @@ class PluralizationRules
*/
public static function get($number, $locale)
{
if ("pt_BR" == $locale) {
if ('pt_BR' === $locale) {
// temporary set a locale for brazilian
$locale = "xbr";
$locale = 'xbr';
}
if (strlen($locale) > 3) {
@ -197,9 +197,9 @@ class PluralizationRules
*/
public static function set($rule, $locale)
{
if ("pt_BR" == $locale) {
if ('pt_BR' === $locale) {
// temporary set a locale for brazilian
$locale = "xbr";
$locale = 'xbr';
}
if (strlen($locale) > 3) {

View File

@ -12,7 +12,6 @@
namespace Symfony\Component\Translation\Tests;
use Symfony\Component\Translation\IdentityTranslator;
use Symfony\Component\Translation\MessageSelector;
class IdentityTranslatorTest extends \PHPUnit_Framework_TestCase
{
@ -21,7 +20,7 @@ class IdentityTranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testTrans($expected, $id, $parameters)
{
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();
$this->assertEquals($expected, $translator->trans($id, $parameters));
}
@ -31,7 +30,7 @@ class IdentityTranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testTransChoiceWithExplicitLocale($expected, $id, $number, $parameters)
{
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();
$translator->setLocale('en');
$this->assertEquals($expected, $translator->transChoice($id, $number, $parameters));
@ -44,14 +43,14 @@ class IdentityTranslatorTest extends \PHPUnit_Framework_TestCase
{
\Locale::setDefault('en');
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();
$this->assertEquals($expected, $translator->transChoice($id, $number, $parameters));
}
public function testGetSetLocale()
{
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();
$translator->setLocale('en');
$this->assertEquals('en', $translator->getLocale());
@ -59,7 +58,7 @@ class IdentityTranslatorTest extends \PHPUnit_Framework_TestCase
public function testGetLocaleReturnsDefaultLocaleIfNotSet()
{
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();
\Locale::setDefault('en');
$this->assertEquals('en', $translator->getLocale());

View File

@ -12,14 +12,13 @@
namespace Symfony\Component\Translation\Tests;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;
class TranslatorTest extends \PHPUnit_Framework_TestCase
{
public function testSetGetLocale()
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$this->assertEquals('en', $translator->getLocale());
@ -29,7 +28,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testSetFallbackLocales()
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('foo' => 'foofoo'), 'en');
$translator->addResource('array', array('bar' => 'foobar'), 'fr');
@ -43,7 +42,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testSetFallbackLocalesMultiple()
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('foo' => 'foo (en)'), 'en');
$translator->addResource('array', array('bar' => 'bar (fr)'), 'fr');
@ -57,7 +56,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransWithFallbackLocale()
{
$translator = new Translator('fr_FR', new MessageSelector());
$translator = new Translator('fr_FR');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('foo' => 'foofoo'), 'en_US');
$translator->addResource('array', array('bar' => 'foobar'), 'en');
@ -69,7 +68,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testAddResourceAfterTrans()
{
$translator = new Translator('fr', new MessageSelector());
$translator = new Translator('fr');
$translator->addLoader('array', new ArrayLoader());
$translator->setFallbackLocale(array('en'));
@ -88,7 +87,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransWithoutFallbackLocaleFile($format, $loader)
{
$loaderClass = 'Symfony\\Component\\Translation\\Loader\\'.$loader;
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader($format, new $loaderClass());
$translator->addResource($format, __DIR__.'/fixtures/non-existing', 'en');
$translator->addResource($format, __DIR__.'/fixtures/resources.'.$format, 'en');
@ -103,7 +102,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransWithFallbackLocaleFile($format, $loader)
{
$loaderClass = 'Symfony\\Component\\Translation\\Loader\\'.$loader;
$translator = new Translator('en_GB', new MessageSelector());
$translator = new Translator('en_GB');
$translator->addLoader($format, new $loaderClass());
$translator->addResource($format, __DIR__.'/fixtures/non-existing', 'en_GB');
$translator->addResource($format, __DIR__.'/fixtures/resources.'.$format, 'en', 'resources');
@ -113,7 +112,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransWithFallbackLocaleBis()
{
$translator = new Translator('en_US', new MessageSelector());
$translator = new Translator('en_US');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('foo' => 'foofoo'), 'en_US');
$translator->addResource('array', array('bar' => 'foobar'), 'en');
@ -122,7 +121,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransWithFallbackLocaleTer()
{
$translator = new Translator('fr_FR', new MessageSelector());
$translator = new Translator('fr_FR');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('foo' => 'foo (en_US)'), 'en_US');
$translator->addResource('array', array('bar' => 'bar (en)'), 'en');
@ -135,7 +134,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransNonExistentWithFallback()
{
$translator = new Translator('fr', new MessageSelector());
$translator = new Translator('fr');
$translator->setFallbackLocales(array('en'));
$translator->addLoader('array', new ArrayLoader());
$this->assertEquals('non-existent', $translator->trans('non-existent'));
@ -146,7 +145,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testWhenAResourceHasNoRegisteredLoader()
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addResource('array', array('foo' => 'foofoo'), 'en');
$translator->trans('foo');
@ -157,7 +156,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testTrans($expected, $id, $translation, $parameters, $locale, $domain)
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array((string) $id => $translation), $locale, $domain);
@ -169,7 +168,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testFlattenedTrans($expected, $messages, $id)
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', $messages, 'fr', '');
@ -181,7 +180,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
*/
public function testTransChoice($expected, $id, $translation, $number, $parameters, $locale, $domain)
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array((string) $id => $translation), $locale, $domain);
@ -260,7 +259,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransChoiceFallback()
{
$translator = new Translator('ru', new MessageSelector());
$translator = new Translator('ru');
$translator->setFallbackLocales(array('en'));
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('some_message2' => 'one thing|%count% things'), 'en');
@ -270,7 +269,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransChoiceFallbackBis()
{
$translator = new Translator('ru', new MessageSelector());
$translator = new Translator('ru');
$translator->setFallbackLocales(array('en_US', 'en'));
$translator->addLoader('array', new ArrayLoader());
$translator->addResource('array', array('some_message2' => 'one thing|%count% things'), 'en_US');
@ -280,7 +279,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase
public function testTransChoiceFallbackWithNoTranslation()
{
$translator = new Translator('ru', new MessageSelector());
$translator = new Translator('ru');
$translator->setFallbackLocales(array('en'));
$translator->addLoader('array', new ArrayLoader());

View File

@ -23,10 +23,10 @@ interface TranslatorInterface
/**
* Translates the given message.
*
* @param string $id The message id (may also be an object that can be cast to string)
* @param array $parameters An array of parameters for the message
* @param string $domain The domain for the message
* @param string $locale The locale
* @param string $id The message id (may also be an object that can be cast to string)
* @param array $parameters An array of parameters for the message
* @param string|null $domain The domain for the message or null to use the default
* @param string|null $locale The locale or null to use the default
*
* @return string The translated string
*
@ -37,11 +37,11 @@ interface TranslatorInterface
/**
* Translates the given choice message by choosing a translation according to a number.
*
* @param string $id The message id (may also be an object that can be cast to string)
* @param integer $number The number to use to find the indice of the message
* @param array $parameters An array of parameters for the message
* @param string $domain The domain for the message
* @param string $locale The locale
* @param string $id The message id (may also be an object that can be cast to string)
* @param integer $number The number to use to find the indice of the message
* @param array $parameters An array of parameters for the message
* @param string|null $domain The domain for the message or null to use the default
* @param string|null $locale The locale or null to use the default
*
* @return string The translated string
*