2022-06-26 21:14:35 +02:00

45 lines
1.4 KiB
TypeScript

import { HttpClient } from "@angular/common/http";
import { NgModule } from "@angular/core";
import { TranslateLoader, TranslateModule } from "@ngx-translate/core";
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
import { LanguageService } from "../_services/language.service";
export const HttpLoaderFactory = (http: HttpClient): TranslateHttpLoader => {
return new TranslateHttpLoader(http, "./assets/i18n/")
}
@NgModule({
declarations: [],
imports: [TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})],
exports: []
})
export class LanguageModule {
readonly VALID_LANGUAGES = ["en", "es", "pl"];
constructor(private languageService: LanguageService) {
this.setup();
}
private setup(): void {
//If a language is set in persistence, and it is supported by the app, use it
const persistenceLanguage = this.languageService.getLanguage();
if (this.VALID_LANGUAGES.includes(persistenceLanguage)) {
this.languageService.setLanguage(persistenceLanguage);
} else {
//If language is not defined in persistence, check browser default language: If browser uses a supported language, use it. Otherwise, use english.
const browserLang = navigator.language.substring(0, 2);
const defaultLang = this.VALID_LANGUAGES.includes(browserLang) ? browserLang : "en";
this.languageService.setLanguage(defaultLang);
}
}
}