jenkins-bot has submitted this change and it was merged.

Change subject: Update Russian(ru) plural rules to CLDR 24
......................................................................


Update Russian(ru) plural rules to CLDR 24

Russian (ru) plural rules have a major change. The 'few' form is
merged with the 'other' form. The current forms are 'one', 'many', 'other'.
In MW ru plural rules were overridden using convertPlural methdod
in LanguagesRu.php with 3 forms.

Effectively forms[1] and forms[2] are swapped.

Followup: I9930b290d004667a3bb09e5c1663ec2c9c27d8a6

Bug: 56931
Change-Id: Ia5779e42315d3f41f52dce2bfffaee0a4297d23b
---
M languages/classes/LanguageRu.php
M tests/phpunit/languages/LanguageRuTest.php
2 files changed, 11 insertions(+), 68 deletions(-)

Approvals:
  Siebrand: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php
index 243a876..d3ac1d2 100644
--- a/languages/classes/LanguageRu.php
+++ b/languages/classes/LanguageRu.php
@@ -44,8 +44,9 @@
                        return $wgGrammarForms['ru'][$case][$word];
                }
 
-               # These rules are not perfect, but they are currently only used 
for Wikimedia site names so it doesn't
-               # matter if they are wrong sometimes. Just add a special case 
for your site name if necessary.
+               # These rules are not perfect, but they are currently only used 
for Wikimedia
+               # site names so it doesn't matter if they are wrong sometimes.
+               # Just add a special case for your site name if necessary.
 
                # substr doesn't support Unicode and mb_substr has issues,
                # so break it to characters using preg_match_all and then use 
array_slice and join
@@ -100,62 +101,6 @@
                }
 
                return $word;
-       }
-
-       /**
-        * Plural form transformations
-        *
-        * $forms[0] - singular form (for 1, 21, 31, 41...)
-        * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
-        * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
15, 16, 17, 18, 19, 20, 25, 26...)
-        *
-        * Examples:
-        *   message with number
-        *     "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
-        *     ("$1 change[s] were made)
-        *   message without number
-        *     "Действие не может быть выполнено по {{PLURAL:$1|следующей 
причине|следующим причинам}}:"
-        *     ("The action cannot be performed for the following reason[s]")
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, 
then just two forms are enough:
-               // singular for $count === 1
-               // plural   for $count !== 1
-               // For example, "This user belongs to {{PLURAL:$1|one 
group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count === 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form with decimals 
missing.
-               // See 
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) 
{
-                       return $forms[2];
-               }
-
-               switch ( $count % 10 ) {
-                       case 1:
-                               return $forms[0];
-                       case 2:
-                       case 3:
-                       case 4:
-                               return $forms[1];
-                       default:
-                               return $forms[2];
-               }
        }
 
        /**
diff --git a/tests/phpunit/languages/LanguageRuTest.php 
b/tests/phpunit/languages/LanguageRuTest.php
index ac18276..e17c708 100644
--- a/tests/phpunit/languages/LanguageRuTest.php
+++ b/tests/phpunit/languages/LanguageRuTest.php
@@ -13,7 +13,7 @@
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'many', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 
@@ -22,9 +22,9 @@
         * @covers Language::convertPlural
         */
        public function testExplicitPlural() {
-               $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+               $forms = array( 'one','many', 'other', '12=dozen' );
                $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 
12, $forms ) );
-               $forms = array( 'one', 'few', 'many', '100=hundred', 'other', 
'12=dozen' );
+               $forms = array( 'one', 'many', '100=hundred', 'other', 
'12=dozen' );
                $this->assertEquals( 'hundred', 
$this->getLang()->convertPlural( 100, $forms ) );
        }
 
@@ -33,8 +33,6 @@
         * @covers Language::getPluralRuleType
         */
        public function testGetPluralRuleType( $result, $value ) {
-               // TODO: Remove after MW plurals rules made in sync with CLDR
-               $this->markTestSkipped( 'Skipping. Russian plural forms are 
overridden in MW' );
                $this->assertEquals( $result, 
$this->getLang()->getPluralRuleType( $value ) );
        }
 
@@ -44,10 +42,10 @@
                        array( 'many', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
-                       array( 'few', 2 ),
-                       array( 'few', 3 ),
-                       array( 'few', 4 ),
-                       array( 'few', 334 ),
+                       array( 'other', 2 ),
+                       array( 'other', 3 ),
+                       array( 'other', 4 ),
+                       array( 'other', 334 ),
                        array( 'many', 5 ),
                        array( 'many', 15 ),
                        array( 'many', 120 ),
@@ -59,7 +57,7 @@
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/105148
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia5779e42315d3f41f52dce2bfffaee0a4297d23b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>
Gerrit-Reviewer: Amire80 <amir.ahar...@mail.huji.ac.il>
Gerrit-Reviewer: Siebrand <siebr...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to