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