* The updates include incompatible changes for plural forms in Russian,
Prussian, Tagalog, Manx and several languages that fall back to Russian.
In addition there are minor changes for other languages.
* Test cases were updated to reflect these changes.
Bug: 62861
Change-Id: I7cce477925330fe5bbf51a8470060dc1223981d0
Updated plurals.xml with new data from CLDR 24.
This data is according to UTS #35 Rev 33.
Update the CLDRPluralRuleParser.js to version 1.1 from upstream
https://github.com/santhoshtr/CLDRPluralRuleParser
Changes to the plural rules:
* Hebrew override removed since CLDR 24 matches with MW plural rules.
* Updated the syntax of overridden rules to TR35 Rev 33 for
Lower Sorbian (dsb), Upper Sorbian (hsb), Belarusian in Taraskievica
orthography (be_tarask), Old Church Slavonic (cu), Bhojpuri (bho),
Samogitian (sgs).
* Removed Manx (gv) override. See I46ab3dadc7fe08c1e60bbd81a1ee841e166e9608.
* Removed the overriden convertPlural method for Serbian from LanguageSr.php,
since CLDR 24 matches with MW rules. Updated and added more tests.
Tests updated for Serbocroatian (sh), too. Old CLDR 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) and Croatian (hr).
Also for variants sr-ec and sr-el
* Macedonian (mk) used to count 11 as 'other' form.
CLDR 24 counts it as 'one'.
Not overriding, using CLDR 24 here.
Updated the tests. MW will not override this.
* Armenian (hy) used to count 0 as 'other'.
Now it is 'one' form.
Updated the tests. MW will not override this.
* Latvian (lv) used to count only 0 as 'zero' form, but CLDR 24, any number
satisifying the following formula is counted as zero:
n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19
Examples: 0, 10~20, 30, 40, 50, 60, 100.
Updated the tests accordingly. Not overriding it in MW.
Users will see different plural form for the above numbers.
* Removed Ukranian custom plural rule since it match with MW
* 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.
This will affect the messages, and such messages
must be reviewed and updated. This change is not included in this patch and
wil be done separately.
Russian is the only remaining language class with convertPlural method overridden.
Notable impact on the exising messages:
* For languages ru, uk, be_tarask, sr, For the special case
of two plural forms and first mapped to 1 and rest to the other form, syntax like
{{plural:$1|1=one|other}} should be used.
For further information regarding each of the above language changes, see
1. http://unicode.org/cldr/trac/ticket/3727
2. http://goo.gl/H2HEz
CLDR 24 can handle fractions. Ideally it should start working
in MW without any code changes, but MW language test suite
does not have enough tests to confirm.
Followup: e571717e06
Bug: 56931
Change-Id: I9930b290d004667a3bb09e5c1663ec2c9c27d8a6
Backported the plural rules from CLDR 24 as an override to CLDR 23 rules
exising in MediaWiki. The syntax for plural rules changed in CLDR 24, so
modified the syntax to fit the CLDR 23 syntax
Once we are ready with the updated parsers for CLDR 24(See bug 56931),
we should remove the override.
Since we remove the custom plural forms in MW in favor of CLDR,
the following changes comes into effect:
1. 'few' form used as 'zero' form in MW. Practially that make 'one' form used
as 'two' form and 'two' used as 'few' form.
This breaks existing gv {{PURAL}} usage as dicussed in the bug report
2. CLDR defines 'few' form as n % 100 = 0,20,40,60 but MW adds 80 also to that
list, ie n % 100 = 0,20,40,60, 80. So with this patch, 80 is no longer considered
as 'few' plural form.
Bug: 47099
Change-Id: I46ab3dadc7fe08c1e60bbd81a1ee841e166e9608
A recent CLDR update changed the plural rules for Hebrew
and added a "many" form. That rule has a mistake, however -
it is not supposed to include the number 10. This is reported as
http://unicode.org/cldr/trac/ticket/5828
This commit updates the plural overrides for Hebrew and makes
them closer to the latest CLDR, but with a fix for that rule.
It also updates the tests to include support for the new rule
and to make sure that the right fallbacks are used when
less than four rules are supplied, because usually that is
the case. It is thus a partial revert of the changes introduced
in I3d72e4105f6244b0695116940e62a2ddef66eb66 .
Mingle-Task: 2715
Change-Id: I1315e6900ef7a89bf246e748b786f7fc31a629c6
For example, find out which rule type should be applied for 5 items
in Arabic. The result would be 'few'.
This implementation should be non-disruptive and completely backwards
compatible (which is the main reason it isn't a lot simpler).
Change-Id: I3d72e4105f6244b0695116940e62a2ddef66eb66
* CLDR does not define plural rules for sgs.
* Port the plural rules present in LanguageSgs.php to CLDR plural
definition syntax
* Remove LanguageSgs.php
* Update the tests, reorder/rename the plural form names
Change-Id: I44658402d69a6805cdfd189fe780eadee94056c7
These overrides were done for Bug 40251, but fixed later in
I345c305134a62d43c9dfedc5243981d0e77e326d
Change-Id: I8c1cc0055722ddd31d04fbd9b6cb1215adde23c6
By checking the code against $wgDummyLanguageCodes we can
get rid of checking it on a case-by-case basis.
It's only a suggestion (I don't know if it can break anything),
and Amir Aharoni said that big changes are coming (Bug 41103).
In private case, this change fixes Bug 27571 and maybe some other
language fallback related issues.
Change-Id: I5212beabd5cc212b50ee98b5b53ec01b20ffd0c3
There might be more which have not been reported yet.
These should be temporary to restore old behavior
while we are working on alternative solution.
Change-Id: I403a29e2996e09e99ac3e7d394e7bc09a9ff8224
* Use the plurals.xml of CLDR for the plural rules of languages
* Use plurals-mediawiki.xml to override or extend the rules inside MW
* Remove the convertPlural method in each LanguageXX.php
* Parse and load the xml files in LocalisationCache
* Use the CLDRPluralRuleEvaluator.php for parsing the cldr plural rules
(This is taken from Translate extension and might require a replacement
parser without using eval)
* Add getPluralRules() to make the CLDR plural rules available to JS.
PS3: More method documentation, cleanup
Change-Id: I58a9cdfe60c7b9027bf031c91370472054f04ae2