diff options
Diffstat (limited to 'resources/mediawiki.language/mediawiki.language.init.js')
-rw-r--r-- | resources/mediawiki.language/mediawiki.language.init.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js new file mode 100644 index 00000000..30307a37 --- /dev/null +++ b/resources/mediawiki.language/mediawiki.language.init.js @@ -0,0 +1,61 @@ +/** + * Base language object with methods for storing and getting + * language data. + */ +( function ( mw, $ ) { + + var language = { + /** + * @var data {Object} Language related data (keyed by language, + * contains instances of mw.Map). + * @example Set data + * <code> + * // Override, extend or create the language data object of 'nl' + * mw.language.setData( 'nl', 'myKey', 'My value' ); + * + * // Set multiple values at once + * mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } ); + * </code> + * @example Get GrammarForms data for language 'nl': + * <code> + * var grammarForms = mw.language.getData( 'nl', 'grammarForms' ); + * </code> + */ + data: {}, + + /** + * Convenience method for retreiving language data by language code and data key, + * covering for the potential inexistance of a data object for this langiage. + * @param langCode {String} + * @param dataKey {String} + * @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 = language.data; + if ( langData && langData[langCode] instanceof mw.Map ) { + return langData[langCode].get( dataKey ); + } + return undefined; + }, + + /** + * Convenience method for setting language data by language code and data key. + * Creates the data mw.Map if there isn't one for the specified language already. + * + * @param langCode {String} + * @param dataKey {String|Object} Key or object of key/values. + * @param value {mixed} Value for dataKey, ignored if dataKey is an object. + */ + setData: function ( langCode, dataKey, value ) { + var langData = language.data; + if ( !( langData[langCode] instanceof mw.Map ) ) { + langData[langCode] = new mw.Map(); + } + langData[langCode].set( dataKey, value ); + } + }; + + mw.language = language; + +}( mediaWiki, jQuery ) ); |