Use symfony/translation for L10N plurals

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2017-08-07 15:50:00 +02:00
parent de911f6e5c
commit ed3b391e47
No known key found for this signature in database
GPG Key ID: F941078878347C0C
4 changed files with 7 additions and 38 deletions

@ -1 +1 @@
Subproject commit 107e29e4c81d6b255abee5bc77fef3040df6ca07
Subproject commit b45407a256b6197db435d378f24fb42d499de051

View File

@ -25,6 +25,7 @@ namespace OC\L10N;
use OCP\IL10N;
use OCP\L10N\IFactory;
use Punic\Calendar;
use Symfony\Component\Translation\PluralizationRules;
class L10N implements IL10N {
@ -191,8 +192,12 @@ class L10N implements IL10N {
*/
public function getPluralFormFunction() {
if (is_null($this->pluralFormFunction)) {
$this->pluralFormFunction = $this->factory->createPluralFunction($this->pluralFormString);
$lang = $this->getLanguageCode();
$this->pluralFormFunction = function($n) use ($lang) {
return PluralizationRules::get($n, $lang);
};
}
return $this->pluralFormFunction;
}

View File

@ -60,13 +60,4 @@ interface IFactory {
* @since 9.0.0
*/
public function languageExists($app, $lang);
/**
* Creates a function from the plural string
*
* @param string $string
* @return string Unique function name
* @since 9.0.0
*/
public function createPluralFunction($string);
}

View File

@ -432,33 +432,6 @@ class FactoryTest extends TestCase {
$this->assertSame($expected, $this->invokePrivate($factory, 'findL10nDir', [$app]));
}
public function dataCreatePluralFunction() {
return [
['nplurals=2; plural=(n != 1);', 0, 1],
['nplurals=2; plural=(n != 1);', 1, 0],
['nplurals=2; plural=(n != 1);', 2, 1],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 0, 2],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 1, 0],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 2, 1],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 3, 1],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 4, 1],
['nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;', 5, 2],
];
}
/**
* @dataProvider dataCreatePluralFunction
*
* @param string $function
* @param int $count
* @param int $expected
*/
public function testCreatePluralFunction($function, $count, $expected) {
$factory = $this->getFactory();
$fn = $factory->createPluralFunction($function);
$this->assertEquals($expected, $fn($count));
}
public function dataFindLanguage() {
return [
// Not logged in