In Angular CLI version 11, xi18n has been changed from `ng xi18n` to `ng extract-i18n`. PR Close #39337 |
||
---|---|---|
.. | ||
de | ||
en | ||
fr | ||
legacy | ||
runtime | ||
README.md | ||
app.po.ts | ||
protractor.conf.js | ||
tsconfig.json |
README.md
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.