diff --git a/packages/localize/src/number/forceENAUSymbols.js b/packages/localize/src/number/forceENAUSymbols.js new file mode 100644 index 000000000..14a583cef --- /dev/null +++ b/packages/localize/src/number/forceENAUSymbols.js @@ -0,0 +1,21 @@ +export function forceENAUSymbols(formattedParts, options) { + const result = formattedParts; + const numberOfParts = result.length; + // Change the symbols for locale 'en-AU', due to bug in Chrome + if (numberOfParts > 1 && options && options.currencyDisplay === 'symbol') { + switch (options.currency) { + case 'EUR': + result[0].value = '€'; + break; + case 'USD': + result[0].value = '$'; + break; + case 'JPY': + result[0].value = '¥'; + break; + /* no default */ + } + result[1].value = ''; + } + return result; +} diff --git a/packages/localize/src/number/normalizeIntl.js b/packages/localize/src/number/normalizeIntl.js index 3326af6c1..3ecd902fd 100644 --- a/packages/localize/src/number/normalizeIntl.js +++ b/packages/localize/src/number/normalizeIntl.js @@ -6,6 +6,7 @@ import { forceSpaceBetweenCurrencyCodeAndNumber } from './forceSpaceBetweenCurre import { forceYenSymbol } from './forceYenSymbol.js'; import { forceSpaceInsteadOfZeroForGroup } from './forceSpaceInsteadOfZeroForGroup.js'; import { forceTryCurrencyCode } from './forceTryCurrencyCode.js'; +import { forceENAUSymbols } from './forceENAUSymbols.js'; /** * Function with all fixes on localize @@ -38,6 +39,9 @@ export function normalizeIntl(formattedParts, options, _locale) { if (_locale === 'tr-TR') { normalize = forceTryCurrencyCode(normalize, options); } + if (_locale === 'en-AU') { + normalize = forceENAUSymbols(normalize, options); + } } return normalize; } diff --git a/packages/localize/test/number/formatNumber.test.js b/packages/localize/test/number/formatNumber.test.js index 68263ae71..4ce7eb220 100644 --- a/packages/localize/test/number/formatNumber.test.js +++ b/packages/localize/test/number/formatNumber.test.js @@ -210,9 +210,9 @@ describe('formatNumber', () => { expect(formatNumber(123456.789, currencyCode('EUR'))).to.equal('EUR 123,456.79'); expect(formatNumber(123456.789, currencyCode('USD'))).to.equal('USD 123,456.79'); expect(formatNumber(123456.789, currencyCode('JPY'))).to.equal('JPY 123,457'); - // expect(formatNumber(123456.789, currencySymbol('EUR'))).to.equal('€123,456.79'); // TODO: fix - // expect(formatNumber(123456.789, currencySymbol('USD'))).to.equal('$123,456.79'); // TODO: fix - // expect(formatNumber(123456.789, currencySymbol('JPY'))).to.equal('¥123,457'); // TODO: fix + expect(formatNumber(123456.789, currencySymbol('EUR'))).to.equal('€123,456.79'); // TODO: fix + expect(formatNumber(123456.789, currencySymbol('USD'))).to.equal('$123,456.79'); // TODO: fix + expect(formatNumber(123456.789, currencySymbol('JPY'))).to.equal('¥123,457'); // TODO: fix }); });