Revert to arbitrarily old point before initial remote branch creation to help clean up
[lhc/web/wiklou.git] / resources / mediawiki.language / mediawiki.language.js
index 87a6a8f..67b605c 100644 (file)
@@ -1,12 +1,58 @@
 /**
+ * Base language object
+ *
  * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki.
- * This adds methods for transforming message text.
+ * Language.php in MediaWiki. This object contains methods for loading and
+ * transforming message text.
  */
 ( 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' );
+        * </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[langCode] instanceof mw.Map ) {
+                       return langData[langCode].get( dataKey );
+               }
+               return undefined;
+       },
+
+       /**
+        * Convenience method for setting language data by language code and data key.
+        * Creates a data object if there isn't one for the specified language already.
+        * @param langCode {String}
+        * @param dataKey {String}
+        * @param value {mixed}
+        */
+       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 );
+       },
        /**
         * Process the PLURAL template substitution
         *
@@ -132,7 +178,7 @@ var language = {
         * @return {String}
         */
        convertGrammar: function ( word, form ) {
-               var grammarForms = mw.language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
+               var grammarForms = language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
                if ( grammarForms && grammarForms[form] ) {
                        return grammarForms[form][word] || word;
                }
@@ -143,6 +189,6 @@ var language = {
        'digitTransformTable': null
 };
 
-$.extend( mw.language, language );
+mw.language = language;
 
 } )( jQuery, mediaWiki );