From df2f052a8323afddb478f7ded960a46f58b65042 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Sun, 20 Nov 2022 00:44:37 +0200 Subject: [PATCH] RED-5485: allow runtime i18n init --- src/lib/translations/http-loader-factory.ts | 5 +++-- src/lib/translations/iqser-translate.module.ts | 3 ++- .../{utils => translations}/pruning-translation-loader.ts | 2 +- src/lib/utils/index.ts | 2 +- src/lib/utils/iqser-app-config.ts | 3 ++- 5 files changed, 9 insertions(+), 6 deletions(-) rename src/lib/{utils => translations}/pruning-translation-loader.ts (88%) diff --git a/src/lib/translations/http-loader-factory.ts b/src/lib/translations/http-loader-factory.ts index b8667e8..442d7c1 100644 --- a/src/lib/translations/http-loader-factory.ts +++ b/src/lib/translations/http-loader-factory.ts @@ -1,11 +1,12 @@ import { HttpClient } from '@angular/common/http'; import { PruningTranslationLoader } from '../utils'; -import { IqserConfigService } from '../services'; +import { getConfig, IqserConfigService } from '../services'; import { inject } from '@angular/core'; export function pruningTranslationLoaderFactory(pathPrefix: string): PruningTranslationLoader { const httpClient = inject(HttpClient); - const version = inject(IqserConfigService).values.FRONTEND_APP_VERSION; + const config = getConfig(); + const version = config.FRONTEND_APP_VERSION; return new PruningTranslationLoader(httpClient, pathPrefix, `.json?version=${version}`); } diff --git a/src/lib/translations/iqser-translate.module.ts b/src/lib/translations/iqser-translate.module.ts index 8d9c847..effcc13 100644 --- a/src/lib/translations/iqser-translate.module.ts +++ b/src/lib/translations/iqser-translate.module.ts @@ -29,12 +29,13 @@ export class IqserTranslateModule { } static forRoot(options?: IqserTranslateModuleOptions): ModuleWithProviders { + const pathPrefix = options?.pathPrefix?.length ? options.pathPrefix : '/assets/i18n/'; return { ngModule: IqserTranslateModule, providers: [ { provide: translateLoaderToken, - useFactory: () => pruningTranslationLoaderFactory(options?.pathPrefix ?? '/assets/i18n/'), + useFactory: () => pruningTranslationLoaderFactory(pathPrefix), }, ], }; diff --git a/src/lib/utils/pruning-translation-loader.ts b/src/lib/translations/pruning-translation-loader.ts similarity index 88% rename from src/lib/utils/pruning-translation-loader.ts rename to src/lib/translations/pruning-translation-loader.ts index f618ac6..06c2ef7 100644 --- a/src/lib/utils/pruning-translation-loader.ts +++ b/src/lib/translations/pruning-translation-loader.ts @@ -8,7 +8,7 @@ interface T { } export class PruningTranslationLoader implements TranslateLoader { - constructor(private _http: HttpClient, private _prefix: string, private _suffix: string) {} + constructor(private readonly _http: HttpClient, private readonly _prefix: string, private readonly _suffix: string) {} getTranslation(lang: string): Observable { return this._http.get(`${this._prefix}${lang}${this._suffix}`).pipe(map(result => this._process(result as T))); diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index c74b7bb..b84a77f 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -11,7 +11,7 @@ export * from './decorators/debounce.decorator'; export * from './decorators/on-change.decorator'; export * from './http-encoder'; export * from './types/iqser-types'; -export * from './pruning-translation-loader'; +export * from '../translations/pruning-translation-loader'; export * from './custom-route-reuse.strategy'; export * from './headers-configuration'; export * from './context.component'; diff --git a/src/lib/utils/iqser-app-config.ts b/src/lib/utils/iqser-app-config.ts index 2301fdd..ff6f33c 100644 --- a/src/lib/utils/iqser-app-config.ts +++ b/src/lib/utils/iqser-app-config.ts @@ -3,7 +3,8 @@ export interface IqserAppConfig { readonly APP_NAME: string; readonly FRONTEND_APP_VERSION: string; readonly OAUTH_CLIENT_ID: string; - readonly OAUTH_IDP_HINT: string; + readonly OAUTH_IDP_HINT?: string; readonly OAUTH_URL: string; readonly MANUAL_BASE_URL: string; + readonly BASE_TRANSLATIONS_DIRECTORY?: string; }