45 lines
1.4 KiB
TypeScript
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);
|
|
}
|
|
|
|
}
|
|
|
|
} |