Я пытаюсь создать приложение, которое поддерживает несколько языков - фактически до 20.
Язык по умолчанию - en-US
. Во время сборки создаются переведенные версии, которые прекрасно работают.
Однако во всех сборках LOCALE_ID
всегда en-US
. Так что я не могу положиться на локаль в трубах и т. Д. c. Он не обновляется с языком, установленным в конфигурации сборки.
Я получаю это предупреждение (здесь для немецкого языка) также во время компиляции для каждой локали:
Данные о локали для 'de -DE 'не может быть найден. Данные для локали не будут включены для этой локали.
Так выглядит конфигурация сборки в angular. json:
"production-de": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
],
"outputPath": "dist/de",
"baseHref": "/de/",
"i18nLocale": "de-DE",
"i18nFile": "src/locale/messages/messages.de.xlf",
"i18nFormat": "xlf"
},
Приложение создается с помощью этой команды:
ng build configuration=production-de
Вот так выглядит мой app.module.ts :
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, LOCALE_ID } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { registerLocaleData } from '@angular/common';
import localeEn from '@angular/common/locales/en';
import localeEnExtra from '@angular/common/locales/extra/en';
registerLocaleData(localeEn, 'en-US', localeEnExtra);
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
providers: [
{
provide: LOCALE_ID,
useValue: 'en-US'
}
],
bootstrap: [
AppComponent
]
})
export class AppModule { }
Это Кажется, что registerLocaleData
, а также провайдер для LOCALE_ID
не обновляются во время сборки.
Я уже пытался удалить registerLocaleData
и провайдера LOCALE_ID
, так как en-US
является настройкой по умолчанию в Angular. Но это не меняет поведения.
Должен ли я также заменить app.module.ts
другими значениями для registerLocaleData
? Это было бы огромными затратами в отношении 20 языков.
Или есть другой, но правильный способ развертывания приложения на нескольких языках?
Я пропустил какую-то конфигурацию?