We have a data driven plural rule evaluation system in core now.
See I1aa3b081
Added more tests
Change-Id: I4451fc7d434d9d29bb6ea36f0c0698fbe8dc4ff4
+++ /dev/null
-/**
- * Amharic (አማርኛ) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Samogitian (Žemaitėška) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- count = Math.abs( count );
- if ( count === 0 || ( count % 100 === 0 || ( count % 100 >= 10 && count % 100 < 20 ) ) ) {
- return forms[2];
- }
- if ( count % 10 === 1 ) {
- return forms[0];
- }
- if ( count % 10 === 2 ) {
- return forms[1];
- }
- return forms[3];
-};
+++ /dev/null
-/**
- * Belarusian in Taraskievica orthography (Беларуская (тарашкевіца)) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( forms.length === 2 ) {
- return count == 1 ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Belarusian normative (Беларуская) language functions
- */
-
-mediaWiki.language.convertPlural = function convertPlural( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Bihari (भोजपुरी) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
* Bosnian (bosanski) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'bs', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * Czech (čeština [subst.], český [adj.], česky [adv.]) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- switch ( count ) {
- case 1:
- return forms[0];
- case 2:
- case 3:
- case 4:
- return forms[1];
- default:
- return forms[2];
- }
-};
+++ /dev/null
-/**
- * Old Church Slavonic (Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- switch ( count % 10 ) {
- case 1:
- return forms[0];
- case 2:
- return forms[1];
- case 3:
- case 4:
- return forms[2];
- default:
- return forms[3];
- }
-};
+++ /dev/null
-/**
- * Welsh (Cymraeg) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 6 );
- count = Math.abs( count );
- if ( count >= 0 && count <= 3 ) {
- return forms[count];
- }
- if ( count == 6 ) {
- return forms[4];
- }
- return forms[5];
-};
* Lower Sorbian (Dolnoserbski) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- switch ( Math.abs( count ) % 100 ) {
- case 1:
- return forms[0];
- case 2:
- return forms[1];
- case 3:
- case 4:
- return forms[2];
- default:
- return forms[3];
- }
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'dsb', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * French (Français) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
* Irish (Gaeilge) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 2 ) {
- return forms[1];
- }
- return forms[2];
-};
-
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'ga', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * Scots Gaelic (Gàidhlig) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- count = Math.abs( count );
- if ( count === 1 ) {
- return forms[0];
- }
- if ( count === 2 ) {
- return forms[1];
- }
- if ( count >= 3 && count <= 10 ) {
- return forms[2];
- }
- return forms[3];
-};
+++ /dev/null
-/**
- * Manx (Gaelg) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- if ( count > 0 && ( count % 20 ) === 0 ) {
- return forms[0];
- }
- switch ( count % 10 ) {
- case 1:
- return forms[1];
- case 2:
- return forms[2];
- default:
- return forms[3];
- }
-};
+++ /dev/null
-/**
- * Croatian (hrvatski) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
* Upper Sorbian (Hornjoserbsce) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- switch ( Math.abs( count ) % 100 ) {
- case 1:
- return forms[0];
- case 2:
- return forms[1];
- case 3:
- case 4:
- return forms[2];
- default:
- return forms[3];
- }
-};
-
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms =mw.language.getData( 'hsb', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
* Armenian (Հայերեն) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( Math.abs( count ) <= 1 ) ? forms[0] : forms[1];
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'hy', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * Ripuarian (Ripoarƒósh) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 0 ) {
- return forms[2];
- }
- return forms[1];
-};
+++ /dev/null
-/**
- * Lingala (Lingála) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Lithuanian (Lietuvių) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- // if the number is not mentioned in message, then use $form[0] for singular and $form[1] for plural or zero
- if ( forms.length == 2 ) {
- return count == 1 ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count % 10 == 1 && count % 100 != 11 ) {
- return forms[0];
- }
- if ( count % 10 >= 2 && ( count % 100 < 10 || count % 100 >= 20 ) ) {
- return forms[1];
- }
- return forms[2];
-};
+++ /dev/null
-/**
- * Latvian (Latviešu) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( ( count % 10 == 1 ) && ( count % 100 != 11 ) ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Malagasy (Malagasy) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Macedonian (Македонски) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( ( count % 10 === 1 ) && ( count % 100 !== 11 ) ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Moldavian (Молдовеняскэ) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 0 || count % 100 < 20 ) {
- return forms[1];
- }
- return forms[2];
-};
+++ /dev/null
-/**
- * Maltese (Malti) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 4 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 0 || ( count % 100 > 1 && count % 100 < 11 ) ) {
- return forms[1];
- }
- if ( count % 100 > 10 && count % 100 < 20 ) {
- return forms[2];
- }
- return forms[3];
-};
+++ /dev/null
-/**
- * Northern Sotho (Sesotho sa Leboa) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Polish (polski) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- count = Math.abs( count );
- if ( count == 1 ) {
- return forms[0];
- }
- switch ( count % 10 ) {
- case 2:
- case 3:
- case 4:
- if ( count / 10 % 10 != 1 ) {
- return forms[1];
- }
- default:
- return forms[2];
- }
-};
+++ /dev/null
-/**
- * Romanian (Română) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 0 || count % 100 < 20 ) {
- return forms[1];
- }
- return forms[2];
-};
* Russian (Русский) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( forms.length === 2 ) {
- return count == 1 ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'ru', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * Northern Sami (Sámegiella) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( !forms || forms.length === 0 ) {
- return '';
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 2 ) {
- return forms[1];
- }
- return forms[2];
-};
+++ /dev/null
-/**
- * Serbo-Croatian (Srpskohrvatski / Српскохрватски) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( forms.length === 2 ) {
- return count == 1 ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Slovak (Slovenčina) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 2 || count == 3 || count == 4 ) {
- return forms[1];
- }
- return forms[2];
-};
* Slovenian (Slovenščina) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 5 );
- if ( count % 100 == 1 ) {
- return forms[0];
- }
- if ( count % 100 == 2 ) {
- return forms[1];
- }
- if ( count % 100 == 3 || count % 100 == 4 ) {
- return forms[2];
- }
- if ( count != 0 ) {
- return forms[3];
- }
- return forms[4];
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'sl', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
+++ /dev/null
-/**
- * Southern Sami (Åarjelsaemien) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( !forms || forms.length === 0 ) {
- return '';
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count == 1 ) {
- return forms[0];
- }
- if ( count == 2 ) {
- return forms[1];
- }
- return forms[2];
-};
+++ /dev/null
-/**
- * Serbian (cyrillic script) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Serbian (latin script) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Serbian (Српски / Srpski) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( forms.length === 2 ) {
- return ( count == 1 ) ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
+++ /dev/null
-/**
- * Tigrinya (ትግርኛ) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural(forms, 2);
- return (count <= 1) ? forms[0] : forms[1];
-};
+++ /dev/null
-/**
- * Tagalog (Tagalog) language functions
- */
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
* Ukrainian (Українська) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- if ( forms.length === 2 ) {
- return count == 1 ? forms[0] : forms[1];
- }
- forms = mediaWiki.language.preConvertPlural( forms, 3 );
- if ( count > 10 && Math.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];
- }
-};
-
mediaWiki.language.convertGrammar = function( word, form ) {
var grammarForms = mw.language.getData( 'uk', 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
}
switch ( form ) {
case 'genitive': // родовий відмінок
- if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
+ if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
}
else if ( word.substr( word.length - 1 ) == 'ь' )
word = word.substr(0, word.length - 1 ) + 'я';
word = word.substr(0, word.length - 2 ) + 'ії';
else if ( word.substr( word.length - 2 ) == 'ка' )
word = word.substr(0, word.length - 2 ) + 'ки';
- else if ( word.substr( word.length - 2 ) == 'ти' )
+ else if ( word.substr( word.length - 2 ) == 'ти' )
word = word.substr(0, word.length - 2 ) + 'тей';
else if ( word.substr( word.length - 2 ) == 'ды' )
word = word.substr(0, word.length - 2 ) + 'дов';
word = word.substr(0, word.length - 3 ) + 'ника';
break;
case 'accusative': // знахідний відмінок
- if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
+ if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
}
else if ( word.substr( word.length - 2 ) == 'ія' )
word = word.substr(0, word.length - 2 ) + 'ію';
+++ /dev/null
-/**
- * Walloon (Walon) language functions
- */
-
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
-};
*/
getData: function ( langCode, dataKey ) {
var langData = language.data;
- if ( langData[langCode] instanceof mw.Map ) {
+ if ( langData && langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
return undefined;
[ 0, [ "one", "other" ], "other", "English plural test- 0 is other" ],
[ 1, [ "one", "other" ], "one", "English plural test- 1 is one" ]
],
+ "fa": [
+ [ 0, [ "one", "other" ], "other", "Persian plural test- 0 is other" ],
+ [ 1, [ "one", "other" ], "one", "Persian plural test- 1 is one" ],
+ [ 2, [ "one", "other" ], "other", "Persian plural test- 2 is other" ]
+ ],
+ "fr": [
+ [ 0, [ "one", "other" ], "other", "French plural test- 0 is other" ],
+ [ 1, [ "one", "other" ], "one", "French plural test- 1 is one" ]
+ ],
"hi": [
[ 0, [ "one", "other" ], "one", "Hindi plural test- 0 is one" ],
[ 1, [ "one", "other" ], "one", "Hindi plural test- 1 is one" ],
[ 2, [ "one", "other" ], "other", "Hebrew plural test- 2 is other with 2 forms" ],
[ 2, [ "one", "dual", "other" ], "dual", "Hebrew plural test- 2 is dual with 3 forms" ]
],
+ "hu": [
+ [ 0, [ "one", "other" ], "other", "Hungarian plural test- 0 is other" ],
+ [ 1, [ "one", "other" ], "one", "Hungarian plural test- 1 is one" ],
+ [ 2, [ "one", "other" ], "other", "Hungarian plural test- 2 is other" ]
+ ],
"ar": [
[ 0, [ "zero", "one", "two", "few", "many", "other" ], "zero", "Arabic plural test - 0 is zero" ],
[ 1, [ "zero", "one", "two", "few", "many", "other" ], "one", "Arabic plural test - 1 is one" ],