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