From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- resources/mediawiki.language/languages/am.js | 8 -- resources/mediawiki.language/languages/ar.js | 38 ---------- resources/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 | 25 +++---- 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 | 25 ++++--- resources/mediawiki.language/languages/fi.js | 44 +++++++++++ resources/mediawiki.language/languages/fr.js | 8 -- resources/mediawiki.language/languages/ga.js | 37 ++++++++-- resources/mediawiki.language/languages/gd.js | 18 ----- resources/mediawiki.language/languages/gv.js | 18 ----- resources/mediawiki.language/languages/he.js | 29 ++++++-- resources/mediawiki.language/languages/hi.js | 8 -- resources/mediawiki.language/languages/hr.js | 20 ----- resources/mediawiki.language/languages/hsb.js | 25 ++++--- resources/mediawiki.language/languages/hu.js | 23 ++++++ resources/mediawiki.language/languages/hy.js | 25 ++++++- resources/mediawiki.language/languages/ksh.js | 14 ---- resources/mediawiki.language/languages/la.js | 50 +++++++++++++ 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/nl.js | 8 -- resources/mediawiki.language/languages/nso.js | 8 -- resources/mediawiki.language/languages/os.js | 69 +++++++++++++++++ resources/mediawiki.language/languages/pl.js | 21 ------ resources/mediawiki.language/languages/pt-br.js | 8 -- resources/mediawiki.language/languages/pt.js | 8 -- resources/mediawiki.language/languages/ro.js | 14 ---- resources/mediawiki.language/languages/ru.js | 38 ++++++---- 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 | 25 +++---- resources/mediawiki.language/languages/sma.js | 17 ----- resources/mediawiki.language/languages/sr-ec.js | 20 ----- resources/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 | 44 +++++++---- resources/mediawiki.language/languages/wa.js | 8 -- resources/mediawiki.language/mediawiki.cldr.js | 28 +++++++ .../mediawiki.language/mediawiki.language.init.js | 61 +++++++++++++++ resources/mediawiki.language/mediawiki.language.js | 86 +++++++++++++++------- 54 files changed, 509 insertions(+), 681 deletions(-) delete mode 100644 resources/mediawiki.language/languages/am.js delete mode 100644 resources/mediawiki.language/languages/ar.js delete mode 100644 resources/mediawiki.language/languages/bat-smg.js delete mode 100644 resources/mediawiki.language/languages/be-tarask.js delete mode 100644 resources/mediawiki.language/languages/be.js delete mode 100644 resources/mediawiki.language/languages/bh.js delete mode 100644 resources/mediawiki.language/languages/cs.js delete mode 100644 resources/mediawiki.language/languages/cu.js delete mode 100644 resources/mediawiki.language/languages/cy.js create mode 100644 resources/mediawiki.language/languages/fi.js delete mode 100644 resources/mediawiki.language/languages/fr.js delete mode 100644 resources/mediawiki.language/languages/gd.js delete mode 100644 resources/mediawiki.language/languages/gv.js delete mode 100644 resources/mediawiki.language/languages/hi.js delete mode 100644 resources/mediawiki.language/languages/hr.js create mode 100644 resources/mediawiki.language/languages/hu.js delete mode 100644 resources/mediawiki.language/languages/ksh.js create mode 100644 resources/mediawiki.language/languages/la.js delete mode 100644 resources/mediawiki.language/languages/ln.js delete mode 100644 resources/mediawiki.language/languages/lt.js delete mode 100644 resources/mediawiki.language/languages/lv.js delete mode 100644 resources/mediawiki.language/languages/mg.js delete mode 100644 resources/mediawiki.language/languages/mk.js delete mode 100644 resources/mediawiki.language/languages/mo.js delete mode 100644 resources/mediawiki.language/languages/mt.js delete mode 100644 resources/mediawiki.language/languages/nl.js delete mode 100644 resources/mediawiki.language/languages/nso.js create mode 100644 resources/mediawiki.language/languages/os.js delete mode 100644 resources/mediawiki.language/languages/pl.js delete mode 100644 resources/mediawiki.language/languages/pt-br.js delete mode 100644 resources/mediawiki.language/languages/pt.js delete mode 100644 resources/mediawiki.language/languages/ro.js delete mode 100644 resources/mediawiki.language/languages/se.js delete mode 100644 resources/mediawiki.language/languages/sh.js delete mode 100644 resources/mediawiki.language/languages/sk.js delete mode 100644 resources/mediawiki.language/languages/sma.js delete mode 100644 resources/mediawiki.language/languages/sr-ec.js delete mode 100644 resources/mediawiki.language/languages/sr-el.js delete mode 100644 resources/mediawiki.language/languages/sr.js delete mode 100644 resources/mediawiki.language/languages/ti.js delete mode 100644 resources/mediawiki.language/languages/tl.js delete mode 100644 resources/mediawiki.language/languages/wa.js create mode 100644 resources/mediawiki.language/mediawiki.cldr.js create mode 100644 resources/mediawiki.language/mediawiki.language.init.js (limited to 'resources/mediawiki.language') diff --git a/resources/mediawiki.language/languages/am.js b/resources/mediawiki.language/languages/am.js deleted file mode 100644 index fa5d3c57..00000000 --- a/resources/mediawiki.language/languages/am.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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/ar.js b/resources/mediawiki.language/languages/ar.js deleted file mode 100644 index 7d9e114f..00000000 --- a/resources/mediawiki.language/languages/ar.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Arabic (العربية) language functions - */ - -mediaWiki.language.convertPlural = function( count, forms ) { - forms = mediaWiki.language.preConvertPlural( forms, 6 ); - if ( count == 0 ) { - return forms[0]; - } - if ( count == 1 ) { - return forms[1]; - } - if ( count == 2 ) { - return forms[2]; - } - if ( count % 100 >= 3 && count % 100 <= 10 ) { - return forms[3]; - } - if ( count % 100 >= 11 && count % 100 <= 99 ) { - return forms[4]; - } - return forms[5]; -}; - -mediaWiki.language.digitTransformTable = { - '0': '٠', // ٠ - '1': '١', // ١ - '2': '٢', // ٢ - '3': '٣', // ٣ - '4': '٤', // ٤ - '5': '٥', // ٥ - '6': '٦', // ٦ - '7': '٧', // ٧ - '8': '٨', // ٨ - '9': '٩', // ٩ - '.': '٫', // ٫ wrong table ? - ',': '٬' // ٬ -}; diff --git a/resources/mediawiki.language/languages/bat-smg.js b/resources/mediawiki.language/languages/bat-smg.js deleted file mode 100644 index 6e3f4cc9..00000000 --- a/resources/mediawiki.language/languages/bat-smg.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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 deleted file mode 100644 index c19f47d1..00000000 --- a/resources/mediawiki.language/languages/be-tarask.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * 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 deleted file mode 100644 index 97ceee3b..00000000 --- a/resources/mediawiki.language/languages/be.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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 deleted file mode 100644 index abbf8bd9..00000000 --- a/resources/mediawiki.language/languages/bh.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 9f22426a..c0c77aaf 100644 --- a/resources/mediawiki.language/languages/bs.js +++ b/resources/mediawiki.language/languages/bs.js @@ -2,19 +2,18 @@ * 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]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'bs', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - switch ( count % 10 ) { - case 1: - return forms[0]; - case 2: - case 3: - case 4: - return forms[1]; - default: - return forms[2]; + switch ( form ) { + case 'instrumental': // instrumental + word = 's ' + word; + break; + case 'lokativ': // locative + word = 'o ' + word; + break; } + return word; }; diff --git a/resources/mediawiki.language/languages/cs.js b/resources/mediawiki.language/languages/cs.js deleted file mode 100644 index 04dda99d..00000000 --- a/resources/mediawiki.language/languages/cs.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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 deleted file mode 100644 index 35a54739..00000000 --- a/resources/mediawiki.language/languages/cu.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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 deleted file mode 100644 index 333d956f..00000000 --- a/resources/mediawiki.language/languages/cy.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * 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 c3eaa1fc..a42a8f7f 100644 --- a/resources/mediawiki.language/languages/dsb.js +++ b/resources/mediawiki.language/languages/dsb.js @@ -2,17 +2,18 @@ * 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] ) { + return grammarForms[form][word] ; } + switch ( form ) { + case 'instrumental': // instrumental + word = 'z ' + word; + break; + case 'lokatiw': // lokatiw + word = 'wo ' + word; + break; + } + return word; }; diff --git a/resources/mediawiki.language/languages/fi.js b/resources/mediawiki.language/languages/fi.js new file mode 100644 index 00000000..374698dc --- /dev/null +++ b/resources/mediawiki.language/languages/fi.js @@ -0,0 +1,44 @@ +/** + * Finnish (Suomi) language functions + * @author Santhosh Thottingal + */ + +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'fi', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; + } + + // vowel harmony flag + var aou = word.match( /[aou][^äöy]*$/i ); + var origWord = word; + if ( word.match( /wiki$/i ) ) { + aou = false; + } + //append i after final consonant + if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) ) + word += 'i'; + + switch ( form ) { + case 'genitive': + word += 'n'; + break; + case 'elative': + word += ( aou ? 'sta' : 'stä' ); + break; + case 'partitive': + word += ( aou ? 'a' : 'ä' ); + break; + case 'illative': + // Double the last letter and add 'n' + word += word.substr( word.length-1 ) + 'n'; + break; + case 'inessive': + word += ( aou ? 'ssa' : 'ssä' ); + break; + default: + word = origWord; + break; + } + return word; +}; diff --git a/resources/mediawiki.language/languages/fr.js b/resources/mediawiki.language/languages/fr.js deleted file mode 100644 index bfb52d28..00000000 --- a/resources/mediawiki.language/languages/fr.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 39280138..a27b489d 100644 --- a/resources/mediawiki.language/languages/ga.js +++ b/resources/mediawiki.language/languages/ga.js @@ -2,13 +2,36 @@ * Irish (Gaeilge) language functions */ -mediaWiki.language.convertPlural = function( count, forms ) { - forms = mediaWiki.language.preConvertPlural( forms, 3 ); - if ( count == 1 ) { - return forms[0]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'ga', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - if ( count == 2 ) { - return forms[1]; + switch ( form ) { + case 'ainmlae': + switch ( word ) { + case 'an Domhnach': + word = 'Dé Domhnaigh'; + break; + case 'an Luan': + word = 'Dé Luain'; + break; + case 'an Mháirt': + word = 'Dé Mháirt'; + break; + case 'an Chéadaoin': + word = 'Dé Chéadaoin'; + break; + case 'an Déardaoin': + word = 'Déardaoin'; + break; + case 'an Aoine': + word = 'Dé hAoine'; + break; + case 'an Satharn': + word = 'Dé Sathairn'; + break; + } } - return forms[2]; + return word; }; diff --git a/resources/mediawiki.language/languages/gd.js b/resources/mediawiki.language/languages/gd.js deleted file mode 100644 index 5ac20077..00000000 --- a/resources/mediawiki.language/languages/gd.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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 deleted file mode 100644 index afc2b5d4..00000000 --- a/resources/mediawiki.language/languages/gv.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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/he.js b/resources/mediawiki.language/languages/he.js index b74440e4..d35f77ed 100644 --- a/resources/mediawiki.language/languages/he.js +++ b/resources/mediawiki.language/languages/he.js @@ -2,13 +2,28 @@ * Hebrew (עברית) language functions */ -mediaWiki.language.convertPlural = function( count, forms ) { - forms = mediaWiki.language.preConvertPlural( forms, 3 ); - if ( count == 1 ) { - return forms[0]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'he', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - if ( count == 2 && forms[2] ) { - return forms[2]; + switch ( form ) { + case 'prefixed': + case 'תחילית': // the same word in Hebrew + // Duplicate prefixed "Waw", but only if it's not already double + if ( word.substr( 0, 1 ) === "ו" && word.substr( 0, 2 ) !== "וו" ) { + word = "ו" + word; + } + + // Remove the "He" if prefixed + if ( word.substr( 0, 1 ) === "ה" ) { + word = word.substr( 1, word.length ); + } + + // Add a hyphen (maqaf) before numbers and non-Hebrew letters + if ( word.substr( 0, 1 ) < "א" || word.substr( 0, 1 ) > "ת" ) { + word = "־" + word; + } } - return forms[1]; + return word; }; diff --git a/resources/mediawiki.language/languages/hi.js b/resources/mediawiki.language/languages/hi.js deleted file mode 100644 index a22a0e17..00000000 --- a/resources/mediawiki.language/languages/hi.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Hindi (हिन्दी) 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/hr.js b/resources/mediawiki.language/languages/hr.js deleted file mode 100644 index e3ce291b..00000000 --- a/resources/mediawiki.language/languages/hr.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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 8651fe41..211d67b5 100644 --- a/resources/mediawiki.language/languages/hsb.js +++ b/resources/mediawiki.language/languages/hsb.js @@ -2,17 +2,18 @@ * 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] ) { + return grammarForms[form][word] ; } + switch ( form ) { + case 'instrumental': // instrumental + word = 'z ' + word; + break; + case 'lokatiw': // lokatiw + word = 'wo ' + word; + break; + } + return word; }; diff --git a/resources/mediawiki.language/languages/hu.js b/resources/mediawiki.language/languages/hu.js new file mode 100644 index 00000000..eb3f1f3a --- /dev/null +++ b/resources/mediawiki.language/languages/hu.js @@ -0,0 +1,23 @@ +/** + * Hungarian language functions + * @author Santhosh Thottingal + */ + +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'hu', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; + } + switch ( form ) { + case 'rol': + word += 'ról'; + break; + case 'ba': + word += 'ba'; + break; + case 'k': + word += 'k'; + break; + } + return word; +}; diff --git a/resources/mediawiki.language/languages/hy.js b/resources/mediawiki.language/languages/hy.js index 734c26df..215e7504 100644 --- a/resources/mediawiki.language/languages/hy.js +++ b/resources/mediawiki.language/languages/hy.js @@ -2,7 +2,26 @@ * 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] ) { + return grammarForms[form][word] ; + } + + // These rules are not perfect, but they are currently only used for site names so it doesn't + // matter if they are wrong sometimes. Just add a special case for your site name if necessary. + + switch ( form ) { + case 'genitive': // սեռական հոլով + if ( word.substr( -1 ) === 'ա' ) + word = word.substr( 0, word.length -1 ) + 'այի'; + else if ( word.substr( -1 ) === 'ո' ) + word = word.substr( 0, word.length - 1 ) + 'ոյի'; + else if ( word.substr( -4 ) === 'գիրք' ) + word = word.substr( 0, word.length - 4 ) + 'գրքի'; + else + word = word + 'ի'; + break; + } + return word; }; diff --git a/resources/mediawiki.language/languages/ksh.js b/resources/mediawiki.language/languages/ksh.js deleted file mode 100644 index ed907325..00000000 --- a/resources/mediawiki.language/languages/ksh.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 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/la.js b/resources/mediawiki.language/languages/la.js new file mode 100644 index 00000000..313bb1c2 --- /dev/null +++ b/resources/mediawiki.language/languages/la.js @@ -0,0 +1,50 @@ +/** + * Latin (lingua Latina) language functions + * @author Santhosh Thottingal + */ + +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'la', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; + } + switch ( form ) { + case 'genitive': + // only a few declensions, and even for those mostly the singular only + word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular + word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly) + word = word.replace( /a$/i, 'ae' ); // 1st declension singular + word = word.replace( /libri$/i,'librorum' ); // 2nd declension plural (partly) + word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly) + word = word.replace( /tio$/i,'tionis' ); // 3rd declension singular (partly) + word = word.replace( /ns$/i, 'ntis' ); + word = word.replace( /as$/i, 'atis' ); + word = word.replace( /es$/i ,'ei' ); // 5th declension singular + break; + case 'accusative': + // only a few declensions, and even for those mostly the singular only + word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular + word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly) + word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular + word = word.replace( /libri$/i,'libros' ); // 2nd declension plural (partly) + word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly) + word = word.replace( /tio$/i,'tionem' ); // 3rd declension singular (partly) + word = word.replace( /ns$/i, 'ntem' ); + word = word.replace( /as$/i, 'atem'); + word = word.replace( /es$/i ,'em' ); // 5th declension singular + break; + case 'ablative': + // only a few declensions, and even for those mostly the singular only + word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular + word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly) + word = word.replace( /a$/i, 'a' ); // 1st declension singular + word = word.replace( /libri$/i,'libris' ); // 2nd declension plural (partly) + word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly) + word = word.replace( /tio$/i,'tione' ); // 3rd declension singular (partly) + word = word.replace( /ns$/i, 'nte' ); + word = word.replace( /as$/i, 'ate'); + word = word.replace( /es$/i ,'e' ); // 5th declension singular + break; + } + return word; +}; diff --git a/resources/mediawiki.language/languages/ln.js b/resources/mediawiki.language/languages/ln.js deleted file mode 100644 index 9b9e456a..00000000 --- a/resources/mediawiki.language/languages/ln.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 deleted file mode 100644 index 04964aff..00000000 --- a/resources/mediawiki.language/languages/lt.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * 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 deleted file mode 100644 index d4bec44a..00000000 --- a/resources/mediawiki.language/languages/lv.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 deleted file mode 100644 index b65e96e3..00000000 --- a/resources/mediawiki.language/languages/mg.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 deleted file mode 100644 index c89bbac5..00000000 --- a/resources/mediawiki.language/languages/mk.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 deleted file mode 100644 index 0c4b696a..00000000 --- a/resources/mediawiki.language/languages/mo.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 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 deleted file mode 100644 index 44c7bfff..00000000 --- a/resources/mediawiki.language/languages/mt.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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/nl.js b/resources/mediawiki.language/languages/nl.js deleted file mode 100644 index a2b22f4b..00000000 --- a/resources/mediawiki.language/languages/nl.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Dutch (Nederlands) language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : '.' -}; diff --git a/resources/mediawiki.language/languages/nso.js b/resources/mediawiki.language/languages/nso.js deleted file mode 100644 index 30cf1892..00000000 --- a/resources/mediawiki.language/languages/nso.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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/os.js b/resources/mediawiki.language/languages/os.js new file mode 100644 index 00000000..431e38c8 --- /dev/null +++ b/resources/mediawiki.language/languages/os.js @@ -0,0 +1,69 @@ +/** + * Ossetian (Ирон) language functions + * @author Santhosh Thottingal + */ + + +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'os', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; + } + // Ending for allative case + var end_allative = 'мæ'; + // Variable for 'j' beetwen vowels + var jot = ''; + // Variable for "-" for not Ossetic words + var hyphen = ''; + // Variable for ending + var ending = ''; + // Checking if the $word is in plural form + if ( word.match( /тæ$/i ) ) { + word = word.substring( 0, word.length - 1 ); + end_allative = 'æм'; + } + // Works if word is in singular form. + // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю, я. + else if ( word.match( /[аæеёиоыэюя]$/i ) ) { + jot = 'й'; + } + // Checking if word ends on 'у'. 'У' can be either consonant 'W' or vowel 'U' in cyrillic Ossetic. + // Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы. + else if ( word.match( /у$/i ) ) { + if ( ! word.substring( word.length-2, word.length-1 ).match( /[аæеёиоыэюя]$/i ) ) { + jot = 'й'; + } + } else if ( !word.match( /[бвгджзйклмнопрстфхцчшщьъ]$/i ) ) { + hyphen = '-'; + } + + switch ( form ) { + case 'genitive': + ending = hyphen + jot + 'ы'; + break; + case 'dative': + ending = hyphen + jot + 'æн'; + break; + case 'allative': + ending = hyphen + end_allative; + break; + case 'ablative': + if ( jot == 'й' ) { + ending = hyphen + jot + 'æ'; + } + else { + ending = hyphen + jot + 'æй'; + } + break; + case 'superessive': + ending = hyphen + jot + 'ыл'; + break; + case 'equative': + ending = hyphen + jot + 'ау'; + break; + case 'comitative': + ending = hyphen + 'имæ'; + break; + } + return word + ending; +}; diff --git a/resources/mediawiki.language/languages/pl.js b/resources/mediawiki.language/languages/pl.js deleted file mode 100644 index 03e0d842..00000000 --- a/resources/mediawiki.language/languages/pl.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * 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/pt-br.js b/resources/mediawiki.language/languages/pt-br.js deleted file mode 100644 index 2457e247..00000000 --- a/resources/mediawiki.language/languages/pt-br.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Brazilian Portugese (Portuguêsi do Brasil) language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : ' ' -}; diff --git a/resources/mediawiki.language/languages/pt.js b/resources/mediawiki.language/languages/pt.js deleted file mode 100644 index 1b8fc72f..00000000 --- a/resources/mediawiki.language/languages/pt.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Portugese language functions - */ - -mediaWiki.language.digitTransformTable = { - '.' : ',', - ',' : ' ' -}; diff --git a/resources/mediawiki.language/languages/ro.js b/resources/mediawiki.language/languages/ro.js deleted file mode 100644 index 42610fe6..00000000 --- a/resources/mediawiki.language/languages/ro.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 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 17c92931..cfdbfc3b 100644 --- a/resources/mediawiki.language/languages/ru.js +++ b/resources/mediawiki.language/languages/ru.js @@ -2,22 +2,28 @@ * Russian (Русский) language functions */ -mediaWiki.language.convertPlural = function( count, forms ) { - if ( forms.length === 2 ) { - return count == 1 ? forms[0] : forms[1]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'ru', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - 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]; + switch ( form ) { + case 'genitive': // родительный падеж + 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 ) + 'я'; + 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 ) + 'ки'; + 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 ) + 'дов'; + else if ( word.substr( word.length - 3 ) == 'ник' ) + word = word.substr(0, word.length - 3 ) + 'ника'; + break; } + return word; }; diff --git a/resources/mediawiki.language/languages/se.js b/resources/mediawiki.language/languages/se.js deleted file mode 100644 index e1ae5b9a..00000000 --- a/resources/mediawiki.language/languages/se.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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 deleted file mode 100644 index 719b0c57..00000000 --- a/resources/mediawiki.language/languages/sh.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * 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 deleted file mode 100644 index 21a22b21..00000000 --- a/resources/mediawiki.language/languages/sk.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * 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 a887e0e0..acd00bfd 100644 --- a/resources/mediawiki.language/languages/sl.js +++ b/resources/mediawiki.language/languages/sl.js @@ -2,19 +2,18 @@ * Slovenian (Slovenščina) language functions */ -mediaWiki.language.convertPlural = function( count, forms ) { - forms = mediaWiki.language.preConvertPlural( forms, 5 ); - if ( count % 100 == 1 ) { - return forms[0]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'sl', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - if ( count % 100 == 2 ) { - return forms[1]; + switch ( form ) { + case 'mestnik': // locative + word = 'o ' + word; + break; + case 'orodnik': // instrumental + word = 'z ' + word; + break; } - if ( count % 100 == 3 || count % 100 == 4 ) { - return forms[2]; - } - if ( count != 0 ) { - return forms[3]; - } - return forms[4]; + return word; }; diff --git a/resources/mediawiki.language/languages/sma.js b/resources/mediawiki.language/languages/sma.js deleted file mode 100644 index 8163c42c..00000000 --- a/resources/mediawiki.language/languages/sma.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 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 deleted file mode 100644 index af48eb07..00000000 --- a/resources/mediawiki.language/languages/sr-ec.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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 deleted file mode 100644 index fd6ca012..00000000 --- a/resources/mediawiki.language/languages/sr-el.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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 deleted file mode 100644 index 25cdc8a2..00000000 --- a/resources/mediawiki.language/languages/sr.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * 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 deleted file mode 100644 index 69b6d9b8..00000000 --- a/resources/mediawiki.language/languages/ti.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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 deleted file mode 100644 index 29219fdb..00000000 --- a/resources/mediawiki.language/languages/tl.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * 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 5c1294e7..ee110b06 100644 --- a/resources/mediawiki.language/languages/uk.js +++ b/resources/mediawiki.language/languages/uk.js @@ -2,22 +2,34 @@ * Ukrainian (Українська) language functions */ -mediaWiki.language.convertPlural = function( count, forms ) { - if ( forms.length === 2 ) { - return count == 1 ? forms[0] : forms[1]; +mediaWiki.language.convertGrammar = function( word, form ) { + var grammarForms = mw.language.getData( 'uk', 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] ; } - 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]; + switch ( form ) { + case 'genitive': // родовий відмінок + 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 ) + 'я'; + 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 ) + 'ки'; + 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 ) + 'дов'; + else if ( word.substr( word.length - 3 ) == 'ник' ) + word = word.substr(0, word.length - 3 ) + 'ника'; + break; + case 'accusative': // знахідний відмінок + 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 ) + 'ію'; + break; } + return word; }; diff --git a/resources/mediawiki.language/languages/wa.js b/resources/mediawiki.language/languages/wa.js deleted file mode 100644 index e1773759..00000000 --- a/resources/mediawiki.language/languages/wa.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * 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.cldr.js b/resources/mediawiki.language/mediawiki.cldr.js new file mode 100644 index 00000000..6660eca4 --- /dev/null +++ b/resources/mediawiki.language/mediawiki.cldr.js @@ -0,0 +1,28 @@ +/** + * CLDR related utility methods + */ +( function( mw ) { + "use strict"; + + var cldr = { + /** + * For the number, get the plural for index + * In case none of the rules passed, we return pluralRules.length + * That means it is the "other" form. + * @param number + * @param pluralRules + * @return plural form index + */ + getPluralForm: function( number, pluralRules ) { + var pluralFormIndex = 0; + for ( pluralFormIndex = 0; pluralFormIndex < pluralRules.length; pluralFormIndex++ ) { + if ( mw.libs.pluralRuleParser( pluralRules[pluralFormIndex], number ) ) { + break; + } + } + return pluralFormIndex; + } + }; + + mw.cldr = cldr; +} )( mediaWiki ); diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js new file mode 100644 index 00000000..30307a37 --- /dev/null +++ b/resources/mediawiki.language/mediawiki.language.init.js @@ -0,0 +1,61 @@ +/** + * Base language object with methods for storing and getting + * language data. + */ +( function ( mw, $ ) { + + var language = { + /** + * @var data {Object} Language related data (keyed by language, + * contains instances of mw.Map). + * @example Set data + * + * // Override, extend or create the language data object of 'nl' + * mw.language.setData( 'nl', 'myKey', 'My value' ); + * + * // Set multiple values at once + * mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } ); + * + * @example Get GrammarForms data for language 'nl': + * + * var grammarForms = mw.language.getData( 'nl', 'grammarForms' ); + * + */ + data: {}, + + /** + * Convenience method for retreiving language data by language code and data key, + * covering for the potential inexistance of a data object for this langiage. + * @param langCode {String} + * @param dataKey {String} + * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for + the specified langCode). + */ + getData: function ( langCode, dataKey ) { + var langData = language.data; + if ( langData && langData[langCode] instanceof mw.Map ) { + return langData[langCode].get( dataKey ); + } + return undefined; + }, + + /** + * Convenience method for setting language data by language code and data key. + * Creates the data mw.Map if there isn't one for the specified language already. + * + * @param langCode {String} + * @param dataKey {String|Object} Key or object of key/values. + * @param value {mixed} Value for dataKey, ignored if dataKey is an object. + */ + setData: function ( langCode, dataKey, value ) { + var langData = language.data; + if ( !( langData[langCode] instanceof mw.Map ) ) { + langData[langCode] = new mw.Map(); + } + langData[langCode].set( dataKey, value ); + } + }; + + mw.language = language; + +}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js index 4abfa4ba..935d4ff6 100644 --- a/resources/mediawiki.language/mediawiki.language.js +++ b/resources/mediawiki.language/mediawiki.language.js @@ -1,25 +1,24 @@ /** - * Base language object - * * Localized Language support attempts to mirror some of the functionality of - * Language.php in MediaWiki. This object contains methods for loading and - * transforming message text. + * Language.php in MediaWiki. + * This adds methods for transforming message text. */ -( function( $, mw ) { +( function ( mw, $ ) { + +var language = { -mw.language = { /** * Process the PLURAL template substitution * * @param {object} template Template object * @format template - * { - * 'title': [title of template], - * 'parameters': [template parameters] - * } + * { + * 'title': [title of template], + * 'parameters': [template parameters] + * } * @example {{Template:title|params}} */ - 'procPLURAL': function( template ) { + procPLURAL: function ( template ) { if ( template.title && template.parameters && mw.language.convertPlural ) { // Check if we have forms to replace if ( template.parameters.length === 0 ) { @@ -27,7 +26,7 @@ mw.language = { } // Restore the count into a Number ( if it got converted earlier ) var count = mw.language.convertNumber( template.title, true ); - // Do convertPlural call + // Do convertPlural call return mw.language.convertPlural( parseInt( count, 10 ), template.parameters ); } // Could not process plural return first form or nothing @@ -36,6 +35,7 @@ mw.language = { } return ''; }, + /** * Plural form transformations, needed for some languages. * @@ -43,12 +43,21 @@ mw.language = { * @param forms array List of plural forms * @return string Correct form for quantifier in this language */ - 'convertPlural': function( count, forms ){ + convertPlural: function( count, forms ) { + var pluralFormIndex = 0; if ( !forms || forms.length === 0 ) { return ''; } - return ( parseInt( count, 10 ) == 1 ) ? forms[0] : forms[1]; + var pluralRules = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'pluralRules' ); + if ( !pluralRules ) { + // default fallback. + return ( count === 1 ) ? forms[0] : forms[1]; + } + pluralFormIndex = mw.cldr.getPluralForm( count, pluralRules ); + pluralFormIndex = Math.min( pluralFormIndex, forms.length - 1 ); + return forms[pluralFormIndex]; }, + /** * Pads an array to a specific length by copying the last one element. * @@ -56,38 +65,41 @@ mw.language = { * @param count integer Number of forms required * @return array Padded array of forms */ - 'preConvertPlural': function( forms, count ) { + preConvertPlural: function ( forms, count ) { while ( forms.length < count ) { forms.push( forms[ forms.length-1 ] ); } return forms; }, + /** * Converts a number using digitTransformTable. * * @param {num} number Value to be converted * @param {boolean} integer Convert the return value to an integer */ - 'convertNumber': function( num, integer ) { + convertNumber: function( num, integer ) { + var i, tmp, transformTable; + if ( !mw.language.digitTransformTable ) { return num; } // Set the target Transform table: - var transformTable = mw.language.digitTransformTable; + transformTable = mw.language.digitTransformTable; // Check if the "restore" to Latin number flag is set: if ( integer ) { - if ( parseInt( num, 10 ) == num ) { + if ( parseInt( num, 10 ) === num ) { return num; } - var tmp = []; - for ( var i in transformTable ) { + tmp = []; + for ( i in transformTable ) { tmp[ transformTable[ i ] ] = i; } transformTable = tmp; } - var numberString = '' + num; + var numberString = '' + num; var convertedNumber = ''; - for ( var i = 0; i < numberString.length; i++ ) { + for ( i = 0; i < numberString.length; i++ ) { if ( transformTable[ numberString[i] ] ) { convertedNumber += transformTable[numberString[i]]; } else { @@ -96,11 +108,12 @@ mw.language = { } return integer ? parseInt( convertedNumber, 10 ) : convertedNumber; }, + /** * Provides an alternative text depending on specified gender. * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}. * If second or third parameter are not specified, masculine is used. - * + * * These details may be overriden per language. * * @param gender string male, female, or anything else for neutral. @@ -108,7 +121,7 @@ mw.language = { * * @return string */ - 'gender': function( gender, forms ) { + gender: function( gender, forms ) { if ( !forms || forms.length === 0 ) { return ''; } @@ -122,7 +135,28 @@ mw.language = { return ( forms.length === 3 ) ? forms[2] : forms[0]; }, + /** + * Grammatical transformations, needed for inflected languages. + * Invoked by putting {{grammar:form|word}} in a message. + * The rules can be defined in $wgGrammarForms global or grammar + * forms can be computed dynamically by overriding this method per language + * + * @param word {String} + * @param form {String} + * @return {String} + */ + convertGrammar: function ( word, form ) { + var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' ); + if ( grammarForms && grammarForms[form] ) { + return grammarForms[form][word] || word; + } + return word; + }, + // Digit Transform Table, populated by language classes where applicable - 'digitTransformTable': null + digitTransformTable: mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' ) }; -} )( jQuery, mediaWiki ); + +$.extend( mw.language, language ); + +}( mediaWiki, jQuery ) ); -- cgit v1.2.2