From ed3b391e4799bf1b4a4c2f990020f1069d46d3ac Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <roeland@famdouma.nl>
Date: Mon, 7 Aug 2017 15:50:00 +0200
Subject: [PATCH] Use symfony/translation for L10N plurals

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
---
 3rdparty                       |  2 +-
 lib/private/L10N/L10N.php      |  7 ++++++-
 lib/public/L10N/IFactory.php   |  9 ---------
 tests/lib/L10N/FactoryTest.php | 27 ---------------------------
 4 files changed, 7 insertions(+), 38 deletions(-)

diff --git a/3rdparty b/3rdparty
index 107e29e4c81..b45407a256b 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 b933048982f..620c99dd1ec 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 b5f93c2389c..9820082c72e 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 77a56b5f945..171be67d336 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
-- 
GitLab