Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/104795


Change subject: Update plural rules to CLDR 24
......................................................................

Update plural rules to CLDR 24

* updated plurals.xml with new data from CLDR 24
* Hebrew override removed since CLDR 24 matches with MW plural rules
* Updated syntax of overridden rules to TR35 Rev33 for
  dsb, hsb, be_tarask, cu, bho, sgs
* Removed gv override
* Removed Serbian override LanguageSr.php(removed convertPlural method)
  since CLDR24 match with MW rules. Updated and added more tests.
  Tests updated for Serbocroatian(sh) too. CLDR old versions had 4 plural
  rules and MW had only 3. In CLDR 24, the form 'many' was removed and it
  became identical to the MW. Same for Bosnian(bs), Croatian/hrvatski(hr)

16 more test failing

Change-Id: I9930b290d004667a3bb09e5c1663ec2c9c27d8a6
---
D languages/classes/LanguageHr.php
M languages/classes/LanguageSr.php
M languages/data/plurals-mediawiki.xml
M languages/data/plurals.xml
M tests/phpunit/languages/LanguageBsTest.php
M tests/phpunit/languages/LanguageHrTest.php
M tests/phpunit/languages/LanguageSgsTest.php
M tests/phpunit/languages/LanguageShTest.php
M tests/phpunit/languages/LanguageSrTest.php
9 files changed, 212 insertions(+), 239 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/95/104795/1

diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
deleted file mode 100644
index 0c65ec7..0000000
--- a/languages/classes/LanguageHr.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * Croatian (hrvatski) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Croatian (hrvatski)
- *
- * @ingroup Language
- */
-class LanguageHr extends Language {
-
-       /**
-        * @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 '';
-               }
-               // @todo FIXME: CLDR defines 4 plural forms instead of 3. 
Plural for for decimals is missing.
-               //        
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php
index 283ef22..a99f4b2 100644
--- a/languages/classes/LanguageSr.php
+++ b/languages/classes/LanguageSr.php
@@ -238,44 +238,4 @@
                $this->mConverter = new SrConverter( $this, 'sr', $variants, 
$variantfallbacks, $flags );
                $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
        }
-
-       /**
-        * @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 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
 }
diff --git a/languages/data/plurals-mediawiki.xml 
b/languages/data/plurals-mediawiki.xml
index 3314793..5b9fe4c 100644
--- a/languages/data/plurals-mediawiki.xml
+++ b/languages/data/plurals-mediawiki.xml
@@ -2,48 +2,39 @@
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
 <supplementalData>
        <plurals>
-               <!--
-               The "one" and "two" rules are copied directly from CLDR.
-               The "many" rule overrides CLDR, because CLDR seems to have a 
mistake:
-               it's sometimes needed for multiples of 10, but not for 10 
itself.
-               When the CLDR is fixed, this should be removed.
-               -->
-               <pluralRules locales="he">
-                       <pluralRule count="one">n is 1</pluralRule>
-                       <pluralRule count="two">n is 2</pluralRule>
-                       <pluralRule count="many">n is not 0 AND n is not 10 AND 
n mod 10 is 0</pluralRule>
-               </pluralRules>
+               <!-- Lower Sorbian (Dolnoserbski) and  Upper Sorbian 
(Hornjoserbsce). Not present in CLDR -->
                <pluralRules locales="dsb hsb">
-                       <pluralRule count="one">n mod 100 is 1</pluralRule>
-                       <pluralRule count="two">n mod 100 is 2</pluralRule>
-                       <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 100 = 1 @integer 1, 101, 
201, 301, …</pluralRule>
+                       <pluralRule count="two">n % 100 = 2 @integer 2, 102, 
202, 302, …</pluralRule>
+                       <pluralRule count="few">n % 100 = 3..4 @integer 3~4, 
103~104, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 
105, 206, 307, …</pluralRule>
                </pluralRules>
-               <!-- Copied from "be" -->
+
+               <!-- Belarusian in Taraškievica orthography (Беларуская 
тарашкевіца). Copied from "be" -->
                <pluralRules locales="be-tarask">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is 
not 11</pluralRule>
-                       <pluralRule count="few">n mod 10 in 2..4 and n mod 100 
not in 12..14</pluralRule>
-                       <pluralRule count="many">n mod 10 is 0 or n mod 10 in 
5..9 or n mod 100 in 11..14</pluralRule>
-                       <!-- others are fractions -->
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 
@integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 
41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 2..4 and n % 100 != 
12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 
3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+                       <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or 
n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … 
@decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+                       <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 
10.1, 100.1, 1000.1, …</pluralRule>
                </pluralRules>
+               <!--  Old Church Slavonic (Ѩзыкъ словѣньскъ). Not present in 
CLDR -->
                <pluralRules locales="cu">
-                       <pluralRule count="one">n mod 10 is 1</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2</pluralRule>
-                       <pluralRule count="few">n mod 10 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 
31, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 
32, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 3..4 @integer 3~4, 
13~14, 23~24, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 
15, 105, 206, 307, …</pluralRule>
                </pluralRules>
                <!-- Copied from "bh" -->
                <pluralRules locales="bho">
-                       <pluralRule count="one">n in 0..1</pluralRule>
+                       <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 
0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+                       <pluralRule count="other"> @integer 2~17, 100, 1000, 
10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 
10000.0, 100000.0, 1000000.0, …</pluralRule>
                </pluralRules>
+               <!-- Samogitian. Not present in CLDR -->
                <pluralRules locales="sgs">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is 
not 11</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2 and n mod 100 is 
not 12</pluralRule>
-                       <pluralRule count="few">n is 0 or n mod 100 is 0 or n 
mod 100 in 10..19</pluralRule>
-               </pluralRules>
-               <!-- Override as per 
https://bugzilla.wikimedia.org/show_bug.cgi?id=47099, porting from CLDR 24 -->
-               <pluralRules locales="gv">
-                       <pluralRule count="one">n mod 10 is 1</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2</pluralRule>
-                       <pluralRule count="few">n mod 100 in 
0,20,40,60</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 
@integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 and n % 100 != 12 
@integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …</pluralRule>
+                       <pluralRule count="few">n = 0 or n % 100 = 0 or n % 100 
= 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, 
…</pluralRule>
+                       <pluralRule count="other"> @integer 3, 4, 5, 6, 7, 8, 
9, 20, 103, 104, …</pluralRule>
                </pluralRules>
        </plurals>
 </supplementalData>
diff --git a/languages/data/plurals.xml b/languages/data/plurals.xml
old mode 100644
new mode 100755
index d5a1cfe..fd4eaf6
--- a/languages/data/plurals.xml
+++ b/languages/data/plurals.xml
@@ -1,119 +1,200 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
+<!--
+Copyright © 1991-2013 Unicode, Inc.
+CLDR data files are interpreted according to the LDML specification 
(http://unicode.org/reports/tr35/)
+For terms of use, see http://www.unicode.org/copyright.html
+-->
 <supplementalData>
-    <version number="$Revision: 8007 $"/>
-    <generation date="$Date: 2013-01-03 07:17:41 +0530 (Thu, 03 Jan 2013) $"/>
-    <plurals>
+    <version number="$Revision: 9369 $"/>
+    <generation date="$Date: 2013-09-14 01:26:08 +0530 (ശ, 14 സെപ് 2013) $"/>
+    <plurals type="cardinal">
+        <!-- For a canonicalized list, use GeneratedPluralSamples -->
         <!-- if locale is known to have no plurals, there are no rules -->
-        <pluralRules locales="az bm bo dz fa id ig ii hu ja jv ka kde kea km 
kn ko lo ms my sah ses sg th to tr vi wo yo zh"/>
         <pluralRules locales="ar">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..99</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 
0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 
2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n % 100 = 3..10 @integer 3~10, 103~110, 
1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, 
…</pluralRule>
+            <pluralRule count="many">n % 100 = 11..99 @integer 11~26, 111, 
1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, 
…</pluralRule>
+            <pluralRule count="other"> @integer 100~102, 200~202, 300~302, 
400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 
1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="he">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="many">n is not 0 AND n mod 10 is 0</pluralRule>
+        <pluralRules locales="he iw">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="two">i = 2 and v = 0 @integer 2</pluralRule>
+            <pluralRule count="many">v = 0 and n != 0..10 and n % 10 = 0 
@integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, 
…</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 101, 1001, … @decimal 
0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="asa ast af bem bez bg bn brx ca cgg chr ckb da 
de dv ee el en eo es et eu fi fo fur fy gl gsw gu ha haw hy is it jgo jmc kaj 
kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn mr nah nb nd ne nl nn nnh no nr 
ny nyn om or os pa pap ps pt rof rm rwk saq seh sn so sq ss ssy st sv sw syr ta 
te teo tig tk tn ts ur vo wae ve vun xh xog zu">
-            <pluralRule count="one">n is 1</pluralRule>
+        <pluralRules locales="af asa ast az bem bez bg brx cgg chr ckb dv ee 
el eo es eu fo fur fy gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky 
lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk 
saq seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts uz ve vo vun wae xh 
xog">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="ak am bh fil tl guw hi ln mg nso ti wa">
-            <pluralRule count="one">n in 0..1</pluralRule>
+        <pluralRules locales="ak bh guw ln mg nso pa ti wa">
+            <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 
0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="ff fr kab">
-            <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
+        <pluralRules locales="ff fr hy kab">
+            <pluralRule count="one">i = 0,1 @integer 0, 1 @decimal 
0.0~1.5</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lv">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 
11</pluralRule>
+            <pluralRule count="zero">n % 10 = 0 or n % 100 = 11..19 or v = 2 
and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 
100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 or v = 2 and 
f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 
51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 
7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 2~9, 22~29, 102, 1002, … 
@decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …</pluralRule>
         </pluralRules>
         <pluralRules locales="iu kw naq se sma smi smj smn sms">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 
2.000, 2.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="ga"> <!-- 
http://unicode.org/cldr/trac/ticket/3915 -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n in 3..6</pluralRule>
-            <pluralRule count="many">n in 7..10</pluralRule>
+        <pluralRules locales="ga">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 
2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 
5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 
5.0000, 6.0000</pluralRule>
+            <pluralRule count="many">n = 7..10 @integer 7~10 @decimal 7.0, 
8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 
8.0000, 9.0000, 10.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 11~25, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="ro mo">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 
1..19</pluralRule>
+        <pluralRules locales="mo ro">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v != 0 or n = 0 or n != 1 and n % 100 = 
1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 
10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 
100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lt">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 
11..19</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 
11..19</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11..19 @integer 
1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 
51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..9 and n % 100 != 11..19 
@integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 
9.0, 22.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">f != 0   @decimal 0.1~0.9, 1.1~1.7, 10.1, 
100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 10~20, 30, 40, 50, 60, 100, 
1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 
15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="be bs hr ru sh sr uk">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 
11</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 
12..14</pluralRule>
-            <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n 
mod 100 in 11..14</pluralRule>
-            <!-- others are fractions -->
+        <pluralRules locales="be">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 
21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 
61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 
@integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 
4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 
11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 
5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 10.1, 
100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="cs sk">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n in 2..4</pluralRule>
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">i = 2..4 and v = 0 @integer 
2~4</pluralRule>
+            <pluralRule count="many">v != 0   @decimal 0.0~1.5, 10.0, 100.0, 
1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 
100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="pl">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 
12..14</pluralRule>
-            <pluralRule count="many">n is not 1 and n mod 10 in 0..1 or n mod 
10 in 5..9 or n mod 100 in 12..14</pluralRule>
-            <!-- others are fractions -->
-            <!-- and n mod 100 not in 22..24 from Tamplin -->
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 
12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i != 1 and i % 10 = 0..1 or v = 
0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 
10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 
1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="sl">
-            <pluralRule count="one">n mod 100 is 1</pluralRule>
-            <pluralRule count="two">n mod 100 is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+            <pluralRule count="one">v = 0 and i % 100 = 1 @integer 1, 101, 
201, 301, 401, 501, 601, 701, 1001, …</pluralRule>
+            <pluralRule count="two">v = 0 and i % 100 = 2 @integer 2, 102, 
202, 302, 402, 502, 602, 702, 1002, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 100 = 3..4 or v != 0 
@integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 
704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 
100000, 1000000, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="mt"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..19</pluralRule>
+        <pluralRules locales="mt">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="few">n = 0 or n % 100 = 2..10 @integer 0, 2~10, 
102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 
1002.0, …</pluralRule>
+            <pluralRule count="many">n % 100 = 11..19 @integer 11~19, 111~117, 
1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, 
…</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="mk"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n mod 10 is 1 and n is not 11</pluralRule>
+        <pluralRules locales="mk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 or f % 10 = 1 
@integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 
3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~10, 12~17, 100, 1000, 
10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 
10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="cy"> <!-- from 
http://www.saltcymru.org/wordpress/?p=99&lang=en -->
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n is 3</pluralRule>
-            <pluralRule count="many">n is 6</pluralRule>
+        <pluralRules locales="cy">
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 
0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 
2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3 @integer 3 @decimal 3.0, 3.00, 
3.000, 3.0000</pluralRule>
+            <pluralRule count="many">n = 6 @integer 6 @decimal 6.0, 6.00, 
6.000, 6.0000</pluralRule>
+            <pluralRule count="other"> @integer 4, 5, 7~20, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lag">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n within 0..2 and n is not 0 and n is not 
2</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 
0.000, 0.0000</pluralRule>
+            <pluralRule count="one">i = 0,1 and n != 0 @integer 1 @decimal 
0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="shi">
-            <pluralRule count="one">n within 0..1</pluralRule>
-            <pluralRule count="few">n in 2..10</pluralRule>
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 
0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="few">n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 
4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 
8.00</pluralRule>
+            <pluralRule count="other"> @integer 11~26, 100, 1000, 10000, 
100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="br"> <!-- from 
http://unicode.org/cldr/trac/ticket/2886 -->
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 
11,71,91</pluralRule>
-            <pluralRule count="two">n mod 10 is 2 and n mod 100 not in 
12,72,92</pluralRule>
-            <pluralRule count="few">n mod 10 in 3..4,9 and n mod 100 not in 
10..19,70..79,90..99</pluralRule>
-            <pluralRule count="many">n is not 0 and n mod 1000000 is 
0</pluralRule>
+        <pluralRules locales="br">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11,71,91 
@integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 
41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 and n % 100 != 12,72,92 
@integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 
42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 3..4,9 and n % 100 != 
10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 
1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, 
…</pluralRule>
+            <pluralRule count="many">n != 0 and n % 1000000 = 0 @integer 
1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~8, 10~20, 100, 1000, 
10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="ksh">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 
0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 
1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="tzm">
-            <pluralRule count="one">n in 0..1 or n in 11..99</pluralRule>
+            <pluralRule count="one">n = 0..1 or n = 11..99 @integer 0, 1, 
11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 
20.0, 21.0, 22.0, 23.0, 24.0</pluralRule>
+            <pluralRule count="other"> @integer 2~10, 100~106, 1000, 10000, 
100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gv">
-            <pluralRule count="one">n mod 10 in 1..2 or n mod 20 is 
0</pluralRule>
+            <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 
61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 
101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 
62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 
102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 100 = 0,20,40,60 @integer 0, 20, 40, 
60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 
40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, 
…</pluralRule>
+            <pluralRule count="other"> @integer 3~10, 13~19, 23, 103, 1003, … 
@decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gd">
-            <pluralRule count="one">n in 1,11</pluralRule>
-            <pluralRule count="two">n in 2,12</pluralRule>
-            <pluralRule count="few">n in 3..10,13..19</pluralRule>
+            <pluralRule count="one">n = 1,11 @integer 1, 11 @decimal 1.0, 
11.0, 1.00, 11.00, 1.000, 11.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2,12 @integer 2, 12 @decimal 2.0, 
12.0, 2.00, 12.00, 2.000, 12.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..10,13..19 @integer 3~10, 13~19 
@decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 
18.0, 19.0, 3.00</pluralRule>
+            <pluralRule count="other"> @integer 0, 20~34, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bm bo dz id ig ii in ja jbo jv jw kde kea km ko 
lkt lo ms my nqo sah ses sg th to vi wo yo zh">
+            <pluralRule count="other"> @integer 0~15, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="fil tl">
+            <pluralRule count="one">i = 0..1 and v = 0 @integer 0, 
1</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ca de en et fi gl it ji nl sv sw ur yi">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt">
+            <pluralRule count="one">i = 1 and v = 0 or i = 0 and t = 1 
@integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 
0.0100, 0.1000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="da">
+            <pluralRule count="one">n = 1 or t != 0 and i = 0,1 @integer 1 
@decimal 0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt_PT">
+            <pluralRule count="one">n = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="am bn fa gu hi kn mr zu">
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 
0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 
1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="is">
+            <pluralRule count="one">t = 0 and i % 10 = 1 and i % 100 != 11 or 
t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 
10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 
100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="si">
+            <pluralRule count="one">n = 0,1 or i = 0 and f = 1 @integer 0, 1 
@decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 
1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bs hr sh sr">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or 
f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, 
… @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, 
…</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 
12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 
42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 
4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 
100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 
1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ru">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 
@integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 
= 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 
100000, 1000000, …</pluralRule>
+            <pluralRule count="other"> @integer 2~4, 22~24, 32~34, 42~44, 
52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 
100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="uk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 
@integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 
12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 
= 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 
100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 
1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
     </plurals>
 </supplementalData>
diff --git a/tests/phpunit/languages/LanguageBsTest.php 
b/tests/phpunit/languages/LanguageBsTest.php
index fb965b8..7aca2ab 100644
--- a/tests/phpunit/languages/LanguageBsTest.php
+++ b/tests/phpunit/languages/LanguageBsTest.php
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
 class LanguageBsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 
@@ -26,17 +26,17 @@
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
diff --git a/tests/phpunit/languages/LanguageHrTest.php 
b/tests/phpunit/languages/LanguageHrTest.php
index 6ce4aff..644c525 100644
--- a/tests/phpunit/languages/LanguageHrTest.php
+++ b/tests/phpunit/languages/LanguageHrTest.php
@@ -12,7 +12,7 @@
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 
@@ -26,17 +26,17 @@
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
diff --git a/tests/phpunit/languages/LanguageSgsTest.php 
b/tests/phpunit/languages/LanguageSgsTest.php
index bf6a14b..fa49a4d 100644
--- a/tests/phpunit/languages/LanguageSgsTest.php
+++ b/tests/phpunit/languages/LanguageSgsTest.php
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
 class LanguageSgsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePluralAllForms
diff --git a/tests/phpunit/languages/LanguageShTest.php 
b/tests/phpunit/languages/LanguageShTest.php
index 6d2e25a..1b39087 100644
--- a/tests/phpunit/languages/LanguageShTest.php
+++ b/tests/phpunit/languages/LanguageShTest.php
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for  srpskohrvatski / српскохрватски / Serbocroatian */
 class LanguageShTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 
@@ -26,17 +26,17 @@
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 10 ),
-                       array( 'many', 11 ),
-                       array( 'many', 12 ),
+                       array( 'other', 5 ),
+                       array( 'other', 10 ),
+                       array( 'other', 11 ),
+                       array( 'other', 12 ),
                        array( 'one', 101 ),
                        array( 'few', 102 ),
-                       array( 'many', 111 ),
+                       array( 'other', 111 ),
                );
        }
 }
diff --git a/tests/phpunit/languages/LanguageSrTest.php 
b/tests/phpunit/languages/LanguageSrTest.php
index f551248..8d35f36 100644
--- a/tests/phpunit/languages/LanguageSrTest.php
+++ b/tests/phpunit/languages/LanguageSrTest.php
@@ -130,7 +130,7 @@
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( 
$value, $forms ) );
        }
 
@@ -145,16 +145,16 @@
        public static function providePlural() {
                return array(
                        array( 'one', 1 ),
-                       array( 'many', 11 ),
+                       array( 'other', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
                        array( 'few', 2 ),
                        array( 'few', 3 ),
                        array( 'few', 4 ),
                        array( 'few', 334 ),
-                       array( 'many', 5 ),
-                       array( 'many', 15 ),
-                       array( 'many', 120 ),
+                       array( 'other', 5 ),
+                       array( 'other', 15 ),
+                       array( 'other', 120 ),
                );
        }
 
@@ -171,8 +171,9 @@
                return array(
                        array( 'one', 1 ),
                        array( 'other', 11 ),
-                       array( 'other', 91 ),
-                       array( 'other', 121 ),
+                       array( 'other', 4 ),
+                       array( 'one', 91 ),
+                       array( 'one', 121 ),
                );
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9930b290d004667a3bb09e5c1663ec2c9c27d8a6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com>

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

Reply via email to