Skip to content

Commit

Permalink
Avoding errors when there is no translation for the given plural form
Browse files Browse the repository at this point in the history
While this avoids an annoying notice, it also hides problems in the translation
files. A more propper solution would be to use the ICU message selector syntax
instead of the magic __n() function, but it would require breaking the translation
files that already exist for the time class.

 Please enter the commit message for your changes. Lines starting
  • Loading branch information
lorenzo committed Mar 3, 2016
1 parent b2a62ae commit ce3b972
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/I18n/Formatter/IcuFormatter.php
Expand Up @@ -65,7 +65,7 @@ public function format($locale, $message, array $vars)
$count = isset($vars['_count']) ? $vars['_count'] : 0;
unset($vars['_count'], $vars['_singular']);
$form = PluralRules::calculate($locale, $count);
$message = $message[$form];
$message = isset($message[$form]) ? $message[$form] : end($message);
}

return $this->_formatMessage($locale, $message, $vars);
Expand Down
16 changes: 16 additions & 0 deletions tests/TestCase/I18n/TimeTest.php
Expand Up @@ -15,6 +15,7 @@
namespace Cake\Test\TestCase\I18n;

use Cake\I18n\FrozenTime;
use Cake\I18n\I18n;
use Cake\I18n\Time;
use Cake\TestSuite\TestCase;

Expand Down Expand Up @@ -55,6 +56,7 @@ public function tearDown()
FrozenTime::$defaultLocale = $this->locale;
FrozenTime::resetToStringFormat();
date_default_timezone_set('UTC');
I18n::locale(I18n::DEFAULT_LOCALE);
}

/**
Expand Down Expand Up @@ -807,6 +809,20 @@ public function testParseTime($class)
$this->assertNull($time);
}

/**
* Tests that timeAgoInWords when using a russian locale does not break things
*
* @dataProvider classNameProvider
* @return void
*/
public function testRussianTimeAgoInWords($class)
{
I18n::locale('ru_RU');
$time = new $class('5 days ago');
$result = $time->timeAgoInWords();
$this->assertEquals('5 days ago', $result);
}

/**
* Tests that parsing a date respects de default timezone in PHP.
*
Expand Down

0 comments on commit ce3b972

Please sign in to comment.