Bug 251058 - Safari's Intl.NumberFormat does not support formatting of MYR (Malaysian) currencies
Summary: Safari's Intl.NumberFormat does not support formatting of MYR (Malaysian) cur...
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: Safari 16
Hardware: Mac (Intel) macOS 12
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-23 18:28 PST by jamespangmunwai
Modified: 2023-01-24 00:26 PST (History)
2 users (show)

See Also:


Attachments
Safari console replication of formatting MYR currencies with Intl.NumberFormat (88.31 KB, image/png)
2023-01-23 18:28 PST, jamespangmunwai
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description jamespangmunwai 2023-01-23 18:28:25 PST
Created attachment 464622 [details]
Safari console replication of formatting MYR currencies with Intl.NumberFormat

Hi team, currently Safari's Intl.NumberFormat does not seem to support MYR currencies, the `format` function outputs weird symbols.


For e.g.


```js
const formatter = new Intl.NumberFormat("MY", {
    style: 'currency',
    currency: "MYR",
    currencyDisplay: 'narrowSymbol',
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  });

formatter.format(123);

// output is ၁၂၃ RM, instead of RM123
```

Note that Chrome is formatting correctly and does not have this output.
Comment 1 Karl Dubost 2023-01-23 19:44:40 PST
James, 

I get the same result in Firefox and Safari. 

but the code for Malaysia is ms-MY

so it should be either: 

const formatter = new Intl.NumberFormat("ms-MY", {…
OR 
const formatter = new Intl.NumberFormat("ms", {…

nope?

https://www.loc.gov/standards/iso639-2/php/langcodes_name.php?iso_639_1=ms


my is the code for Burmese
https://www.loc.gov/standards/iso639-2/php/langcodes_name.php?iso_639_1=my

Bug in Chrome?
Comment 2 Yusuke Suzuki 2023-01-23 20:23:43 PST
This is V8's bug. V8 is not supporting "MY" locale, and falling back to en-US.

```
const formatter = new Intl.NumberFormat("MY", {
    style: 'currency',
    currency: "MYR",
    currencyDisplay: 'narrowSymbol',
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  });

print(JSON.stringify(formatter.resolvedOptions()));
print(formatter.format(123));
```

JSC
$ VM=~/dev/OpenSource/WebKitBuild/Debug; DYLD_FRAMEWORK_PATH=$VM $VM/jsc tmp/test.js
{"locale":"my","numberingSystem":"mymr","style":"currency","currency":"MYR","currencyDisplay":"narrowSymbol","currencySign":"standard","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":0,"useGrouping":"auto","notation":"standard","signDisplay":"auto","roundingMode":"halfExpand","roundingIncrement":1,"trailingZeroDisplay":"auto","roundingPriority":"auto"}
၁၂၃ RM

V8
$ v8 tmp/test.js
{"locale":"en-US","numberingSystem":"latn","style":"currency","currency":"MYR","currencyDisplay":"narrowSymbol","currencySign":"standard","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":0,"useGrouping":"auto","notation":"standard","signDisplay":"auto","roundingMode":"halfExpand","roundingIncrement":1,"trailingZeroDisplay":"auto","roundingPriority":"auto"}
RM 123

SpiderMonkey
$ sm tmp/test.js
{"locale":"my","numberingSystem":"mymr","style":"currency","currency":"MYR","currencyDisplay":"narrowSymbol","currencySign":"standard","minimumIntegerDigits":1,"minimumFractionDigits":0,"maximumFractionDigits":0,"useGrouping":"auto","notation":"standard","signDisplay":"auto","roundingMode":"halfExpand","roundingIncrement":1,"trailingZeroDisplay":"auto","roundingPriority":"auto"}
၁၂၃ RM
Comment 3 jamespangmunwai 2023-01-24 00:26:38 PST
thanks @karl and @yusuke for the support! In conclusion, our side has made a mistake to use MY instead of ms-MY for malaysia, and seems like chrome v8 does not support MY and falls back to en-US