1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
( function ( mw ) {
/**
* Base language object with methods related to language support, attempting to mirror some of the
* functionality of the Language class in MediaWiki:
*
* - storing and retrieving language data
* - transforming message syntax (`{{PLURAL:}}`, `{{GRAMMAR:}}`, `{{GENDER:}}`)
* - formatting numbers
*
* @class
* @singleton
*/
mw.language = {
/**
* Language-related data (keyed by language, contains instances of mw.Map).
* Loaded dynamically (see ResourceLoaderLanguageDataModule class in PHP, registered
* as mediawiki.language.data on the client).
*
* To set data:
*
* // Override, extend or create the language data object of 'nl'
* mw.language.setData( 'nl', 'myKey', 'My value' );
*
* // Set multiple key/values pairs at once
* mw.language.setData( 'nl', { foo: 'X', bar: 'Y' } );
*
* To get GrammarForms data for language 'nl':
*
* var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
*
* Possible data keys:
*
* - `digitTransformTable`
* - `separatorTransformTable`
* - `grammarForms`
* - `pluralRules`
* - `digitGroupingPattern`
* - `fallbackLanguages`
*
* @property
*/
data: {},
/**
* Convenience method for retrieving language data.
*
* Structured by language code and data key, covering for the potential inexistence of a
* data object for this language.
*
* @param {string} langCode
* @param {string} dataKey
* @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 = mw.language.data;
if ( langData && langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
return undefined;
},
/**
* Convenience method for setting language data.
*
* Creates the data mw.Map if there isn't one for the specified language already.
*
* @param {string} langCode
* @param {string|Object} dataKey Key or object of key/values
* @param {Mixed} [value] Value for dataKey, omit if dataKey is an object
*/
setData: function ( langCode, dataKey, value ) {
var langData = mw.language.data;
if ( !( langData[langCode] instanceof mw.Map ) ) {
langData[langCode] = new mw.Map();
}
langData[langCode].set( dataKey, value );
}
};
}( mediaWiki ) );
|