Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2015-03-26 22:15:33 +0300
committerLukas Reschke <lukas@owncloud.com>2015-03-26 22:15:33 +0300
commit74a9fc29b43b54ec8aa9f6b9cac1cbfa4a5136e2 (patch)
tree9489220921b93420730b13a9dd7c23a1d0e6ec29
parentc8c722bc6de3a58e10ba42a55a178d3ba9308bae (diff)
parentae60108692a2c34b0ab474e7d9fa35bb8b689992 (diff)
Merge pull request #14399 from owncloud/ignore-empty-plurals
Ignore empty plurals just like with singulars
-rw-r--r--l10n/l10n.pl5
-rw-r--r--lib/private/l10n.php2
-rw-r--r--lib/private/l10n/string.php22
-rw-r--r--tests/data/l10n/ru.json3
-rw-r--r--tests/lib/l10n.php18
5 files changed, 7 insertions, 43 deletions
diff --git a/l10n/l10n.pl b/l10n/l10n.pl
index 4f8d8debb8d..0ff25944d6c 100644
--- a/l10n/l10n.pl
+++ b/l10n/l10n.pl
@@ -145,7 +145,7 @@ elsif( $task eq 'write' ){
my @js_strings = ();
my $plurals;
- foreach my $string ( @{$array} ){
+ TRANSLATIONS: foreach my $string ( @{$array} ){
if( $string->msgid() eq '""' ){
# Translator information
$plurals = getPluralInfo( $string->msgstr());
@@ -160,6 +160,7 @@ elsif( $task eq 'write' ){
my $identifier = "_" . $msgid."_::_".$msgid_plural . "_";
foreach my $variant ( sort { $a <=> $b} keys( %{$string->msgstr_n()} )){
+ next TRANSLATIONS if $string->msgstr_n()->{$variant} eq '""';
push( @variants, $string->msgstr_n()->{$variant} );
}
@@ -168,7 +169,7 @@ elsif( $task eq 'write' ){
}
else{
# singular translations
- next if $string->msgstr() eq '""';
+ next TRANSLATIONS if $string->msgstr() eq '""';
push( @strings, $string->msgid()." => ".$string->msgstr());
push( @js_strings, $string->msgid()." : ".$string->msgstr());
}
diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index b16a0468e23..95b80bebdb2 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -305,7 +305,7 @@ class OC_L10N implements \OCP\IL10N {
$this->init();
$identifier = "_${text_singular}_::_${text_plural}_";
if( array_key_exists($identifier, $this->translations)) {
- return new OC_L10N_String($this, $identifier, $parameters, $count, array($text_singular, $text_plural));
+ return new OC_L10N_String( $this, $identifier, $parameters, $count );
}else{
if($count === 1) {
return new OC_L10N_String($this, $text_singular, $parameters, $count);
diff --git a/lib/private/l10n/string.php b/lib/private/l10n/string.php
index 21fe765618b..6167a6737dc 100644
--- a/lib/private/l10n/string.php
+++ b/lib/private/l10n/string.php
@@ -41,11 +41,6 @@ class OC_L10N_String{
protected $parameters;
/**
- * @var array
- */
- protected $plurals;
-
- /**
* @var integer
*/
protected $count;
@@ -53,12 +48,11 @@ class OC_L10N_String{
/**
* @param OC_L10N $l10n
*/
- public function __construct($l10n, $text, $parameters, $count = 1, $plurals = array()) {
+ public function __construct($l10n, $text, $parameters, $count = 1) {
$this->l10n = $l10n;
$this->text = $text;
$this->parameters = $parameters;
$this->count = $count;
- $this->plurals = $plurals;
}
public function __toString() {
@@ -69,19 +63,7 @@ class OC_L10N_String{
if(is_array($translations[$this->text])) {
$fn = $this->l10n->getPluralFormFunction();
$id = $fn($this->count);
-
- if ($translations[$this->text][$id] !== '') {
- // The translation of this plural case is not empty, so use it
- $text = $translations[$this->text][$id];
- } else {
- // We didn't find the plural in the language,
- // so we fall back to english.
- $id = ($id != 0) ? 1 : 0;
- if (isset($this->plurals[$id])) {
- // Fallback to the english plural
- $text = $this->plurals[$id];
- }
- }
+ $text = $translations[$this->text][$id];
}
else{
$text = $translations[$this->text];
diff --git a/tests/data/l10n/ru.json b/tests/data/l10n/ru.json
index 7041205e761..177b14a6b20 100644
--- a/tests/data/l10n/ru.json
+++ b/tests/data/l10n/ru.json
@@ -1,7 +1,6 @@
{
"translations" : {
- "_%n file_::_%n files_" : ["%n файл", "%n файла", "%n файлов"],
- "_%n missing plural_::_%n missing plurals_" : ["", "", ""]
+ "_%n file_::_%n files_" : ["%n файл", "%n файла", "%n файлов"]
},
"pluralForm" : "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}
diff --git a/tests/lib/l10n.php b/tests/lib/l10n.php
index 0307dd459e5..d5f9a5ca3fa 100644
--- a/tests/lib/l10n.php
+++ b/tests/lib/l10n.php
@@ -42,24 +42,6 @@ class Test_L10n extends \Test\TestCase {
*/
}
- public function russianMissingPluralTranslationsData() {
- return array(
- array(1, '1 missing plural'),
- array(2, '2 missing plurals'),
- array(6, '6 missing plurals'),
- );
- }
-
- /**
- * @dataProvider russianMissingPluralTranslationsData
- */
- public function testRussianMissingPluralTranslations($count, $expected) {
- $l = new OC_L10N('test');
- $l->load(OC::$SERVERROOT.'/tests/data/l10n/ru.json');
-
- $this->assertEquals($expected, (string)$l->n('%n missing plural', '%n missing plurals', $count));
- }
-
public function testCzechPluralTranslations() {
$l = new OC_L10N('test');
$transFile = OC::$SERVERROOT.'/tests/data/l10n/cs.json';