diff --git a/3rdparty b/3rdparty index 107e29e4c8..b45407a256 160000 --- a/3rdparty +++ b/3rdparty @@ -1 +1 @@ -Subproject commit 107e29e4c81d6b255abee5bc77fef3040df6ca07 +Subproject commit b45407a256b6197db435d378f24fb42d499de051 diff --git a/lib/private/L10N/L10N.php b/lib/private/L10N/L10N.php index b933048982..620c99dd1e 100644 --- a/lib/private/L10N/L10N.php +++ b/lib/private/L10N/L10N.php @@ -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; } diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php index b5f93c2389..9820082c72 100644 --- a/lib/public/L10N/IFactory.php +++ b/lib/public/L10N/IFactory.php @@ -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); } diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php index 77a56b5f94..171be67d33 100644 --- a/tests/lib/L10N/FactoryTest.php +++ b/tests/lib/L10N/FactoryTest.php @@ -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