UNPKG

@igo2/core

Version:
47 lines 5.71 kB
import { Injectable } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { BehaviorSubject, combineLatest } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; export class LanguageService { translate; language; language$ = new BehaviorSubject(undefined); constructor(translate) { this.translate = translate; if (!this.translate.defaultLang || !this.matchLanguage(this.translate.defaultLang)) { this.setBrowserLanguage(); } } setBrowserLanguage() { this.language = this.translate.getBrowserLang(); const lang = this.getLanguage(); this.translate.setDefaultLang(lang); this.language$.next(lang); } getLanguage() { return this.matchLanguage(this.language) ? this.language : 'en'; } matchLanguage(lang) { return !!lang.match(/en|fr/); } setLanguage(language) { this.language = this.matchLanguage(language) ? language : 'en'; combineLatest([ this.translate.use(this.language), this.translate.reloadLang(this.language) ]).subscribe(() => { this.language$.next(this.language); }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LanguageService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.TranslateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvbGFuZ3VhZ2Uvc3JjL3NoYXJlZC9sYW5ndWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUt0RCxNQUFNLE9BQU8sZUFBZTtJQUlQO0lBSFgsUUFBUSxDQUFTO0lBQ2hCLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUU1RCxZQUFtQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM1QyxJQUNFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQzNCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUMvQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFDTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9ELGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN6QyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQW5DVSxlQUFlOzRHQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExhbmd1YWdlU2VydmljZSB7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFuZ3VhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnRyYW5zbGF0ZS5kZWZhdWx0TGFuZyB8fFxuICAgICAgIXRoaXMubWF0Y2hMYW5ndWFnZSh0aGlzLnRyYW5zbGF0ZS5kZWZhdWx0TGFuZylcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0QnJvd3Nlckxhbmd1YWdlKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgc2V0QnJvd3Nlckxhbmd1YWdlKCkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmdldExhbmd1YWdlKCk7XG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XG4gICAgdGhpcy5sYW5ndWFnZSQubmV4dChsYW5nKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hdGNoTGFuZ3VhZ2UodGhpcy5sYW5ndWFnZSkgPyB0aGlzLmxhbmd1YWdlIDogJ2VuJztcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFsYW5nLm1hdGNoKC9lbnxmci8pO1xuICB9XG5cbiAgcHVibGljIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gdGhpcy5tYXRjaExhbmd1YWdlKGxhbmd1YWdlKSA/IGxhbmd1YWdlIDogJ2VuJztcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmxhbmd1YWdlKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlLnJlbG9hZExhbmcodGhpcy5sYW5ndWFnZSlcbiAgICBdKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sYW5ndWFnZSQubmV4dCh0aGlzLmxhbmd1YWdlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19