Alan Agius dd0ba3f4ab docs: rename ng xi18n to ng extract-i18n (#39337)
In Angular CLI version 11, xi18n has been changed from `ng xi18n` to `ng extract-i18n`.

PR Close #39337
2020-10-28 14:42:27 -07:00

42 lines
1.7 KiB
Markdown

## E2E tests
There are four different sets of e2e tests in this folder. They are all testing different
translation scenarios, but they are all built with IVY enabled.
### runtime
A new `polyfills.ts` file is provided (`polyfills-runtime.ts`) which is swapped in by a file
replacement in the `angular.json` configuration. In this new file:
* Runtime translations are provided (`loadTranslations()`).
* The current locale is set (`$localize.locale = 'fr'`) and loaded (`registerLocaleData(localeFr);`)
### de and fr
The application is built (into the `dist` folder) and then two sets of translations
(`src/locales/messages.(de|fr).json`) are used to generate two copies of the app, which have
been translated (compile-time inlined).
These translated apps are stored in `tmp/translations/(de|fr)`.
### legacy
The CLI `ng extract-i18n` tool extracts the messages from the Angular templates, into the XLIFF 1.2
format with legacy message ids (`tmp/legacy-locales/messages.legacy.xlf`).
The translation file is modified to apply a simple translation.
The app must be compiled using the `i18nLegacyMessageIdFormat` option set to ensure that the correct
message ids are used to match those in the translation files.
The app is translated using the compile-time inlining tool to generate a copy that has the
translated message in it.
## Hosting
Since the CLI hosts from and in-memory file-system the compile-time inliner is not able to
translate the output files. So the `de`, `fr` and `legacy` apps must be statically built to
disk and translated there.
Since the translated app is now on disk, we cannot use the CLI to serve it. Instead we use
a simple static HTTP server instead.