mediawiki.jqueryMsg: Support arbitrary expressions in plural forms
[lhc/web/wiklou.git] / resources / src / mediawiki.language / mediawiki.language.js
index d4f3c69..dceae11 100644 (file)
@@ -40,39 +40,18 @@ $.extend( mw.language, {
         *
         * @param {number} count Non-localized quantifier
         * @param {Array} forms List of plural forms
+        * @param {Object} [explicitPluralForms] List of explicit plural forms
         * @return {string} Correct form for quantifier in this language
         */
-       convertPlural: function ( count, forms ) {
+       convertPlural: function ( count, forms, explicitPluralForms ) {
                var pluralRules,
-                       formCount,
-                       form,
-                       index,
-                       equalsPosition,
                        pluralFormIndex = 0;
 
-               if ( !forms || forms.length === 0 ) {
-                       return '';
+               if ( explicitPluralForms && explicitPluralForms[count] ) {
+                       return explicitPluralForms[count];
                }
 
-               // Handle for explicit n= forms
-               for ( index = 0; index < forms.length; index++ ) {
-                       form = forms[index];
-                       if ( /^\d+=/.test( form ) ) {
-                               equalsPosition = form.indexOf( '=' );
-                               formCount = parseInt( form.slice( 0, equalsPosition ), 10 );
-                               if ( formCount === count ) {
-                                       return form.slice( equalsPosition + 1 );
-                               }
-                               forms[index] = undefined;
-                       }
-               }
-
-               // Remove explicit plural forms from the forms.
-               forms = $.map( forms, function ( form ) {
-                       return form;
-               } );
-
-               if ( forms.length === 0 ) {
+               if ( !forms || forms.length === 0 ) {
                        return '';
                }