aboutsummaryrefslogtreecommitdiffstats
path: root/resources/src
diff options
context:
space:
mode:
Diffstat (limited to 'resources/src')
-rw-r--r--resources/src/mediawiki.language/languages/bs.js6
-rw-r--r--resources/src/mediawiki.language/languages/dsb.js7
-rw-r--r--resources/src/mediawiki.language/languages/fi.js7
-rw-r--r--resources/src/mediawiki.language/languages/ga.js6
-rw-r--r--resources/src/mediawiki.language/languages/hsb.js6
-rw-r--r--resources/src/mediawiki.language/languages/hu.js6
-rw-r--r--resources/src/mediawiki.language/languages/hy.js7
-rw-r--r--resources/src/mediawiki.language/languages/la.js6
-rw-r--r--resources/src/mediawiki.language/languages/os.js6
-rw-r--r--resources/src/mediawiki.language/languages/sl.js6
-rw-r--r--resources/src/mediawiki.language/mediawiki.language.js14
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 ] ) ) {