From 75239e0e2fe89aafd9f0be9e5f1a195e62a65a9f Mon Sep 17 00:00:00 2001 From: Hashar Date: Thu, 20 Sep 2012 10:00:36 +0000 Subject: [PATCH] (bug 40380) inexistent language files are loaded Revert "Remove all custom plural rules and use CLDR plural rule system" This reverts commit c575d2ff7bfee4049998a4d43676fd8f2250582c Apparently the files are still shipped by the resources loader and causes at least the UploadWizard to be malfunctioning when used in the context of Wiki Loves Monument campaign. --- resources/mediawiki.language/languages/am.js | 8 ++++++ .../mediawiki.language/languages/bat-smg.js | 18 +++++++++++++ .../mediawiki.language/languages/be-tarask.js | 23 ++++++++++++++++ resources/mediawiki.language/languages/be.js | 20 ++++++++++++++ resources/mediawiki.language/languages/bh.js | 8 ++++++ resources/mediawiki.language/languages/bs.js | 17 ++++++++++++ resources/mediawiki.language/languages/cs.js | 17 ++++++++++++ resources/mediawiki.language/languages/cu.js | 18 +++++++++++++ resources/mediawiki.language/languages/cy.js | 15 +++++++++++ resources/mediawiki.language/languages/dsb.js | 15 +++++++++++ resources/mediawiki.language/languages/fr.js | 8 ++++++ resources/mediawiki.language/languages/ga.js | 12 +++++++++ resources/mediawiki.language/languages/gd.js | 18 +++++++++++++ resources/mediawiki.language/languages/gv.js | 18 +++++++++++++ resources/mediawiki.language/languages/hr.js | 20 ++++++++++++++ resources/mediawiki.language/languages/hsb.js | 16 ++++++++++++ resources/mediawiki.language/languages/hy.js | 5 ++++ resources/mediawiki.language/languages/ksh.js | 14 ++++++++++ resources/mediawiki.language/languages/ln.js | 8 ++++++ resources/mediawiki.language/languages/lt.js | 18 +++++++++++++ resources/mediawiki.language/languages/lv.js | 8 ++++++ resources/mediawiki.language/languages/mg.js | 8 ++++++ resources/mediawiki.language/languages/mk.js | 8 ++++++ resources/mediawiki.language/languages/mo.js | 14 ++++++++++ resources/mediawiki.language/languages/mt.js | 17 ++++++++++++ resources/mediawiki.language/languages/nso.js | 8 ++++++ resources/mediawiki.language/languages/pl.js | 21 +++++++++++++++ resources/mediawiki.language/languages/ro.js | 14 ++++++++++ resources/mediawiki.language/languages/ru.js | 20 ++++++++++++++ resources/mediawiki.language/languages/se.js | 17 ++++++++++++ resources/mediawiki.language/languages/sh.js | 23 ++++++++++++++++ resources/mediawiki.language/languages/sk.js | 14 ++++++++++ resources/mediawiki.language/languages/sl.js | 17 ++++++++++++ resources/mediawiki.language/languages/sma.js | 17 ++++++++++++ .../mediawiki.language/languages/sr-ec.js | 20 ++++++++++++++ .../mediawiki.language/languages/sr-el.js | 20 ++++++++++++++ resources/mediawiki.language/languages/sr.js | 23 ++++++++++++++++ resources/mediawiki.language/languages/ti.js | 8 ++++++ resources/mediawiki.language/languages/tl.js | 7 +++++ resources/mediawiki.language/languages/uk.js | 26 ++++++++++++++++--- resources/mediawiki.language/languages/wa.js | 8 ++++++ .../mediawiki.language.init.js | 2 +- .../mediawiki/mediawiki.cldr.test.js | 14 ---------- 43 files changed, 612 insertions(+), 18 deletions(-) create mode 100644 resources/mediawiki.language/languages/am.js create mode 100644 resources/mediawiki.language/languages/bat-smg.js create mode 100644 resources/mediawiki.language/languages/be-tarask.js create mode 100644 resources/mediawiki.language/languages/be.js create mode 100644 resources/mediawiki.language/languages/bh.js create mode 100644 resources/mediawiki.language/languages/cs.js create mode 100644 resources/mediawiki.language/languages/cu.js create mode 100644 resources/mediawiki.language/languages/cy.js create mode 100644 resources/mediawiki.language/languages/fr.js create mode 100644 resources/mediawiki.language/languages/gd.js create mode 100644 resources/mediawiki.language/languages/gv.js create mode 100644 resources/mediawiki.language/languages/hr.js create mode 100644 resources/mediawiki.language/languages/ksh.js create mode 100644 resources/mediawiki.language/languages/ln.js create mode 100644 resources/mediawiki.language/languages/lt.js create mode 100644 resources/mediawiki.language/languages/lv.js create mode 100644 resources/mediawiki.language/languages/mg.js create mode 100644 resources/mediawiki.language/languages/mk.js create mode 100644 resources/mediawiki.language/languages/mo.js create mode 100644 resources/mediawiki.language/languages/mt.js create mode 100644 resources/mediawiki.language/languages/nso.js create mode 100644 resources/mediawiki.language/languages/pl.js create mode 100644 resources/mediawiki.language/languages/ro.js create mode 100644 resources/mediawiki.language/languages/se.js create mode 100644 resources/mediawiki.language/languages/sh.js create mode 100644 resources/mediawiki.language/languages/sk.js create mode 100644 resources/mediawiki.language/languages/sma.js create mode 100644 resources/mediawiki.language/languages/sr-ec.js create mode 100644 resources/mediawiki.language/languages/sr-el.js create mode 100644 resources/mediawiki.language/languages/sr.js create mode 100644 resources/mediawiki.language/languages/ti.js create mode 100644 resources/mediawiki.language/languages/tl.js create mode 100644 resources/mediawiki.language/languages/wa.js diff --git a/resources/mediawiki.language/languages/am.js b/resources/mediawiki.language/languages/am.js new file mode 100644 index 0000000000..fa5d3c5726 --- /dev/null +++ b/resources/mediawiki.language/languages/am.js @@ -0,0 +1,8 @@ +/** + * Amharic (አማርኛ) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/bat-smg.js b/resources/mediawiki.language/languages/bat-smg.js new file mode 100644 index 0000000000..6e3f4cc9aa --- /dev/null +++ b/resources/mediawiki.language/languages/bat-smg.js @@ -0,0 +1,18 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/be-tarask.js b/resources/mediawiki.language/languages/be-tarask.js new file mode 100644 index 0000000000..c19f47d1ba --- /dev/null +++ b/resources/mediawiki.language/languages/be-tarask.js @@ -0,0 +1,23 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/be.js b/resources/mediawiki.language/languages/be.js new file mode 100644 index 0000000000..97ceee3bda --- /dev/null +++ b/resources/mediawiki.language/languages/be.js @@ -0,0 +1,20 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/bh.js b/resources/mediawiki.language/languages/bh.js new file mode 100644 index 0000000000..abbf8bd9f8 --- /dev/null +++ b/resources/mediawiki.language/languages/bh.js @@ -0,0 +1,8 @@ +/** + * Bihari (भोजपुरी) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/bs.js b/resources/mediawiki.language/languages/bs.js index c0c77aaf95..9affcf0c4d 100644 --- a/resources/mediawiki.language/languages/bs.js +++ b/resources/mediawiki.language/languages/bs.js @@ -2,6 +2,23 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/cs.js b/resources/mediawiki.language/languages/cs.js new file mode 100644 index 0000000000..04dda99d34 --- /dev/null +++ b/resources/mediawiki.language/languages/cs.js @@ -0,0 +1,17 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/cu.js b/resources/mediawiki.language/languages/cu.js new file mode 100644 index 0000000000..35a5473910 --- /dev/null +++ b/resources/mediawiki.language/languages/cu.js @@ -0,0 +1,18 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/cy.js b/resources/mediawiki.language/languages/cy.js new file mode 100644 index 0000000000..333d956f66 --- /dev/null +++ b/resources/mediawiki.language/languages/cy.js @@ -0,0 +1,15 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/dsb.js b/resources/mediawiki.language/languages/dsb.js index a42a8f7f42..e3c5808741 100644 --- a/resources/mediawiki.language/languages/dsb.js +++ b/resources/mediawiki.language/languages/dsb.js @@ -2,6 +2,21 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/fr.js b/resources/mediawiki.language/languages/fr.js new file mode 100644 index 0000000000..bfb52d2805 --- /dev/null +++ b/resources/mediawiki.language/languages/fr.js @@ -0,0 +1,8 @@ +/** + * French (Français) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/ga.js b/resources/mediawiki.language/languages/ga.js index a27b489d50..51fce35b6d 100644 --- a/resources/mediawiki.language/languages/ga.js +++ b/resources/mediawiki.language/languages/ga.js @@ -2,6 +2,18 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/gd.js b/resources/mediawiki.language/languages/gd.js new file mode 100644 index 0000000000..5ac2007785 --- /dev/null +++ b/resources/mediawiki.language/languages/gd.js @@ -0,0 +1,18 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/gv.js b/resources/mediawiki.language/languages/gv.js new file mode 100644 index 0000000000..afc2b5d476 --- /dev/null +++ b/resources/mediawiki.language/languages/gv.js @@ -0,0 +1,18 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/hr.js b/resources/mediawiki.language/languages/hr.js new file mode 100644 index 0000000000..e3ce291b03 --- /dev/null +++ b/resources/mediawiki.language/languages/hr.js @@ -0,0 +1,20 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/hsb.js b/resources/mediawiki.language/languages/hsb.js index 211d67b551..6aa993c832 100644 --- a/resources/mediawiki.language/languages/hsb.js +++ b/resources/mediawiki.language/languages/hsb.js @@ -2,6 +2,22 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/hy.js b/resources/mediawiki.language/languages/hy.js index 215e750474..b51b2b676f 100644 --- a/resources/mediawiki.language/languages/hy.js +++ b/resources/mediawiki.language/languages/hy.js @@ -2,6 +2,11 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/ksh.js b/resources/mediawiki.language/languages/ksh.js new file mode 100644 index 0000000000..ed907325dd --- /dev/null +++ b/resources/mediawiki.language/languages/ksh.js @@ -0,0 +1,14 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/ln.js b/resources/mediawiki.language/languages/ln.js new file mode 100644 index 0000000000..9b9e456a9a --- /dev/null +++ b/resources/mediawiki.language/languages/ln.js @@ -0,0 +1,8 @@ +/** + * Lingala (Lingála) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/lt.js b/resources/mediawiki.language/languages/lt.js new file mode 100644 index 0000000000..04964afff6 --- /dev/null +++ b/resources/mediawiki.language/languages/lt.js @@ -0,0 +1,18 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/lv.js b/resources/mediawiki.language/languages/lv.js new file mode 100644 index 0000000000..d4bec44a09 --- /dev/null +++ b/resources/mediawiki.language/languages/lv.js @@ -0,0 +1,8 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/mg.js b/resources/mediawiki.language/languages/mg.js new file mode 100644 index 0000000000..b65e96e39d --- /dev/null +++ b/resources/mediawiki.language/languages/mg.js @@ -0,0 +1,8 @@ +/** + * Malagasy (Malagasy) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/mk.js b/resources/mediawiki.language/languages/mk.js new file mode 100644 index 0000000000..c89bbac592 --- /dev/null +++ b/resources/mediawiki.language/languages/mk.js @@ -0,0 +1,8 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/mo.js b/resources/mediawiki.language/languages/mo.js new file mode 100644 index 0000000000..0c4b696a4f --- /dev/null +++ b/resources/mediawiki.language/languages/mo.js @@ -0,0 +1,14 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/mt.js b/resources/mediawiki.language/languages/mt.js new file mode 100644 index 0000000000..44c7bfffc1 --- /dev/null +++ b/resources/mediawiki.language/languages/mt.js @@ -0,0 +1,17 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/nso.js b/resources/mediawiki.language/languages/nso.js new file mode 100644 index 0000000000..30cf1892e7 --- /dev/null +++ b/resources/mediawiki.language/languages/nso.js @@ -0,0 +1,8 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/pl.js b/resources/mediawiki.language/languages/pl.js new file mode 100644 index 0000000000..03e0d8425b --- /dev/null +++ b/resources/mediawiki.language/languages/pl.js @@ -0,0 +1,21 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/ro.js b/resources/mediawiki.language/languages/ro.js new file mode 100644 index 0000000000..42610fe6fb --- /dev/null +++ b/resources/mediawiki.language/languages/ro.js @@ -0,0 +1,14 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/ru.js b/resources/mediawiki.language/languages/ru.js index cfdbfc3baf..42be4f9d75 100644 --- a/resources/mediawiki.language/languages/ru.js +++ b/resources/mediawiki.language/languages/ru.js @@ -2,6 +2,26 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/se.js b/resources/mediawiki.language/languages/se.js new file mode 100644 index 0000000000..e1ae5b9a43 --- /dev/null +++ b/resources/mediawiki.language/languages/se.js @@ -0,0 +1,17 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/sh.js b/resources/mediawiki.language/languages/sh.js new file mode 100644 index 0000000000..719b0c5724 --- /dev/null +++ b/resources/mediawiki.language/languages/sh.js @@ -0,0 +1,23 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/sk.js b/resources/mediawiki.language/languages/sk.js new file mode 100644 index 0000000000..21a22b21f3 --- /dev/null +++ b/resources/mediawiki.language/languages/sk.js @@ -0,0 +1,14 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/sl.js b/resources/mediawiki.language/languages/sl.js index acd00bfd52..cfb578126b 100644 --- a/resources/mediawiki.language/languages/sl.js +++ b/resources/mediawiki.language/languages/sl.js @@ -2,6 +2,23 @@ * 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] ) { diff --git a/resources/mediawiki.language/languages/sma.js b/resources/mediawiki.language/languages/sma.js new file mode 100644 index 0000000000..8163c42c8f --- /dev/null +++ b/resources/mediawiki.language/languages/sma.js @@ -0,0 +1,17 @@ +/** + * 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]; +}; diff --git a/resources/mediawiki.language/languages/sr-ec.js b/resources/mediawiki.language/languages/sr-ec.js new file mode 100644 index 0000000000..af48eb07bf --- /dev/null +++ b/resources/mediawiki.language/languages/sr-ec.js @@ -0,0 +1,20 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/sr-el.js b/resources/mediawiki.language/languages/sr-el.js new file mode 100644 index 0000000000..fd6ca01241 --- /dev/null +++ b/resources/mediawiki.language/languages/sr-el.js @@ -0,0 +1,20 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/sr.js b/resources/mediawiki.language/languages/sr.js new file mode 100644 index 0000000000..25cdc8a20d --- /dev/null +++ b/resources/mediawiki.language/languages/sr.js @@ -0,0 +1,23 @@ +/** + * 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]; + } +}; diff --git a/resources/mediawiki.language/languages/ti.js b/resources/mediawiki.language/languages/ti.js new file mode 100644 index 0000000000..69b6d9b8b8 --- /dev/null +++ b/resources/mediawiki.language/languages/ti.js @@ -0,0 +1,8 @@ +/** + * Tigrinya (ትግርኛ) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural(forms, 2); + return (count <= 1) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/tl.js b/resources/mediawiki.language/languages/tl.js new file mode 100644 index 0000000000..29219fdb39 --- /dev/null +++ b/resources/mediawiki.language/languages/tl.js @@ -0,0 +1,7 @@ +/** + * Tagalog (Tagalog) language functions + */ +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/languages/uk.js b/resources/mediawiki.language/languages/uk.js index ee110b0640..372d441905 100644 --- a/resources/mediawiki.language/languages/uk.js +++ b/resources/mediawiki.language/languages/uk.js @@ -2,6 +2,26 @@ * 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] ) { @@ -9,7 +29,7 @@ mediaWiki.language.convertGrammar = function( word, 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 ) + 'я'; @@ -17,7 +37,7 @@ mediaWiki.language.convertGrammar = function( word, form ) { 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 ) + 'дов'; @@ -25,7 +45,7 @@ mediaWiki.language.convertGrammar = function( word, form ) { 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 ) + 'ію'; diff --git a/resources/mediawiki.language/languages/wa.js b/resources/mediawiki.language/languages/wa.js new file mode 100644 index 0000000000..e1773759f1 --- /dev/null +++ b/resources/mediawiki.language/languages/wa.js @@ -0,0 +1,8 @@ +/** + * Walloon (Walon) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +}; diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js index 30307a37de..8d2ffae06b 100644 --- a/resources/mediawiki.language/mediawiki.language.init.js +++ b/resources/mediawiki.language/mediawiki.language.init.js @@ -33,7 +33,7 @@ */ getData: function ( langCode, dataKey ) { var langData = language.data; - if ( langData && langData[langCode] instanceof mw.Map ) { + if ( langData[langCode] instanceof mw.Map ) { return langData[langCode].get( dataKey ); } return undefined; diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js index 93ece8de45..09a11b0e51 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js @@ -16,15 +16,6 @@ var pluralTestcases = { [ 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" ], @@ -36,11 +27,6 @@ var pluralTestcases = { [ 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" ], -- 2.20.1