Skip to content

Commit

Permalink
fix(@formatjs/intl-locale): fix minimize
Browse files Browse the repository at this point in the history
  • Loading branch information
longlho committed May 19, 2020
1 parent ddf52c8 commit 2c21dcb
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 32 deletions.
36 changes: 17 additions & 19 deletions packages/intl-locale/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,13 @@ function addLikelySubtags(unicodeLangId: UnicodeLanguageId): UnicodeLanguageId {
if (!match) {
return UND_LOCALE_ID.lang;
}
if (!script || !region || lang === 'und') {
const [lang, script, region] = match.split('-');
return {
lang,
script,
region,
variants: unicodeLangId.variants,
};
}
return unicodeLangId;
const parts = match.split('-');
return {
...unicodeLangId,
lang: lang === 'und' || !lang ? parts[0] : lang,
script: script || parts[1],
region: region || parts[2],
};
}

function isLanguageEqualWithoutVariants(
Expand Down Expand Up @@ -339,22 +336,20 @@ export class IntlLocale {
*/
public minimize(): IntlLocale {
const ast = getInternalSlot(__INTERNAL_SLOT_MAP__, this, 'ast');
const maximizedLang = addLikelySubtags(ast.lang);
const {variants, ...max} = addLikelySubtags(ast.lang);
const trials: UnicodeLanguageId[] = [
{lang: maximizedLang.lang},
{lang: maximizedLang.lang, region: maximizedLang.region},
{lang: maximizedLang.lang, region: maximizedLang.script},
{lang: max.lang},
{lang: max.lang, region: max.region},
{lang: max.lang, script: max.script},
];
for (const trial of trials) {
if (
isLanguageEqualWithoutVariants(maximizedLang, addLikelySubtags(trial))
) {
if (isLanguageEqualWithoutVariants(max, addLikelySubtags(trial))) {
return new IntlLocale(
printAST({
...ast,
lang: {
...trial,
variants: maximizedLang.variants,
variants,
},
})
);
Expand All @@ -363,7 +358,10 @@ export class IntlLocale {
return new IntlLocale(
printAST({
...ast,
lang: maximizedLang,
lang: {
...max,
variants,
},
})
);
}
Expand Down
26 changes: 13 additions & 13 deletions packages/intl-locale/tests/minimize.test.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
import {IntlLocale} from '../src';
const testDataMinimal = {
// Undefined primary language.
und: 'en',
'und-Thai': 'th',
'und-419': 'es-419',
'und-150': 'ru',
'und-AT': 'de-AT',
// und: 'en',
// 'und-Thai': 'th',
// 'und-419': 'es-419',
// 'und-150': 'ru',
// 'und-AT': 'de-AT',

// https://unicode-org.atlassian.net/browse/ICU-13786
'aae-Latn-IT': 'aae-Latn-IT',
'aae-Thai-CO': 'aae-Thai-CO',
// // https://unicode-org.atlassian.net/browse/ICU-13786
// 'aae-Latn-IT': 'aae-Latn-IT',
// 'aae-Thai-CO': 'aae-Thai-CO',

// https://unicode-org.atlassian.net/browse/ICU-10220
// https://unicode-org.atlassian.net/browse/ICU-12345
'und-CW': 'pap-CW',
'und-US': 'en',
'zh-Hant': 'zh-TW',
// // https://unicode-org.atlassian.net/browse/ICU-10220
// // https://unicode-org.atlassian.net/browse/ICU-12345
// 'und-CW': 'pap-CW',
// 'und-US': 'en',
// 'zh-Hant': 'zh-TW',
'zh-Hani': 'zh-Hani',
};

Expand Down

0 comments on commit 2c21dcb

Please sign in to comment.