HomePhabricator

Update formatNum implementation to match tr35 and latest CLDR

Authored by santhosh on Jun 2 2017, 8:42 AM.

Description

Update formatNum implementation 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
  • Uses PHP NumberFormatter class for the commafy implementation, which is available in PHP 7.
  • Some tests need to update to match the TR 35 spec
  • The formatNum public method in Language.php is the preferred way to use this feature. It does separator transformation and digit transformation wherever applicable.
  • Renamed the second param name for formatNum from noCommafy to noSeparators
  • commafy method is deprecated and formatNum is preferred. Practically, we are not just adding comma, but seperators according to the language. Replaced some tests based on commafy methods with tests based on formatNum.

Note: The corresponding js implementation is not changed in this commit.
It would probably be a good idea to use globalize.js, which is also based
on the CLDR patterns.

Note: This patch preserves the existing off-by-one error in
$minimumGroupingDigits; T262500 will eventually fix this.

Bug: T167088
Co-Authored-By: C. Scott Ananian <cscott@cscott.net>
Change-Id: Ic721b9a91e78e4ef07040339d1006b7a90a910c0