From 0be4038a503626e2e9f44d68fe5599cc6028dd8e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 20 Aug 2024 09:58:22 -0400 Subject: [PATCH] fix(@angular/build): support reading on-disk files during i18n extraction If an application has JavaScript files that are sourced directly from disk, the extraction would previously fail due to the i18n extractor only able to access the in-memory generated JavaScript files. The extractor can now access both memory and disk-based JavaScript files. (cherry picked from commit 6b544f70e706b9e13564d4ddbb0f0cb352942b2c) --- .../build/src/builders/extract-i18n/application-extraction.ts | 3 +++ .../src/builders/extract-i18n/application-extraction.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/angular/build/src/builders/extract-i18n/application-extraction.ts b/packages/angular/build/src/builders/extract-i18n/application-extraction.ts index 0a1bf83e91e2..7640cba88366 100644 --- a/packages/angular/build/src/builders/extract-i18n/application-extraction.ts +++ b/packages/angular/build/src/builders/extract-i18n/application-extraction.ts @@ -9,6 +9,7 @@ import type { ɵParsedMessage as LocalizeMessage } from '@angular/localize'; import type { MessageExtractor } from '@angular/localize/tools'; import type { BuilderContext } from '@angular-devkit/architect'; +import { readFileSync } from 'node:fs'; import nodePath from 'node:path'; import { buildApplicationInternal } from '../application'; import type { @@ -101,6 +102,8 @@ function setupLocalizeExtractor( let content; if (file?.origin === 'memory') { content = textDecoder.decode(file.contents); + } else if (file?.origin === 'disk') { + content = readFileSync(file.inputPath, 'utf-8'); } if (content === undefined) { throw new Error('Unknown file requested: ' + requestedPath); diff --git a/packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts b/packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts index 4e89fad52fd1..f62208738507 100644 --- a/packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts +++ b/packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts @@ -11,6 +11,7 @@ import { ResultFile, ResultKind, buildApplicationInternal } from '@angular/build import type { ɵParsedMessage as LocalizeMessage } from '@angular/localize'; import type { MessageExtractor } from '@angular/localize/tools'; import type { BuilderContext } from '@angular-devkit/architect'; +import { readFileSync } from 'node:fs'; import nodePath from 'node:path'; import { BrowserBuilderOptions, convertBrowserOptions } from '../browser-esbuild'; import type { NormalizedExtractI18nOptions } from './options'; @@ -106,6 +107,8 @@ function setupLocalizeExtractor( let content; if (file?.origin === 'memory') { content = textDecoder.decode(file.contents); + } else if (file?.origin === 'disk') { + content = readFileSync(file.inputPath, 'utf-8'); } if (content === undefined) { throw new Error('Unknown file requested: ' + requestedPath);