From 21ea65153ad00af8523b148e1b53c95312756e85 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:51:08 -0400 Subject: [PATCH] fix(@angular-devkit/build-angular): control legacy ID i18n extraction via TypeScript configuration This change allows the usage of the legacy i18n message identifier format during extraction to be controlled via the `angularCompilerOptions` option `enableI18nLegacyMessageIdFormat` within the application's TypeScript configuration. --- .../angular_devkit/build_angular/src/extract-i18n/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/extract-i18n/index.ts b/packages/angular_devkit/build_angular/src/extract-i18n/index.ts index 1c5445cb510d..1ff1f894d459 100644 --- a/packages/angular_devkit/build_angular/src/extract-i18n/index.ts +++ b/packages/angular_devkit/build_angular/src/extract-i18n/index.ts @@ -42,7 +42,7 @@ function getI18nOutfile(format: string | undefined) { } } -async function getSerializer(format: Format, sourceLocale: string, basePath: string, useLegacyIds = true) { +async function getSerializer(format: Format, sourceLocale: string, basePath: string, useLegacyIds: boolean) { switch (format) { case Format.Xmb: const { XmbTranslationSerializer } = @@ -125,6 +125,7 @@ export async function execute( const i18n = createI18nOptions(metadata); let usingIvy = false; + let useLegacyIds = true; const ivyMessages: LocalizeMessage[] = []; const { config, projectRoot } = await generateBrowserWebpackConfigFromContext( @@ -154,6 +155,9 @@ export async function execute( (wco) => { const isIvyApplication = wco.tsConfig.options.enableIvy !== false; + // Default value for legacy message ids is currently true + useLegacyIds = wco.tsConfig.options.enableI18nLegacyMessageIdFormat ?? true; + // Ivy extraction is the default for Ivy applications. usingIvy = (isIvyApplication && options.ivy === undefined) || !!options.ivy; @@ -244,6 +248,7 @@ export async function execute( options.format, i18n.sourceLocale, config.context || projectRoot, + useLegacyIds, ); const content = serializer.serialize(ivyMessages);