Browse Source

Use symfony/translation for L10N plurals

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v13.0.0beta1
Roeland Jago Douma 6 years ago
parent
commit
ed3b391e47
No account linked to committer's email address
4 changed files with 7 additions and 38 deletions
  1. 1
    1
      3rdparty
  2. 6
    1
      lib/private/L10N/L10N.php
  3. 0
    9
      lib/public/L10N/IFactory.php
  4. 0
    27
      tests/lib/L10N/FactoryTest.php

+ 1
- 1
3rdparty

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

+ 6
- 1
lib/private/L10N/L10N.php 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;
}


+ 0
- 9
lib/public/L10N/IFactory.php 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);
}

+ 0
- 27
tests/lib/L10N/FactoryTest.php 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

Loading…
Cancel
Save