Кажется, что это можно сделать с помощью компилятора AOT.
Из угловой документации:
При интернационализации с помощью компилятора AOT необходимо предварительно создать отдельный пакет приложения для каждого языка и предоставить соответствующий пакет на основе определения языка на стороне сервера или параметров URL-адреса.
Чтобы указать компилятору AOT использовать конфигурацию перевода, задайте три параметра конфигурации сборки «i18n» в файле angular.json.
- i18nFile: путь к файлу перевода.
- i18nFormat: формат файла перевода.
- i18nLocale: идентификатор локали.
Вы также должны направить вывод в папку, зависящую от локали, чтобы отделить ее от других версий вашего приложения, установив опцию конфигурации outputPath.
"build": {
...
"configurations": {
...
"fr": {
"aot": true,
"outputPath": "dist/my-project-fr/",
"i18nFile": "src/locale/messages.fr.xlf",
"i18nFormat": "xlf",
"i18nLocale": "fr",
...
}
}
},
"serve": {
...
"configurations": {
...
"fr": {
"browserTarget": "*project-name*:build:fr"
}
}
}
Затем вы можете передать эту конфигурацию командам ng serve или ng build. В приведенном ниже примере показано, как обслуживать файл на французском языке, созданный в предыдущих разделах этого руководства:
ng serve --configuration=fr
Для производственных сборок вы определяете отдельную конфигурацию production-fr в файле конфигурации CLI, angular.json.
...
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": { ... },
"configurations": {
"fr": {
"aot": true,
"outputPath": "dist/my-project-fr/",
"i18nFile": "src/locale/messages.fr.xlf",
"i18nFormat": "xlf",
"i18nLocale": "fr",
"i18nMissingTranslation": "error",
}
// ...
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "my-project:build"
},
"configurations": {
"production": {
"browserTarget": "my-project:build:production"
},
"fr": {
"browserTarget": "my-project:build:fr"
}
}
},
Те же параметры конфигурации также могут быть предоставлены через CLI с существующей производственной конфигурацией.
ng build --prod --i18n-file src/locale/messages.fr.xlf --i18n-format xlf --i18n-locale fr
Более подробная информация здесь:
https://angular.io/guide/i18n#merge-with-the-aot-compiler