From: Santhosh Thottingal Date: Sat, 15 Sep 2012 03:20:04 +0000 (-0700) Subject: Add support for plural rules for decimal numbers X-Git-Tag: 1.31.0-rc.0~22359 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/wiki/supprimer.php?a=commitdiff_plain;h=4050abde6b6da7c2cc479e55dfaf768036297b56;p=lhc%2Fweb%2Fwiklou.git Add support for plural rules for decimal numbers * Update CLDRPluralRuleParser from upstream * Use parseFloat instead of parseInt in mediawiki.jqueryMsg * Add qunit tests Change-Id: I0b44df6c9e299142925a557f6dc41d749d381a02 --- diff --git a/resources/mediawiki.libs/CLDRPluralRuleParser.js b/resources/mediawiki.libs/CLDRPluralRuleParser.js index bb1491d304..91bdc07d16 100644 --- a/resources/mediawiki.libs/CLDRPluralRuleParser.js +++ b/resources/mediawiki.libs/CLDRPluralRuleParser.js @@ -275,7 +275,15 @@ function pluralRuleParser(rule, number) { var condition = choice([and, or, relation]); + function isInt(n) { + return parseFloat(n) % 1 === 0; + } + + function start() { + if (!isInt(number)) { + return false; + } var result = condition(); return result; } diff --git a/resources/mediawiki/mediawiki.jqueryMsg.js b/resources/mediawiki/mediawiki.jqueryMsg.js index def122502e..86af31fffe 100644 --- a/resources/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/mediawiki/mediawiki.jqueryMsg.js @@ -639,7 +639,7 @@ * @return {String} selected pluralized form according to current language */ plural: function ( nodes ) { - var count = parseInt( this.language.convertNumber( nodes[0], true ), 10 ); + var count = parseFloat( this.language.convertNumber( nodes[0], true ) ); var forms = nodes.slice(1); return forms.length ? this.language.convertPlural( count, forms ) : ''; }, diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js index 895a73542d..e2c66685d8 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js @@ -50,9 +50,8 @@ var pluralTestcases = { [ 9999, [ "zero", "one", "two", "few", "many", "other" ], "many", "Arabic plural test - 9999 is many" ], [ 100, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 100 is other" ], [ 102, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 102 is other" ], - [ 1000, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1000 is other" ] - // FIXME plural rules for decimal numbers does not work - // [ 1.7, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1.7 is other" ], + [ 1000, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1000 is other" ], + [ 1.7, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1.7 is other" ] ] };