Skip to content

Commit

Permalink
[Translation] make IdentityTranslater consistent with normal translator
Browse files Browse the repository at this point in the history
  • Loading branch information
Tobion committed Nov 20, 2013
1 parent 8d85745 commit 7cdb260
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 43 deletions.
2 changes: 1 addition & 1 deletion src/Symfony/Component/Translation/Dumper/FileDumper.php
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions src/Symfony/Component/Translation/IdentityTranslator.php
Expand Up @@ -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();
}

/**
Expand Down Expand Up @@ -60,7 +60,7 @@ public function getLocale()
*
* @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);
}
Expand All @@ -70,7 +70,7 @@ public function trans($id, array $parameters = array(), $domain = 'messages', $l
*
* @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);
}
Expand Down
8 changes: 4 additions & 4 deletions src/Symfony/Component/Translation/PluralizationRules.php
Expand Up @@ -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) {
Expand Down Expand Up @@ -197,9 +197,9 @@ public static function get($number, $locale)
*/
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) {
Expand Down
Expand Up @@ -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
{
Expand All @@ -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));
}
Expand All @@ -31,7 +30,7 @@ public function testTrans($expected, $id, $parameters)
*/
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));
Expand All @@ -44,22 +43,22 @@ public function testTransChoiceWithDefaultLocale($expected, $id, $number, $param
{
\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());
}

public function testGetLocaleReturnsDefaultLocaleIfNotSet()
{
$translator = new IdentityTranslator(new MessageSelector());
$translator = new IdentityTranslator();

\Locale::setDefault('en');
$this->assertEquals('en', $translator->getLocale());
Expand Down
35 changes: 17 additions & 18 deletions src/Symfony/Component/Translation/Tests/TranslatorTest.php
Expand Up @@ -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());

Expand All @@ -29,7 +28,7 @@ public function testSetGetLocale()

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');
Expand All @@ -43,7 +42,7 @@ public function testSetFallbackLocales()

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');
Expand All @@ -57,7 +56,7 @@ public function testSetFallbackLocalesMultiple()

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');
Expand All @@ -69,7 +68,7 @@ public function testTransWithFallbackLocale()

public function testAddResourceAfterTrans()
{
$translator = new Translator('fr', new MessageSelector());
$translator = new Translator('fr');
$translator->addLoader('array', new ArrayLoader());

$translator->setFallbackLocale(array('en'));
Expand All @@ -88,7 +87,7 @@ public function testAddResourceAfterTrans()
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');
Expand All @@ -103,7 +102,7 @@ public function testTransWithoutFallbackLocaleFile($format, $loader)
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');
Expand All @@ -113,7 +112,7 @@ public function testTransWithFallbackLocaleFile($format, $loader)

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');
Expand All @@ -122,7 +121,7 @@ public function testTransWithFallbackLocaleBis()

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');
Expand All @@ -135,7 +134,7 @@ public function testTransWithFallbackLocaleTer()

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'));
Expand All @@ -146,7 +145,7 @@ public function testTransNonExistentWithFallback()
*/
public function testWhenAResourceHasNoRegisteredLoader()
{
$translator = new Translator('en', new MessageSelector());
$translator = new Translator('en');
$translator->addResource('array', array('foo' => 'foofoo'), 'en');

$translator->trans('foo');
Expand All @@ -157,7 +156,7 @@ public function testWhenAResourceHasNoRegisteredLoader()
*/
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);

Expand All @@ -169,7 +168,7 @@ public function testTrans($expected, $id, $translation, $parameters, $locale, $d
*/
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', '');

Expand All @@ -181,7 +180,7 @@ public function testFlattenedTrans($expected, $messages, $id)
*/
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);

Expand Down Expand Up @@ -260,7 +259,7 @@ public function getTransChoiceTests()

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');
Expand All @@ -270,7 +269,7 @@ public function testTransChoiceFallback()

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');
Expand All @@ -280,7 +279,7 @@ public function testTransChoiceFallbackBis()

public function testTransChoiceFallbackWithNoTranslation()
{
$translator = new Translator('ru', new MessageSelector());
$translator = new Translator('ru');
$translator->setFallbackLocales(array('en'));
$translator->addLoader('array', new ArrayLoader());

Expand Down
18 changes: 9 additions & 9 deletions src/Symfony/Component/Translation/TranslatorInterface.php
Expand Up @@ -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
*
Expand All @@ -37,11 +37,11 @@ public function trans($id, array $parameters = array(), $domain = null, $locale
/**
* 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
*
Expand Down

5 comments on commit 7cdb260

@annitya
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any chance of a backport to 2.3? eZ Publish currently has this as a hard requirement.

@Tobion
Copy link
Member Author

@Tobion Tobion commented on 7cdb260 Nov 20, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New features are usually not merged in maintanance branches.

@annitya
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I know, but I thought I'd ask anyway! :) Our entire team is stuck with this bug here: https://youtrack.jetbrains.com/issue/WI-25461. I looked through the changes and they seem rather innocent. The release of eZ Publish 5.4, which is a LTS, will continue to use Symfony 2.3. I also tried to override the class, but the reference is hardcoded by PhpStorm. So I'm barking up two trees here, hoping that one will yield a solution.

@Tobion
Copy link
Member Author

@Tobion Tobion commented on 7cdb260 Nov 21, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think PhpStorm should fix their thing so it is compatible with Symfony 2.3

@annitya
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well! I will relay your message. Thank you for your time! :)

Please sign in to comment.