From c151f01b0b9f272b49184c5f0921ce7fa0f73e13 Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Wed, 7 Aug 2019 12:13:28 +0200 Subject: [PATCH] fix(localize): for bg-BG locale, correct Intl output for group separator --- .../src/number/forceSpaceInsteadOfZeroForGroup.js | 14 ++++++++++++++ packages/localize/src/number/normalizeIntl.js | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 packages/localize/src/number/forceSpaceInsteadOfZeroForGroup.js diff --git a/packages/localize/src/number/forceSpaceInsteadOfZeroForGroup.js b/packages/localize/src/number/forceSpaceInsteadOfZeroForGroup.js new file mode 100644 index 000000000..e968d8958 --- /dev/null +++ b/packages/localize/src/number/forceSpaceInsteadOfZeroForGroup.js @@ -0,0 +1,14 @@ +/** + * @desc Intl uses 0 as group separator for bg-BG locale. + * This should be a ' ' + * @param {{type,value}[]} formattedParts + * @returns {{type,value}[]} corrected formatted parts + */ +export function forceSpaceInsteadOfZeroForGroup(formattedParts) { + return formattedParts.map(p => { + if (p.type === 'group' && p.value === '0') { + p.value = ' '; // eslint-disable-line no-param-reassign + } + return p; + }); +} diff --git a/packages/localize/src/number/normalizeIntl.js b/packages/localize/src/number/normalizeIntl.js index 1c1a7f869..92e8b4643 100644 --- a/packages/localize/src/number/normalizeIntl.js +++ b/packages/localize/src/number/normalizeIntl.js @@ -4,6 +4,7 @@ import { forceCurrencyToEnd } from './forceCurrencyToEnd.js'; import { forceNormalSpaces } from './forceNormalSpaces.js'; import { forceSpaceBetweenCurrencyCodeAndNumber } from './forceSpaceBetweenCurrencyCodeAndNumber.js'; import { forceYenSymbol } from './forceYenSymbol.js'; +import { forceSpaceInsteadOfZeroForGroup } from './forceSpaceInsteadOfZeroForGroup.js'; /** * Function with all fixes on localize @@ -23,6 +24,7 @@ export function normalizeIntl(formattedParts, options, _locale) { // Add group separator for Bulgarian locale if (_locale === 'bg-BG') { normalize = forceAddGroupSeparators(normalize, getGroupSeparator()); + normalize = forceSpaceInsteadOfZeroForGroup(normalize); } // Force space between currency code and number if (_locale === 'en-GB' || _locale === 'en-US' || _locale === 'en-AU') {