Remove all custom plural rules and use CLDR plural rule system
[mediawiki.git] / resources / mediawiki.language / mediawiki.language.init.js
blob30307a37de370b12813c5b867c8795a08ce68da9
1 /**
2  * Base language object with methods for storing and getting
3  * language data.
4  */
5 ( function ( mw, $ ) {
7         var language = {
8                 /**
9                  * @var data {Object} Language related data (keyed by language,
10                  * contains instances of mw.Map).
11                  * @example Set data
12                  * <code>
13                  *     // Override, extend or create the language data object of 'nl'
14                  *     mw.language.setData( 'nl', 'myKey', 'My value' );
15                  *
16                  *     // Set multiple values at once
17                  *     mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
18                  * </code>
19                  * @example Get GrammarForms data for language 'nl':
20                  * <code>
21                  *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
22                  * </code>
23                  */
24                 data: {},
26                 /**
27                  * Convenience method for retreiving language data by language code and data key,
28                  * covering for the potential inexistance of a data object for this langiage.
29                  * @param langCode {String}
30                  * @param dataKey {String}
31                  * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
32                    the specified langCode).
33                  */
34                 getData: function ( langCode, dataKey ) {
35                         var langData = language.data;
36                         if ( langData && langData[langCode] instanceof mw.Map ) {
37                                 return langData[langCode].get( dataKey );
38                         }
39                         return undefined;
40                 },
42                 /**
43                  * Convenience method for setting language data by language code and data key.
44                  * Creates the data mw.Map if there isn't one for the specified language already.
45                  *
46                  * @param langCode {String}
47                  * @param dataKey {String|Object} Key or object of key/values.
48                  * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
49                  */
50                 setData: function ( langCode, dataKey, value ) {
51                         var langData = language.data;
52                         if ( !( langData[langCode] instanceof mw.Map ) ) {
53                                 langData[langCode] = new mw.Map();
54                         }
55                         langData[langCode].set( dataKey, value );
56                 }
57         };
59         mw.language = language;
61 }( mediaWiki, jQuery ) );