From 8fb3b237553bda38cb66b0b75b683f4a69d4a2a5 Mon Sep 17 00:00:00 2001 From: demeteren Date: Mon, 3 Feb 2020 10:44:35 +0300 Subject: [PATCH] fix(localize): if locale is set to tr, currency TRY should display TL --- packages/localize/src/number/forceTryCurrencyCode.js | 10 ++++++++++ packages/localize/src/number/normalizeIntl.js | 4 ++++ packages/localize/test/number/formatNumber.test.js | 12 ++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 packages/localize/src/number/forceTryCurrencyCode.js diff --git a/packages/localize/src/number/forceTryCurrencyCode.js b/packages/localize/src/number/forceTryCurrencyCode.js new file mode 100644 index 000000000..a9aba4465 --- /dev/null +++ b/packages/localize/src/number/forceTryCurrencyCode.js @@ -0,0 +1,10 @@ +export function forceTryCurrencyCode(formattedParts, options) { + const result = formattedParts; + // Chage the currencycode from TRY to TL, for Turkey + if (options.currency === 'TRY' && options.currencyDisplay === 'code') { + if (result[0].value === 'TRY') { + result[0].value = 'TL'; + } + } + return result; +} diff --git a/packages/localize/src/number/normalizeIntl.js b/packages/localize/src/number/normalizeIntl.js index 7a84bf863..3326af6c1 100644 --- a/packages/localize/src/number/normalizeIntl.js +++ b/packages/localize/src/number/normalizeIntl.js @@ -5,6 +5,7 @@ import { forceNormalSpaces } from './forceNormalSpaces.js'; import { forceSpaceBetweenCurrencyCodeAndNumber } from './forceSpaceBetweenCurrencyCodeAndNumber.js'; import { forceYenSymbol } from './forceYenSymbol.js'; import { forceSpaceInsteadOfZeroForGroup } from './forceSpaceInsteadOfZeroForGroup.js'; +import { forceTryCurrencyCode } from './forceTryCurrencyCode.js'; /** * Function with all fixes on localize @@ -34,6 +35,9 @@ export function normalizeIntl(formattedParts, options, _locale) { if (_locale === 'fr-FR' || _locale === 'fr-BE') { normalize = forceYenSymbol(normalize, options); } + if (_locale === 'tr-TR') { + normalize = forceTryCurrencyCode(normalize, options); + } } return normalize; } diff --git a/packages/localize/test/number/formatNumber.test.js b/packages/localize/test/number/formatNumber.test.js index ca6dfe752..68263ae71 100644 --- a/packages/localize/test/number/formatNumber.test.js +++ b/packages/localize/test/number/formatNumber.test.js @@ -308,5 +308,17 @@ describe('formatNumber', () => { expect(formatNumber(123456.789, currencySymbol('CZK'))).to.equal('123 456,79 Kč'); }); }); + + describe('tr-TR', () => { + localize.locale = 'tr-TR'; + 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, currencyCode('TRY'))).to.equal('TL 123.456,79'); + expect(formatNumber(123456.789, currencySymbol('EUR'))).to.equal('€123.456,79'); + expect(formatNumber(123456.789, currencySymbol('USD'))).to.equal('$123.456,79'); + expect(formatNumber(123456.789, currencySymbol('JPY'))).to.equal('¥123.457'); + expect(formatNumber(123456.789, currencySymbol('TRY'))).to.equal('₺123.456,79'); + }); }); });