summaryrefslogtreecommitdiff
path: root/resources/mediawiki.language/mediawiki.language.js
diff options
context:
space:
mode:
Diffstat (limited to 'resources/mediawiki.language/mediawiki.language.js')
-rw-r--r--resources/mediawiki.language/mediawiki.language.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js
new file mode 100644
index 00000000..f199101b
--- /dev/null
+++ b/resources/mediawiki.language/mediawiki.language.js
@@ -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