]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - resources/mediawiki.language/mediawiki.language.js
MediaWiki 1.17.0
[autoinstallsdev/mediawiki.git] / resources / mediawiki.language / mediawiki.language.js
diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js
new file mode 100644 (file)
index 0000000..f199101
--- /dev/null
@@ -0,0 +1,102 @@
+/**
+ * Base language object
+ *
+ * Localized Language support attempts to mirror some of the functionality of
+ * Language.php in MediaWiki. This object contains methods for loading and
+ * transforming message text.
+ */
+( function( $, mw ) {
+
+mw.language = {
+       /**
+        * Process the PLURAL template substitution
+        *
+        * @param {object} template Template object
+        * @format template
+        *      {
+        *              'title': [title of template],
+        *              'parameters': [template parameters]
+        *      }
+        * @example {{Template:title|params}}
+        */
+       'procPLURAL': function( template ) {
+               if ( template.title && template.parameters && mw.language.convertPlural ) {
+                       // Check if we have forms to replace
+                       if ( template.parameters.length == 0 ) {
+                               return '';
+                       }
+                       // Restore the count into a Number ( if it got converted earlier )
+                       var count = mw.language.convertNumber( template.title, true );
+                       // Do convertPlural call 
+                       return mw.language.convertPlural( parseInt( count ), template.parameters );
+               }
+               // Could not process plural return first form or nothing
+               if ( template.parameters[0] ) {
+                       return template.parameters[0];
+               }
+               return '';
+       },
+       /**
+        * Plural form transformations, needed for some languages.
+        *
+        * @param count integer Non-localized quantifier
+        * @param forms array List of plural forms
+        * @return string Correct form for quantifier in this language
+        */
+       'convertPlural': function( count, forms ){
+               if ( !forms || forms.length == 0 ) {
+                       return '';
+               }
+               return ( parseInt( count ) == 1 ) ? forms[0] : forms[1];
+       },
+       /**
+        * Pads an array to a specific length by copying the last one element.
+        *
+        * @param forms array Number of forms given to convertPlural
+        * @param count integer Number of forms required
+        * @return array Padded array of forms
+        */
+       'preConvertPlural': function( forms, count ) {
+               while ( forms.length < count ) {
+                       forms.push( forms[ forms.length-1 ] );
+               }
+               return forms;
+       },
+       /**
+        * Converts a number using digitTransformTable.
+        *
+        * @param {number} number Value to be converted
+        * @param {boolean} integer Convert the return value to an integer
+        */
+       'convertNumber': function( number, integer ) {
+               if ( !mw.language.digitTransformTable ) {
+                       return number;
+               }
+               // Set the target Transform table:
+               var transformTable = mw.language.digitTransformTable;
+               // Check if the "restore" to Latin number flag is set:
+               if ( integer ) {
+                       if ( parseInt( number ) == number ) {
+                               return number;
+                       }
+                       var tmp = [];
+                       for ( var i in transformTable ) {
+                               tmp[ transformTable[ i ] ] = i;
+                       }
+                       transformTable = tmp;
+               }
+               var numberString =  '' + number;
+               var convertedNumber = '';
+               for ( var i = 0; i < numberString.length; i++ ) {
+                       if ( transformTable[ numberString[i] ] ) {
+                               convertedNumber += transformTable[numberString[i]];
+                       } else {
+                               convertedNumber += numberString[i];
+                       }
+               }
+               return integer ? parseInt( convertedNumber ) : convertedNumber;
+       },
+       // Digit Transform Table, populated by language classes where applicable
+       'digitTransformTable': null
+};
+} )( jQuery, mediaWiki );
\ No newline at end of file