import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { BehaviorSubject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class LanguageService { selectedLanguage: string; supportedLanguages: Array = ['en', 'fr', 'nl']; public selectedLanguageEvent = new BehaviorSubject(undefined); constructor(private translate: TranslateService) { } public determineDefaultLanguage(): string { const language = localStorage.getItem('lang'); if (!language) { this.selectedLanguage = this.supportedLanguages[0]; } else { this.selectedLanguage = localStorage.getItem('lang'); } this.setSelectedLanguage(this.selectedLanguage); return this.selectedLanguage; } public setSelectedLanguage(lang: string) { if (lang === undefined || lang === null) { console.error('Trying to set a bad language ! - rejected !'); } else { localStorage.setItem('lang', lang); this.selectedLanguage = lang; this.translate.use(lang); this.selectedLanguageEvent.next(lang); } } public getSelectedLanguage(): string { if (this.selectedLanguage === null) { this.selectedLanguageEvent.next(this.selectedLanguage); return this.determineDefaultLanguage(); } return this.selectedLanguage; } }