diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /resources/mediawiki.language/mediawiki.language.js | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'resources/mediawiki.language/mediawiki.language.js')
-rw-r--r-- | resources/mediawiki.language/mediawiki.language.js | 102 |
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 |