Skip to content
Permalink
Browse files

Avoding errors when there is no translation for the given plural form

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 ce3b97201dc9c6682bf362685a7f5768c96aa052
Showing with 17 additions and 1 deletion.
  1. +1 −1 src/I18n/Formatter/IcuFormatter.php
  2. +16 −0 tests/TestCase/I18n/TimeTest.php
@@ -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);
@@ -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;
@@ -55,6 +56,7 @@ public function tearDown()
FrozenTime::$defaultLocale = $this->locale;
FrozenTime::resetToStringFormat();
date_default_timezone_set('UTC');
I18n::locale(I18n::DEFAULT_LOCALE);
}
/**
@@ -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.
*

0 comments on commit ce3b972

Please sign in to comment.
You can’t perform that action at this time.