Skip to content

Commit 1525e7a

Browse files
crisbetoalan-agius4
authored andcommitted
feat(@angular-devkit/build-angular): expose legacy-migrate message format
We recently added a new message format called `legacy-extract` that is used to migrate between legacy and canonical message IDs (see angular/angular#41026). These changes expose the new format in `extract-i18n`.
1 parent d37f731 commit 1525e7a

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

packages/angular_devkit/build_angular/src/extract-i18n/index.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import { BuildResult, runWebpack } from '@angular-devkit/build-webpack';
1414
import { JsonObject } from '@angular-devkit/core';
1515
import type { ɵParsedMessage as LocalizeMessage } from '@angular/localize';
16+
import type { Diagnostics } from '@angular/localize/src/tools/src/diagnostics';
1617
import * as fs from 'fs';
1718
import * as path from 'path';
1819
import * as webpack from 'webpack';
@@ -38,6 +39,7 @@ function getI18nOutfile(format: string | undefined) {
3839
case 'xliff2':
3940
return 'messages.xlf';
4041
case 'json':
42+
case 'legacy-migrate':
4143
return 'messages.json';
4244
case 'arb':
4345
return 'messages.arb';
@@ -46,7 +48,7 @@ function getI18nOutfile(format: string | undefined) {
4648
}
4749
}
4850

49-
async function getSerializer(format: Format, sourceLocale: string, basePath: string, useLegacyIds: boolean) {
51+
async function getSerializer(format: Format, sourceLocale: string, basePath: string, useLegacyIds: boolean, diagnostics: Diagnostics) {
5052
switch (format) {
5153
case Format.Xmb:
5254
const { XmbTranslationSerializer } =
@@ -73,8 +75,12 @@ async function getSerializer(format: Format, sourceLocale: string, basePath: str
7375
const { SimpleJsonTranslationSerializer } =
7476
await import('@angular/localize/src/tools/src/extract/translation_files/json_translation_serializer');
7577

76-
// tslint:disable-next-line: no-any
7778
return new SimpleJsonTranslationSerializer(sourceLocale);
79+
case Format.LegacyMigrate:
80+
const { LegacyMessageIdMigrationSerializer } =
81+
await import('@angular/localize/src/tools/src/extract/translation_files/legacy_message_id_migration_serializer');
82+
83+
return new LegacyMessageIdMigrationSerializer(diagnostics);
7884
case Format.Arb:
7985
const { ArbTranslationSerializer } =
8086
await import('@angular/localize/src/tools/src/extract/translation_files/arb_translation_serializer');
@@ -114,6 +120,9 @@ function normalizeFormatOption(options: ExtractI18nBuilderOptions) {
114120
case Format.Arb:
115121
format = Format.Arb;
116122
break;
123+
case Format.LegacyMigrate:
124+
format = Format.LegacyMigrate;
125+
break;
117126
case undefined:
118127
format = Format.Xlf;
119128
break;
@@ -311,6 +320,7 @@ export async function execute(
311320
i18n.sourceLocale,
312321
basePath,
313322
useLegacyIds,
323+
diagnostics,
314324
);
315325
const content = serializer.serialize(ivyMessages);
316326

packages/angular_devkit/build_angular/src/extract-i18n/schema.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"xlf2",
2222
"xliff2",
2323
"json",
24-
"arb"
24+
"arb",
25+
"legacy-migrate"
2526
]
2627
},
2728
"i18nFormat": {
@@ -37,7 +38,8 @@
3738
"xlf2",
3839
"xliff2",
3940
"json",
40-
"arb"
41+
"arb",
42+
"legacy-migrate"
4143
]
4244
},
4345
"i18nLocale": {

0 commit comments

Comments
 (0)