diff options
Diffstat (limited to 'resources/src')
11 files changed, 23 insertions, 54 deletions
diff --git a/resources/src/mediawiki.language/languages/bs.js b/resources/src/mediawiki.language/languages/bs.js index 1ade9a773156..f261d4fb27ef 100644 --- a/resources/src/mediawiki.language/languages/bs.js +++ b/resources/src/mediawiki.language/languages/bs.js @@ -2,11 +2,7 @@ * Bosnian (bosanski) language functions */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'bs', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.bs = function ( word, form ) { switch ( form ) { case 'instrumental': // instrumental word = 's ' + word; diff --git a/resources/src/mediawiki.language/languages/dsb.js b/resources/src/mediawiki.language/languages/dsb.js index ff30168c30c1..e0035cecf512 100644 --- a/resources/src/mediawiki.language/languages/dsb.js +++ b/resources/src/mediawiki.language/languages/dsb.js @@ -1,12 +1,7 @@ /*! * Lower Sorbian (Dolnoserbski) language functions */ - -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'dsb', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.dsb = function ( word, form ) { switch ( form ) { case 'instrumental': // instrumental word = 'z ' + word; diff --git a/resources/src/mediawiki.language/languages/fi.js b/resources/src/mediawiki.language/languages/fi.js index a9d512e84e1c..77adb6da7628 100644 --- a/resources/src/mediawiki.language/languages/fi.js +++ b/resources/src/mediawiki.language/languages/fi.js @@ -3,12 +3,7 @@ * @author Santhosh Thottingal */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'fi', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } - +mw.language.convertGrammarMapping.fi = function ( word, form ) { // vowel harmony flag let aou = /[aou][^äöy]*$/i.test( word ); const origWord = word; diff --git a/resources/src/mediawiki.language/languages/ga.js b/resources/src/mediawiki.language/languages/ga.js index b83f89813f83..05c54fe656a1 100644 --- a/resources/src/mediawiki.language/languages/ga.js +++ b/resources/src/mediawiki.language/languages/ga.js @@ -2,11 +2,7 @@ * Irish (Gaeilge) language functions */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'ga', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.ga = function ( word, form ) { switch ( form ) { case 'ainmlae': switch ( word ) { diff --git a/resources/src/mediawiki.language/languages/hsb.js b/resources/src/mediawiki.language/languages/hsb.js index c7c6b03082fb..ffc1bcd8e255 100644 --- a/resources/src/mediawiki.language/languages/hsb.js +++ b/resources/src/mediawiki.language/languages/hsb.js @@ -2,11 +2,7 @@ * Upper Sorbian (Hornjoserbsce) language functions */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'hsb', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.hsb = function ( word, form ) { switch ( form ) { case 'instrumental': // instrumental word = 'z ' + word; diff --git a/resources/src/mediawiki.language/languages/hu.js b/resources/src/mediawiki.language/languages/hu.js index 74847feabce9..4ca2ed5bd8ed 100644 --- a/resources/src/mediawiki.language/languages/hu.js +++ b/resources/src/mediawiki.language/languages/hu.js @@ -3,11 +3,7 @@ * @author Santhosh Thottingal */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'hu', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.hu = function ( word, form ) { switch ( form ) { case 'rol': word += 'ról'; diff --git a/resources/src/mediawiki.language/languages/hy.js b/resources/src/mediawiki.language/languages/hy.js index 69dce79926a5..6f4bc136129e 100644 --- a/resources/src/mediawiki.language/languages/hy.js +++ b/resources/src/mediawiki.language/languages/hy.js @@ -2,12 +2,7 @@ * Armenian (Հայերեն) language functions */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'hy', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } - +mw.language.convertGrammarMapping.hy = function ( word, form ) { // 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. diff --git a/resources/src/mediawiki.language/languages/la.js b/resources/src/mediawiki.language/languages/la.js index cc7c95f0de6e..4fa08e00e3a1 100644 --- a/resources/src/mediawiki.language/languages/la.js +++ b/resources/src/mediawiki.language/languages/la.js @@ -3,11 +3,7 @@ * @author Santhosh Thottingal */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'la', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.la = function ( word, form ) { switch ( form ) { case 'genitive': // only a few declensions, and even for those mostly the singular only diff --git a/resources/src/mediawiki.language/languages/os.js b/resources/src/mediawiki.language/languages/os.js index fb3a15a4322a..9e8859cada87 100644 --- a/resources/src/mediawiki.language/languages/os.js +++ b/resources/src/mediawiki.language/languages/os.js @@ -3,8 +3,7 @@ * @author Santhosh Thottingal */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'os', 'grammarForms' ); +mw.language.convertGrammarMapping.os = function ( word, form ) { // Ending for allative case let endAllative = 'мæ', // Variable for 'j' beetwen vowels @@ -14,9 +13,6 @@ mw.language.convertGrammar = function ( word, form ) { // Variable for ending ending = ''; - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } // Checking if the $word is in plural form if ( /тæ$/i.test( word ) ) { word = word.slice( 0, -1 ); diff --git a/resources/src/mediawiki.language/languages/sl.js b/resources/src/mediawiki.language/languages/sl.js index 7dc63dc663c4..fd2afd45c29f 100644 --- a/resources/src/mediawiki.language/languages/sl.js +++ b/resources/src/mediawiki.language/languages/sl.js @@ -2,11 +2,7 @@ * Slovenian (Slovenščina) language functions */ -mw.language.convertGrammar = function ( word, form ) { - const grammarForms = mw.language.getData( 'sl', 'grammarForms' ); - if ( grammarForms && grammarForms[ form ] ) { - return grammarForms[ form ][ word ]; - } +mw.language.convertGrammarMapping.sl = function ( word, form ) { switch ( form ) { case 'mestnik': // locative word = 'o ' + word; diff --git a/resources/src/mediawiki.language/mediawiki.language.js b/resources/src/mediawiki.language/mediawiki.language.js index 618fb29fc121..13bee34e5fed 100644 --- a/resources/src/mediawiki.language/mediawiki.language.js +++ b/resources/src/mediawiki.language/mediawiki.language.js @@ -72,6 +72,11 @@ }, /** + * Map of language-specific convertGrammar() implementations keyed by language code. + */ + convertGrammarMapping: {}, + + /** * Grammatical transformations, needed for inflected languages. * Invoked by putting `{{grammar:case|word}}` in a message. * @@ -85,11 +90,18 @@ convertGrammar: function ( word, form ) { const userLanguage = mw.config.get( 'wgUserLanguage' ); + // Word-specific casing rules have the highest precedence. const forms = mw.language.getData( userLanguage, 'grammarForms' ); - if ( forms && forms[ form ] ) { + if ( forms && forms[ form ] && forms[ form ][ word ] ) { return forms[ form ][ word ]; } + // If no word-specific casing rule exists, prefer to use a language-specific + // convertGrammar() implementation if one is available. + if ( Object.prototype.hasOwnProperty.call( mw.language.convertGrammarMapping, userLanguage ) ) { + return mw.language.convertGrammarMapping[ userLanguage ]( word, form ); + } + const transformations = mw.language.getData( userLanguage, 'grammarTransformations' ); if ( !( transformations && transformations[ form ] ) ) { |