funky-framadate-front/src/app/core/services/language.service.ts

74 lines
2.0 KiB
TypeScript
Raw Normal View History

2020-05-05 18:17:12 +02:00
import { Injectable } from '@angular/core';
import { LangChangeEvent, TranslateService } from '@ngx-translate/core';
2020-05-05 18:17:12 +02:00
import { LanguageEnum } from '../enums/language.enum';
2020-05-05 18:17:12 +02:00
import { StorageService } from './storage.service';
@Injectable({
providedIn: 'root',
})
export class LanguageService {
constructor(private translate: TranslateService, private storageService: StorageService) {}
public getLangage(): LanguageEnum {
return this.translate.currentLang as LanguageEnum;
2020-05-05 18:17:12 +02:00
}
2022-02-08 13:44:17 +01:00
public setLanguage(language: string): void {
this.translate.use(language);
2020-05-05 18:17:12 +02:00
}
public getAvailableLanguages(): string[] {
return this.translate.getLangs();
}
public configureAndInitTranslations(): void {
// always save in storage the currentLang used
this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
this.storageService.language = event.lang as LanguageEnum;
2020-05-05 18:17:12 +02:00
});
// set all languages available
this.translate.addLangs(Object.keys(LanguageEnum));
2020-05-05 18:17:12 +02:00
// set language
this.setLanguageOnInit();
}
public getPrimeNgStrings() {
return this.translate.get('calendar_widget');
}
2020-05-05 18:17:12 +02:00
private setLanguageOnInit(): void {
// set language from storage
if (!this.translate.currentLang) {
this.setLanguageFromStorage();
}
// or set language from browser
if (!this.translate.currentLang) {
this.setLanguageFromBrowser();
}
// set default language
if (!this.translate.currentLang) {
this.setLanguage(LanguageEnum.fr);
2020-05-05 18:17:12 +02:00
}
}
private setLanguageFromStorage(): void {
console.log('this.storageService.language', this.storageService.language);
2020-05-05 18:17:12 +02:00
if (this.storageService.language && this.translate.getLangs().includes(this.storageService.language)) {
this.setLanguage(this.storageService.language);
}
}
2020-05-05 18:17:12 +02:00
private setLanguageFromBrowser(): void {
const currentBrowserLanguage: LanguageEnum = this.translate.getBrowserLang() as LanguageEnum;
console.log('currentBrowserLanguage', currentBrowserLanguage);
2020-05-05 18:17:12 +02:00
if (this.translate.getLangs().includes(currentBrowserLanguage)) {
this.setLanguage(currentBrowserLanguage);
}
}
}