Santhosh has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/384006 )
Change subject: Update formatNum implmentation to match tr35 and latest CLDR ...................................................................... Update formatNum implmentation to match tr35 and latest CLDR * Update digitGroupingPattern to match CLDR 31: New versions of CLDR has digit grouping pattern with decimal part. Update digitGroupingPattern values in Message classes with this improved pattern. Refer: http://unicode.org/reports/tr35/tr35-numbers.html * Refer the following chart for the decimal patterns. http://www.unicode.org/cldr/charts/31/by_type/numbers.number_formatting_patterns.html * Uses PHP NumberFormatter class for the commafy implementation. Fallbacks to Simple ###,###.### pattern if that class is not available. * Some tests need to update to match the TR 35 spec * Add support for minimumGroupingDigits in the spec. Since MediaWiki has customized values for this in many languages, introduced minimumGroupingDigits in MessageXX classes. Since this support is added, a large set of overridden commafy implementation in LanguageXX classes removed. That also resulted removing some LanguageXX classes. * The formatNum public method in Language.php is the preferred way to use this feature. It does seperator transformation and digit transformation wherever applicable. The commafy method in Language.php is just a fallback implementation when NumberFormatter class is not available. Also removed tests based on commafy methods and replaced it with tests based on formatNum Note: The corresponding js implmentaiton is not changed in this commit. Bug: T167088 Change-Id: Ic721b9a91e78e4ef07040339d1006b7a90a910c0 --- M autoload.php M includes/cache/localisation/LocalisationCache.php M languages/Language.php M languages/classes/LanguageBe_tarask.php D languages/classes/LanguageBg.php D languages/classes/LanguageEs.php D languages/classes/LanguageEt.php M languages/classes/LanguageHy.php M languages/classes/LanguageKaa.php M languages/classes/LanguageKk_cyrl.php M languages/classes/LanguageKm.php M languages/classes/LanguageKsh.php M languages/classes/LanguageKu.php D languages/classes/LanguageKu_ku.php M languages/classes/LanguageMy.php M languages/classes/LanguagePl.php D languages/classes/LanguageRu.php D languages/classes/LanguageUk.php M languages/messages/MessagesAr.php M languages/messages/MessagesAs.php M languages/messages/MessagesBe_tarask.php M languages/messages/MessagesBg.php M languages/messages/MessagesBn.php M languages/messages/MessagesEn.php M languages/messages/MessagesEs.php M languages/messages/MessagesEt.php M languages/messages/MessagesGu.php M languages/messages/MessagesHi.php M languages/messages/MessagesHy.php M languages/messages/MessagesKaa.php M languages/messages/MessagesKk_cyrl.php M languages/messages/MessagesKn.php M languages/messages/MessagesKsh.php M languages/messages/MessagesKu.php M languages/messages/MessagesKu_latn.php M languages/messages/MessagesMl.php M languages/messages/MessagesMr.php M languages/messages/MessagesOr.php M languages/messages/MessagesPa.php M languages/messages/MessagesPl.php M languages/messages/MessagesRu.php M languages/messages/MessagesSa.php M languages/messages/MessagesTa.php M languages/messages/MessagesTe.php M languages/messages/MessagesUk.php M tests/phpunit/languages/LanguageTest.php M tests/phpunit/languages/classes/LanguageArTest.php M tests/phpunit/languages/classes/LanguageArqTest.php M tests/phpunit/languages/classes/LanguageBe_taraskTest.php M tests/phpunit/languages/classes/LanguageMlTest.php M tests/phpunit/languages/classes/LanguageNlTest.php M tests/phpunit/languages/classes/LanguagePlTest.php M tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js 53 files changed, 169 insertions(+), 481 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/06/384006/1 diff --git a/autoload.php b/autoload.php index 0a2ecf0..a9ec935 100644 --- a/autoload.php +++ b/autoload.php @@ -700,15 +700,12 @@ 'LanguageAr' => __DIR__ . '/languages/classes/LanguageAr.php', 'LanguageAz' => __DIR__ . '/languages/classes/LanguageAz.php', 'LanguageBe_tarask' => __DIR__ . '/languages/classes/LanguageBe_tarask.php', - 'LanguageBg' => __DIR__ . '/languages/classes/LanguageBg.php', 'LanguageBs' => __DIR__ . '/languages/classes/LanguageBs.php', 'LanguageCode' => __DIR__ . '/languages/LanguageCode.php', 'LanguageConverter' => __DIR__ . '/languages/LanguageConverter.php', 'LanguageCu' => __DIR__ . '/languages/classes/LanguageCu.php', 'LanguageDsb' => __DIR__ . '/languages/classes/LanguageDsb.php', 'LanguageEn' => __DIR__ . '/languages/classes/LanguageEn.php', - 'LanguageEs' => __DIR__ . '/languages/classes/LanguageEs.php', - 'LanguageEt' => __DIR__ . '/languages/classes/LanguageEt.php', 'LanguageFi' => __DIR__ . '/languages/classes/LanguageFi.php', 'LanguageGa' => __DIR__ . '/languages/classes/LanguageGa.php', 'LanguageGan' => __DIR__ . '/languages/classes/LanguageGan.php', @@ -723,21 +720,17 @@ 'LanguageKm' => __DIR__ . '/languages/classes/LanguageKm.php', 'LanguageKsh' => __DIR__ . '/languages/classes/LanguageKsh.php', 'LanguageKu' => __DIR__ . '/languages/classes/LanguageKu.php', - 'LanguageKu_ku' => __DIR__ . '/languages/classes/LanguageKu_ku.php', 'LanguageLa' => __DIR__ . '/languages/classes/LanguageLa.php', 'LanguageMl' => __DIR__ . '/languages/classes/LanguageMl.php', 'LanguageMy' => __DIR__ . '/languages/classes/LanguageMy.php', 'LanguageOs' => __DIR__ . '/languages/classes/LanguageOs.php', - 'LanguagePl' => __DIR__ . '/languages/classes/LanguagePl.php', 'LanguageQqx' => __DIR__ . '/languages/classes/LanguageQqx.php', - 'LanguageRu' => __DIR__ . '/languages/classes/LanguageRu.php', 'LanguageShi' => __DIR__ . '/languages/classes/LanguageShi.php', 'LanguageSl' => __DIR__ . '/languages/classes/LanguageSl.php', 'LanguageSr' => __DIR__ . '/languages/classes/LanguageSr.php', 'LanguageTg' => __DIR__ . '/languages/classes/LanguageTg.php', 'LanguageTr' => __DIR__ . '/languages/classes/LanguageTr.php', 'LanguageTyv' => __DIR__ . '/languages/classes/LanguageTyv.php', - 'LanguageUk' => __DIR__ . '/languages/classes/LanguageUk.php', 'LanguageUz' => __DIR__ . '/languages/classes/LanguageUz.php', 'LanguageWa' => __DIR__ . '/languages/classes/LanguageWa.php', 'LanguageYue' => __DIR__ . '/languages/classes/LanguageYue.php', diff --git a/includes/cache/localisation/LocalisationCache.php b/includes/cache/localisation/LocalisationCache.php index a0ce95e..5e0a688 100644 --- a/includes/cache/localisation/LocalisationCache.php +++ b/includes/cache/localisation/LocalisationCache.php @@ -109,7 +109,8 @@ static public $allKeys = [ 'fallback', 'namespaceNames', 'bookstoreList', 'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable', - 'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension', + 'separatorTransformTable', 'minimumGroupingDigits', + 'fallback8bitEncoding', 'linkPrefixExtension', 'linkTrail', 'linkPrefixCharset', 'namespaceAliases', 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap', 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases', diff --git a/languages/Language.php b/languages/Language.php index 435f058..a0f83e7 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3252,12 +3252,53 @@ */ public function formatNum( $number, $nocommafy = false ) { global $wgTranslateNumerals; + + if ( $number === null || $number === '' ) { + return ''; + } + + $separatorTransformTable = $this->separatorTransformTable(); + + // minimumGroupingDigits can be used to suppress groupings below a certain value. + // This is used for languages such as Polish, where one would only write the grouping + // separator for values above 9999 - numbers with more than 4 digits. + // NumberFormatter is yet to support minimumGroupingDigits, ICU has it as experimental feature. + // But, even then, MediaWiki has different minimumGroupingDigits values than CLDR. + // So we implement minimumGroupingDigits outside NumberFormatter. + $minimumGroupingDigits = intval( $this->minimumGroupingDigits() ); + if ( $minimumGroupingDigits > 1 && strlen( (string)abs( intval( $number ) ) ) <= $minimumGroupingDigits ) { + // Even if numbers does not need commafy, do decimal seperator tranformation. + // For example 1234.56 becoms 1234,56 in pl with $minimumGroupingDigits = 4 + return strtr( $number, $separatorTransformTable ? : [] ); + } + if ( !$nocommafy ) { - $number = $this->commafy( $number ); - $s = $this->separatorTransformTable(); - if ( $s ) { - $number = strtr( $number, $s ); + if ( class_exists( NumberFormatter::class ) ) { + $digitGroupingPattern = $this->digitGroupingPattern(); + + if ( $digitGroupingPattern ) { + $fmt = new NumberFormatter( + $this->getCode(), NumberFormatter::PATTERN_DECIMAL, $digitGroupingPattern + ); + } else { + $fmt = new NumberFormatter( $this->getCode(), NumberFormatter::DECIMAL ); + } + + // NumberFormatter supports seperator transformation, but it does not know all + // languages MW supports. Example: arq. Also, languages like pl has customisation. + // So manually set it. + if ( $separatorTransformTable ) { + $fmt->setSymbol( NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, $separatorTransformTable[ '.' ] ); + $fmt->setSymbol( NumberFormatter::GROUPING_SEPARATOR_SYMBOL, $separatorTransformTable[ ',' ] ); + } + + $number = $fmt->format( $number ); + } else { + // Fallback implementation. Follows fixed thousands seperator pattern + $number = $this->commafy( $number ); + $number = strtr( $number, $separatorTransformTable ? : [] ); } + } if ( $wgTranslateNumerals ) { @@ -3280,6 +3321,10 @@ */ public function formatNumNoSeparators( $number ) { return $this->formatNum( $number, true ); + } + + public function minimumGroupingDigits() { + return self::$dataCache->getItem( $this->mCode, 'minimumGroupingDigits' ); } /** @@ -3306,58 +3351,22 @@ } /** - * Adds commas to a given number + * Adds commas to a given number. + * This is a very simple fallback implementation with grouping of 3 digits. + * NumberFormatting class is used when available for correct implamentation as per tr35 + * specification of unicode. + * * @since 1.19 * @param mixed $number * @return string */ function commafy( $number ) { - $digitGroupingPattern = $this->digitGroupingPattern(); - if ( $number === null ) { + if ( $number === null || $number === '' ) { return ''; } - if ( !$digitGroupingPattern || $digitGroupingPattern === "###,###,###" ) { - // default grouping is at thousands, use the same for ###,###,### pattern too. - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $number ) ) ); - } else { - // Ref: http://cldr.unicode.org/translation/number-patterns - $sign = ""; - if ( intval( $number ) < 0 ) { - // For negative numbers apply the algorithm like positive number and add sign. - $sign = "-"; - $number = substr( $number, 1 ); - } - $integerPart = []; - $decimalPart = []; - $numMatches = preg_match_all( "/(#+)/", $digitGroupingPattern, $matches ); - preg_match( "/\d+/", $number, $integerPart ); - preg_match( "/\.\d*/", $number, $decimalPart ); - $groupedNumber = ( count( $decimalPart ) > 0 ) ? $decimalPart[0] : ""; - if ( $groupedNumber === $number ) { - // the string does not have any number part. Eg: .12345 - return $sign . $groupedNumber; - } - $start = $end = ( $integerPart ) ? strlen( $integerPart[0] ) : 0; - while ( $start > 0 ) { - $match = $matches[0][$numMatches - 1]; - $matchLen = strlen( $match ); - $start = $end - $matchLen; - if ( $start < 0 ) { - $start = 0; - } - $groupedNumber = substr( $number, $start, $end - $start ) . $groupedNumber; - $end = $start; - if ( $numMatches > 1 ) { - // use the last pattern for the rest of the number - $numMatches--; - } - if ( $start > 0 ) { - $groupedNumber = "," . $groupedNumber; - } - } - return $sign . $groupedNumber; - } + // default grouping is at thousands, with ###,###,### pattern. + return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $number ) ) ); } /** diff --git a/languages/classes/LanguageBe_tarask.php b/languages/classes/LanguageBe_tarask.php index 6007bb4..31ce46d 100644 --- a/languages/classes/LanguageBe_tarask.php +++ b/languages/classes/LanguageBe_tarask.php @@ -54,20 +54,4 @@ return $s; } - - /** - * Four-digit number should be without group commas (spaces) - * So "1 234 567", "12 345" but "1234" - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) { - return $_; - } else { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } - } } diff --git a/languages/classes/LanguageBg.php b/languages/classes/LanguageBg.php deleted file mode 100644 index a592d02..0000000 --- a/languages/classes/LanguageBg.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * Bulgarian (Български) specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Bulgarian (Български) - * - * @ingroup Language - */ -class LanguageBg extends Language { - /** - * ISO number formatting: 123 456 789,99. - * Avoid tripple grouping by numbers with whole part up to 4 digits. - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } -} diff --git a/languages/classes/LanguageEs.php b/languages/classes/LanguageEs.php deleted file mode 100644 index 098148f..0000000 --- a/languages/classes/LanguageEs.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * Spanish (español) specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Spanish (español) - * - * @ingroup Language - */ -class LanguageEs extends Language { - - /** - * @param string $_ - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^-?\d{1,4}(\.\d+)?$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } -} diff --git a/languages/classes/LanguageEt.php b/languages/classes/LanguageEt.php deleted file mode 100644 index 759531b..0000000 --- a/languages/classes/LanguageEt.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * Estonian (eesti) specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Estonian (eesti) - * - * @ingroup Language - */ -class LanguageEt extends Language { - /** - * Avoid grouping whole numbers between -9999 to 9999 - * @param string $_ - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } -} diff --git a/languages/classes/LanguageHy.php b/languages/classes/LanguageHy.php index 05b0ebe..602a589 100644 --- a/languages/classes/LanguageHy.php +++ b/languages/classes/LanguageHy.php @@ -78,19 +78,4 @@ } return $word; } - - /** - * Armenian numeric format is "12 345,67" but "1234,56" - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } } diff --git a/languages/classes/LanguageKaa.php b/languages/classes/LanguageKaa.php index 30abe25..57f9529 100644 --- a/languages/classes/LanguageKaa.php +++ b/languages/classes/LanguageKaa.php @@ -75,19 +75,4 @@ return parent::lcfirst( $string ); } - /** - * Avoid grouping whole numbers between 0 to 9999 - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } - } diff --git a/languages/classes/LanguageKk_cyrl.php b/languages/classes/LanguageKk_cyrl.php index 39d19e7..b95dabd 100644 --- a/languages/classes/LanguageKk_cyrl.php +++ b/languages/classes/LanguageKk_cyrl.php @@ -775,18 +775,4 @@ return $lastLetter; } - /** - * Avoid grouping whole numbers between 0 to 9999 - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } } diff --git a/languages/classes/LanguageKm.php b/languages/classes/LanguageKm.php index 87d2127..ac96e80 100644 --- a/languages/classes/LanguageKm.php +++ b/languages/classes/LanguageKm.php @@ -33,7 +33,7 @@ * @param string $_ * @return string */ - function commafy( $_ ) { + function formatNum( $_ ) { /* NO-op for Khmer. Cannot use * $separatorTransformTable = [ ',' => '' ] * That would break when parsing and doing strstr '' => 'foo'; diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php index 9ef53e5..d82a4ac 100644 --- a/languages/classes/LanguageKsh.php +++ b/languages/classes/LanguageKsh.php @@ -163,22 +163,7 @@ return $word; } - /** - * Avoid grouping whole numbers between 0 to 9999 - * - * @param string $_ - * - * @return string - */ - public function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } - - /** + /** * Handle cases of (1, other, 0) or (1, other) * * @param int $count diff --git a/languages/classes/LanguageKu.php b/languages/classes/LanguageKu.php index c837409..ef77775 100644 --- a/languages/classes/LanguageKu.php +++ b/languages/classes/LanguageKu.php @@ -227,7 +227,7 @@ * * @ingroup Language */ -class LanguageKu extends LanguageKu_ku { +class LanguageKu extends Language { function __construct() { parent::__construct(); diff --git a/languages/classes/LanguageKu_ku.php b/languages/classes/LanguageKu_ku.php deleted file mode 100644 index 4e9c365..0000000 --- a/languages/classes/LanguageKu_ku.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * Kurdish specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Kurdish - * - * @ingroup Language - */ -// @codingStandardsIgnoreStart Ignore class name is not in camel caps format error -class LanguageKu_ku extends Language { - // @codingStandardsIgnoreEnd - /** - * Avoid grouping whole numbers between 0 to 9999 - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\d{1,4}$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } -} diff --git a/languages/classes/LanguageMy.php b/languages/classes/LanguageMy.php index f8b50fc..160a0ff 100644 --- a/languages/classes/LanguageMy.php +++ b/languages/classes/LanguageMy.php @@ -33,7 +33,7 @@ * @param string $_ * @return string */ - function commafy( $_ ) { + function formatNum( $_ ) { /* NO-op. Cannot use * $separatorTransformTable = [ ',' => '' ] * That would break when parsing and doing strstr '' => 'foo'; diff --git a/languages/classes/LanguagePl.php b/languages/classes/LanguagePl.php index e0bf069..2739fec 100644 --- a/languages/classes/LanguagePl.php +++ b/languages/classes/LanguagePl.php @@ -27,15 +27,5 @@ * @ingroup Language */ class LanguagePl extends Language { - /** - * @param string $_ - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } else { - return $_; - } - } + } diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php deleted file mode 100644 index 7b15721..0000000 --- a/languages/classes/LanguageRu.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * Russian (русский язык) specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Russian (русский язык) - * - * You can contact: - * Alexander Sigachov (alexander.sigachov at Googgle Mail) - * Amir E. Aharoni (amir.ahar...@mail.huji.ac.il) - * - * @ingroup Language - */ -class LanguageRu extends Language { - /** - * Four-digit number should be without group commas (spaces) - * See manual of style at https://ru.wikipedia.org/wiki/Википедия:Оформление_статей - * So "1 234 567", "12 345" but "1234" - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) { - return $_; - } else { - return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); - } - } -} diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php deleted file mode 100644 index a155d03..0000000 --- a/languages/classes/LanguageUk.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/** - * Ukrainian (українська мова) specific code. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Language - */ - -/** - * Ukrainian (українська мова) - * - * @ingroup Language - */ -class LanguageUk extends Language { - /** - * Ukrainian numeric format is "12 345,67" but "1234,56" - * - * @param string $_ - * - * @return string - */ - function commafy( $_ ) { - if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { - return strrev( (string)preg_replace( - '/(\d{3})(?=\d)(?!\d*\.)/', - '$1,', - strrev( $_ ) - ) ); - } else { - return $_; - } - } -} diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php index e2845a5..0331c7b 100644 --- a/languages/messages/MessagesAr.php +++ b/languages/messages/MessagesAr.php @@ -444,3 +444,5 @@ 'button-headline' => 'ar/button_headline.png', 'button-nowiki' => 'ar/button_nowiki.png', ]; + +$digitGroupingPattern = "#,##0.###"; diff --git a/languages/messages/MessagesAs.php b/languages/messages/MessagesAs.php index 2516fc7..a59c7ad 100644 --- a/languages/messages/MessagesAs.php +++ b/languages/messages/MessagesAs.php @@ -164,4 +164,4 @@ '9' => '৯', # ৯ ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesBe_tarask.php b/languages/messages/MessagesBe_tarask.php index a6fd58aa..5ff2b70 100644 --- a/languages/messages/MessagesBe_tarask.php +++ b/languages/messages/MessagesBe_tarask.php @@ -244,3 +244,5 @@ 'button-italic' => 'be-tarask/button_italic.png', 'button-link' => 'be-tarask/button_link.png', ]; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesBg.php b/languages/messages/MessagesBg.php index 3a21e75..3c8f4dd 100644 --- a/languages/messages/MessagesBg.php +++ b/languages/messages/MessagesBg.php @@ -218,3 +218,4 @@ $linkTrail = '/^([a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu'; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesBn.php b/languages/messages/MessagesBn.php index 4edce3d..aea3825 100644 --- a/languages/messages/MessagesBn.php +++ b/languages/messages/MessagesBn.php @@ -47,7 +47,7 @@ '9' => '৯' ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; $specialPageAliases = [ 'Activeusers' => [ 'সক্রিয়_ব্যবহারকারী' ], diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index a3173d4..b8a8f87 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -664,3 +664,5 @@ 'whatlinkshere', 'word-separator', ]; + +$digitGroupingPattern = "#,##0.###"; diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php index d7a780e..c863600 100644 --- a/languages/messages/MessagesEs.php +++ b/languages/messages/MessagesEs.php @@ -300,3 +300,4 @@ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = '/^([a-záéíóúñ]+)(.*)$/sDu'; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesEt.php b/languages/messages/MessagesEt.php index fcc12c9..e1508ef 100644 --- a/languages/messages/MessagesEt.php +++ b/languages/messages/MessagesEt.php @@ -291,3 +291,5 @@ 'et roman date' => 'j. xrm Y', 'et roman both' => 'j. xrm Y, "kell" H:i', ]; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesGu.php b/languages/messages/MessagesGu.php index aec3a76..e23a880 100644 --- a/languages/messages/MessagesGu.php +++ b/languages/messages/MessagesGu.php @@ -124,6 +124,6 @@ '9' => '૯', # ૯ ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; $linkTrail = "/^([\x{0A80}-\x{0AFF}]+)(.*)$/sDu"; diff --git a/languages/messages/MessagesHi.php b/languages/messages/MessagesHi.php index 5a70a83..26b6719 100644 --- a/languages/messages/MessagesHi.php +++ b/languages/messages/MessagesHi.php @@ -298,4 +298,4 @@ ]; $linkTrail = "/^([a-z\x{0900}-\x{0963}\x{0966}-\x{A8E0}-\x{A8FF}]+)(.*)$/sDu"; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesHy.php b/languages/messages/MessagesHy.php index 9a5a809..8117fa5 100644 --- a/languages/messages/MessagesHy.php +++ b/languages/messages/MessagesHy.php @@ -255,3 +255,5 @@ ]; $linkTrail = '/^([a-zաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև«»]+)(.*)$/sDu'; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesKaa.php b/languages/messages/MessagesKaa.php index 52e8e77..396b471 100644 --- a/languages/messages/MessagesKaa.php +++ b/languages/messages/MessagesKaa.php @@ -142,3 +142,4 @@ $linkTrail = "/^((?:[a-zıʼ’“»]|'(?!'))+)(.*)$/sDu"; $linkPrefixCharset = 'a-zıA-Zİ\\x80-\\xff'; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesKk_cyrl.php b/languages/messages/MessagesKk_cyrl.php index 2857721..7db56d3 100644 --- a/languages/messages/MessagesKk_cyrl.php +++ b/languages/messages/MessagesKk_cyrl.php @@ -345,3 +345,5 @@ 'Whatlinkshere' => [ 'Мында_сілтегендер' ], 'Withoutinterwiki' => [ 'Уики-аралықсыздар' ], ]; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesKn.php b/languages/messages/MessagesKn.php index 5fa77e9..0973b4f 100644 --- a/languages/messages/MessagesKn.php +++ b/languages/messages/MessagesKn.php @@ -61,4 +61,4 @@ '9' => '೯', # ೯ ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php index 1fef838..7479874 100644 --- a/languages/messages/MessagesKsh.php +++ b/languages/messages/MessagesKsh.php @@ -203,3 +203,5 @@ $imageFiles = [ 'button-italic' => 'ksh/button_italic.png', ]; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesKu.php b/languages/messages/MessagesKu.php index 5da5f28..d493c42 100644 --- a/languages/messages/MessagesKu.php +++ b/languages/messages/MessagesKu.php @@ -9,3 +9,4 @@ */ $fallback = 'ku-latn'; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesKu_latn.php b/languages/messages/MessagesKu_latn.php index 32844a2..0c6c7e5 100644 --- a/languages/messages/MessagesKu_latn.php +++ b/languages/messages/MessagesKu_latn.php @@ -110,3 +110,4 @@ ]; $linkTrail = '/^([a-zçêîşûẍḧÇÊÎŞÛẌḦ]+)(.*)$/sDu'; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php index f6d0d14..8b17dcf 100644 --- a/languages/messages/MessagesMl.php +++ b/languages/messages/MessagesMl.php @@ -355,4 +355,4 @@ $linkTrail = "/^([a-z\x{0D02}-\x{0D7F}]+)(.*)$/sDu"; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesMr.php b/languages/messages/MessagesMr.php index b51839d..441cdcc 100644 --- a/languages/messages/MessagesMr.php +++ b/languages/messages/MessagesMr.php @@ -325,4 +325,4 @@ $linkTrail = "/^([\xE0\xA4\x80-\xE0\xA5\xA3\xE0\xA5\xB1-\xE0\xA5\xBF\xEF\xBB\xBF\xE2\x80\x8D]+)(.*)$/sDu"; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php index d17105a..cd81378 100644 --- a/languages/messages/MessagesOr.php +++ b/languages/messages/MessagesOr.php @@ -251,4 +251,4 @@ 'url_query' => [ '0', 'ପ୍ରଶ୍ନ', 'QUERY' ], ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesPa.php b/languages/messages/MessagesPa.php index 253119b..c856cb5 100644 --- a/languages/messages/MessagesPa.php +++ b/languages/messages/MessagesPa.php @@ -181,4 +181,4 @@ $linkTrail = '/^([ਁਂਃਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹ਼ਾਿੀੁੂੇੈੋੌ੍ਖ਼ਗ਼ਜ਼ੜਫ਼ੰੱੲੳa-z]+)(.*)$/sDu'; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesPl.php b/languages/messages/MessagesPl.php index 01a9d1a..aaa5ffb 100644 --- a/languages/messages/MessagesPl.php +++ b/languages/messages/MessagesPl.php @@ -317,3 +317,5 @@ 'pagesincategory_pages' => [ '0', 'strony', 'pages' ], 'pagesincategory_files' => [ '0', 'pliki', 'files' ], ]; + +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php index b5f310d..7f3ebb4 100644 --- a/languages/messages/MessagesRu.php +++ b/languages/messages/MessagesRu.php @@ -431,3 +431,4 @@ ]; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu'; +$minimumGroupingDigits = 4; diff --git a/languages/messages/MessagesSa.php b/languages/messages/MessagesSa.php index aa5fdeb..5680260 100644 --- a/languages/messages/MessagesSa.php +++ b/languages/messages/MessagesSa.php @@ -282,4 +282,4 @@ 'protectionlevel' => [ '1', 'रक्षास्तर', 'PROTECTIONLEVEL' ], ]; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesTa.php b/languages/messages/MessagesTa.php index f089896..5db04d0 100644 --- a/languages/messages/MessagesTa.php +++ b/languages/messages/MessagesTa.php @@ -82,4 +82,4 @@ $linkTrail = "/^([\xE0\xAE\x80-\xE0\xAF\xBF]+)(.*)$/sDu"; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesTe.php b/languages/messages/MessagesTe.php index 4f385cf..4f570ff 100644 --- a/languages/messages/MessagesTe.php +++ b/languages/messages/MessagesTe.php @@ -146,4 +146,4 @@ $linkTrail = "/^([\xE0\xB0\x81-\xE0\xB1\xAF]+)(.*)$/sDu"; -$digitGroupingPattern = "##,##,###"; +$digitGroupingPattern = "#,##,##0.###"; diff --git a/languages/messages/MessagesUk.php b/languages/messages/MessagesUk.php index d851e1c..40d82c9 100644 --- a/languages/messages/MessagesUk.php +++ b/languages/messages/MessagesUk.php @@ -391,3 +391,4 @@ $linkTrail = '/^([a-zабвгґдеєжзиіїйклмнопрстуфхцчшщьєюяёъы“»]+)(.*)$/sDu'; $linkPrefixCharset = '„«'; +$minimumGroupingDigits = 4; diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index a474f20..6bcab43 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -1654,18 +1654,18 @@ } /** - * @covers Language::commafy() - * @dataProvider provideCommafyData + * @covers Language::formatNum() + * @dataProvider provideFormatNumData */ - public function testCommafy( $number, $numbersWithCommas ) { + public function testFormatNum( $number, $numbersWithCommas ) { $this->assertEquals( $numbersWithCommas, - $this->getLang()->commafy( $number ), - "commafy('$number')" + $this->getLang()->formatNum( $number ), + "formatNum('$number')" ); } - public static function provideCommafyData() { + public static function provideFormatNumData() { return [ [ -1, '-1' ], [ 10, '10' ], @@ -1674,14 +1674,15 @@ [ 10000, '10,000' ], [ 100000, '100,000' ], [ 1000000, '1,000,000' ], - [ -1.0001, '-1.0001' ], - [ 1.0001, '1.0001' ], - [ 10.0001, '10.0001' ], - [ 100.0001, '100.0001' ], - [ 1000.0001, '1,000.0001' ], - [ 10000.0001, '10,000.0001' ], - [ 100000.0001, '100,000.0001' ], - [ 1000000.0001, '1,000,000.0001' ], + [ -1.001, '-1.001' ], + [ 1.001, '1.001' ], + [ 10.0001, '10' ], + [ 100.001, '100.001' ], + [ 1000.001, '1,000.001' ], + [ 10000.001, '10,000.001' ], + [ 100000.001, '100,000.001' ], + [ 1000000.0001, '1,000,000' ], + [ -1.0001, '-1' ], [ '200000000000000000000', '200,000,000,000,000,000,000' ], [ '-200000000000000000000', '-200,000,000,000,000,000,000' ], ]; diff --git a/tests/phpunit/languages/classes/LanguageArTest.php b/tests/phpunit/languages/classes/LanguageArTest.php index 5a66759..969ce09 100644 --- a/tests/phpunit/languages/classes/LanguageArTest.php +++ b/tests/phpunit/languages/classes/LanguageArTest.php @@ -6,13 +6,19 @@ /** Tests for MediaWiki languages/LanguageAr.php */ class LanguageArTest extends LanguageClassesTestCase { + public static function provideNumber() { + return [ + [ '١٬٢٣٤٬٥٦٧', '1234567' ], + [ '١٬٢٨٩٫٤٥٦', '1289.456' ] + ]; + } + /** + * @dataProvider provideNumber * @covers Language::formatNum - * @todo split into a test and a dataprovider */ - public function testFormatNum() { - $this->assertEquals( '١٬٢٣٤٬٥٦٧', $this->getLang()->formatNum( '1234567' ) ); - $this->assertEquals( '-١٢٫٨٩', $this->getLang()->formatNum( -12.89 ) ); + public function testFormatNum( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->formatNum( $value ) ); } /** diff --git a/tests/phpunit/languages/classes/LanguageArqTest.php b/tests/phpunit/languages/classes/LanguageArqTest.php index e6692d1..7580a7c 100644 --- a/tests/phpunit/languages/classes/LanguageArqTest.php +++ b/tests/phpunit/languages/classes/LanguageArqTest.php @@ -19,8 +19,9 @@ public static function provideNumber() { return [ [ '1.234.567', '1234567' ], - [ '-12,89', -12.89 ], - ]; + [ '1.234.567,568', '1234567.568' ], + [ '-12,89', '-12.89' ] + ]; } } diff --git a/tests/phpunit/languages/classes/LanguageBe_taraskTest.php b/tests/phpunit/languages/classes/LanguageBe_taraskTest.php index 26db106..94e99b6 100644 --- a/tests/phpunit/languages/classes/LanguageBe_taraskTest.php +++ b/tests/phpunit/languages/classes/LanguageBe_taraskTest.php @@ -28,11 +28,11 @@ /** * @see T25156 & r64981 - * @covers Language::commafy + * @covers Language::formatNum */ - public function testCommafy() { - $this->assertEquals( '1,234,567', $this->getLang()->commafy( '1234567' ) ); - $this->assertEquals( '12,345', $this->getLang()->commafy( '12345' ) ); + public function testformatNum() { + $this->assertEquals( '1 234 567', $this->getLang()->formatNum( '1234567' ) ); + $this->assertEquals( '12 345', $this->getLang()->formatNum( '12345' ) ); } /** @@ -40,7 +40,7 @@ * @covers Language::commafy */ public function testDoesNotCommafyFourDigitsNumber() { - $this->assertEquals( '1234', $this->getLang()->commafy( '1234' ) ); + $this->assertEquals( '1234', $this->getLang()->formatNum( '1234' ) ); } /** diff --git a/tests/phpunit/languages/classes/LanguageMlTest.php b/tests/phpunit/languages/classes/LanguageMlTest.php index 6bac031..8c0d421 100644 --- a/tests/phpunit/languages/classes/LanguageMlTest.php +++ b/tests/phpunit/languages/classes/LanguageMlTest.php @@ -26,7 +26,7 @@ [ '1,234', '1234' ], [ '12,345.56', '12345.56' ], [ '12,34,56,79,81,23,45,678', '12345679812345678' ], - [ '.12345', '.12345' ], + [ '0.123', '.12345' ], [ '-12,00,000', '-1200000' ], [ '-98', '-98' ], [ '-98', -98 ], diff --git a/tests/phpunit/languages/classes/LanguageNlTest.php b/tests/phpunit/languages/classes/LanguageNlTest.php index 26bd691..5eadafe 100644 --- a/tests/phpunit/languages/classes/LanguageNlTest.php +++ b/tests/phpunit/languages/classes/LanguageNlTest.php @@ -8,17 +8,30 @@ /** Tests for MediaWiki languages/LanguageNl.php */ class LanguageNlTest extends LanguageClassesTestCase { + public static function providerFormatNum() { + return [ + [ '1.234.567', '1234567' ], + [ '12.345', '12345' ], + [ '1', '1' ], + [ '123', '123' ], + [ '1.234', '1234' ], + [ '12.345,56', '12345.56' ], + [ '12.345.679.812.345.678', '12345679812345678' ], + [ '0,123', '.12345' ], + [ '-1.200.000', '-1200000' ], + [ '-98', '-98' ], + [ '-98', -98 ], + [ '-12.345.678', -12345678 ], + [ '', '' ], + [ '', null ] + ]; + } + /** + * @dataProvider providerFormatNum * @covers Language::formatNum - * @todo split into a test and a dataprovider */ - public function testFormatNum() { - $this->assertEquals( '1.234.567', $this->getLang()->formatNum( '1234567' ) ); - $this->assertEquals( '12.345', $this->getLang()->formatNum( '12345' ) ); - $this->assertEquals( '1', $this->getLang()->formatNum( '1' ) ); - $this->assertEquals( '123', $this->getLang()->formatNum( '123' ) ); - $this->assertEquals( '1.234', $this->getLang()->formatNum( '1234' ) ); - $this->assertEquals( '12.345,56', $this->getLang()->formatNum( '12345.56' ) ); - $this->assertEquals( ',1234556', $this->getLang()->formatNum( '.1234556' ) ); + public function testFormatNum( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->formatNum( $value ) ); } } diff --git a/tests/phpunit/languages/classes/LanguagePlTest.php b/tests/phpunit/languages/classes/LanguagePlTest.php index d7a0074..71d9127 100644 --- a/tests/phpunit/languages/classes/LanguagePlTest.php +++ b/tests/phpunit/languages/classes/LanguagePlTest.php @@ -76,29 +76,28 @@ } /** - * @covers LanguagePl::commafy() - * @dataProvider provideCommafyData + * @covers LanguagePl::formatNum() + * @dataProvider provideFormatNum */ - public function testCommafy( $number, $numbersWithCommas ) { + public function tesFormatNum( $number, $numbersWithCommas ) { $this->assertEquals( $numbersWithCommas, - $this->getLang()->commafy( $number ), - "commafy('$number')" + $this->getLang()->formatNum( $number ) ); } - public static function provideCommafyData() { - // Note that commafy() always uses English separators (',' and '.') instead of - // Polish (' ' and ','). There is another function that converts them later. + public static function provideFormatNum() { return [ [ 1000, '1000' ], - [ 10000, '10,000' ], - [ 1000.0001, '1000.0001' ], - [ 10000.0001, '10,000.0001' ], + [ 10000, '10 000' ], + [ 1000.0001, '1000,0001' ], + [ 10000.0001, '10 000' ], + [ 1000.001, '1000,001' ], + [ 10000.0001, '10 000' ], [ -1000, '-1000' ], - [ -10000, '-10,000' ], - [ -1000.0001, '-1000.0001' ], - [ -10000.0001, '-10,000.0001' ], + [ -10000, '-10 000' ], + [ -1000.001, '-1 000,001' ], + [ -10000.001, '-10 000,001' ], ]; } } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index db51fb3..febb312 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -876,7 +876,7 @@ { lang: 'hi', number: '123456789.123456789', - result: '१२,३४,५६,७८९', + result: '१२,३४,५६,७८९.१२३', description: 'formatnum test for Hindi' }, { -- To view, visit https://gerrit.wikimedia.org/r/384006 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic721b9a91e78e4ef07040339d1006b7a90a910c0 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits