fix: use webpack to load i18n files on buildtime (#1797)

This commit is contained in:
Max Peintner 2021-06-01 08:40:33 +02:00 committed by GitHub
parent 6ce4e83d36
commit d61baadfd9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
import { OverlayModule } from '@angular/cdk/overlay'; import { OverlayModule } from '@angular/cdk/overlay';
import { CommonModule, registerLocaleData } from '@angular/common'; import { CommonModule, registerLocaleData } from '@angular/common';
import { HttpClient, HttpClientModule } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
import localeDe from '@angular/common/locales/de'; import localeDe from '@angular/common/locales/de';
import { APP_INITIALIZER, NgModule } from '@angular/core'; import { APP_INITIALIZER, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@ -20,9 +20,9 @@ import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { ServiceWorkerModule } from '@angular/service-worker'; import { ServiceWorkerModule } from '@angular/service-worker';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { AuthConfig, OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; import { AuthConfig, OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
import { QuicklinkModule } from 'ngx-quicklink'; import { QuicklinkModule } from 'ngx-quicklink';
import { from, Observable } from 'rxjs';
import { OnboardingModule } from 'src/app/modules/onboarding/onboarding.module'; import { OnboardingModule } from 'src/app/modules/onboarding/onboarding.module';
import { RegExpPipeModule } from 'src/app/pipes/regexp-pipe/regexp-pipe.module'; import { RegExpPipeModule } from 'src/app/pipes/regexp-pipe/regexp-pipe.module';
import { SubscriptionService } from 'src/app/services/subscription.service'; import { SubscriptionService } from 'src/app/services/subscription.service';
@ -55,9 +55,10 @@ import { ThemeService } from './services/theme.service';
registerLocaleData(localeDe); registerLocaleData(localeDe);
// AoT requires an exported function for factories export class WebpackTranslateLoader implements TranslateLoader {
export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { getTranslation(lang: string): Observable<any> {
return new TranslateHttpLoader(http, './assets/i18n/'); return from(import(`../assets/i18n/${lang}.json`));
}
} }
const appInitializerFn = (grpcServ: GrpcService) => { const appInitializerFn = (grpcServ: GrpcService) => {
@ -97,8 +98,7 @@ const authConfig: AuthConfig = {
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useFactory: HttpLoaderFactory, useClass: WebpackTranslateLoader,
deps: [HttpClient],
}, },
}), }),
MatNativeDateModule, MatNativeDateModule,