From 9d88c96d898c5c46575a910a7230d239f4fe7a77 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 9 Jun 2022 13:57:54 +0000 Subject: [PATCH] fix(@angular-devkit/build-angular): replace fallback locale for `en-US` Pre version 14, the locale for `en-US` was `en-US-POSIX`. now in version 14, this has changed to `en-US`. List of all available locales https://github.com/unicode-org/cldr-json/blob/7033ea9b03aad6ef9cc64057d9cb88fec3fecc53/cldr-json/cldr-core/availableLocales.json#L64 Closes #23334 (cherry picked from commit 1f66edebcc968ed01acd06506226f5cd60c71afe) --- .../build_angular/src/utils/i18n-options.ts | 12 ++++-------- .../legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts | 10 +++++++--- .../e2e/tests/i18n/ivy-localize-locale-data.ts | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/utils/i18n-options.ts b/packages/angular_devkit/build_angular/src/utils/i18n-options.ts index 461275d767cb..92f69bfd3c54 100644 --- a/packages/angular_devkit/build_angular/src/utils/i18n-options.ts +++ b/packages/angular_devkit/build_angular/src/utils/i18n-options.ts @@ -200,14 +200,14 @@ export async function configureI18nBuild string try { return resolver(scrubbedLocale); } catch { - if (scrubbedLocale === 'en-US') { - // fallback to known existing en-US locale data as of 9.0 - return findLocaleDataPath('en-US-POSIX', resolver); - } - - return null; + // fallback to known existing en-US locale data as of 14.0 + return scrubbedLocale === 'en-US' ? findLocaleDataPath('en', resolver) : null; } } diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts index 00f276fbbe2b..70d49f5994cf 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts @@ -1,4 +1,4 @@ -import { expectFileNotToExist, expectFileToMatch, readFile, writeFile } from '../../utils/fs'; +import { expectFileNotToExist, expectFileToMatch, readFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { expectToFail } from '../../utils/utils'; import { externalServer, langTranslations, setupI18nConfig } from './setup'; @@ -7,9 +7,13 @@ export default async function () { // Setup i18n tests and config. await setupI18nConfig(); - await writeFile('.browserslistrc', 'Chrome 65'); + const { stderr } = await ng('build', '--source-map'); + if (/Locale data for .+ cannot be found/.test(stderr)) { + throw new Error( + `A warning for a locale not found was shown. This should not happen.\n\nSTDERR:\n${stderr}\n`, + ); + } - await ng('build', '--source-map'); for (const { lang, outputPath, translation } of langTranslations) { await expectFileToMatch(`${outputPath}/main.js`, translation.helloPartial); await expectToFail(() => expectFileToMatch(`${outputPath}/main.js`, '$localize`')); diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts index 2b03801f0813..7c2b4ee2055c 100644 --- a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts +++ b/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts @@ -25,7 +25,7 @@ export default async function () { }); const { stderr: err1 } = await ng('build'); - if (!err1.includes(`Locale data for 'fr-Abcd' cannot be found. Using locale data for 'fr'.`)) { + if (!err1.includes(`Locale data for 'fr-Abcd' cannot be found. Using locale data for 'fr'.`)) { throw new Error('locale data fallback warning not shown'); }