UNPKG

@taiga-ui/i18n

Version:

A package with tools for Taiga UI library i18n

48 lines 7.35 kB
import { inject, Injectable } from '@angular/core'; import { WA_LOCAL_STORAGE } from '@ng-web-apis/common'; import { TUI_DEFAULT_LANGUAGE, TUI_LANGUAGE, TUI_LANGUAGE_LOADER, TUI_LANGUAGE_STORAGE_KEY, } from '@taiga-ui/i18n/tokens'; import { BehaviorSubject, of, switchAll } from 'rxjs'; import { tuiAsyncLoadLanguage } from './load-language'; import * as i0 from "@angular/core"; export function tuiLanguageSwitcher(loader) { return [ { provide: TUI_LANGUAGE_LOADER, useFactory: () => loader, }, { provide: TUI_LANGUAGE, useFactory: () => inject(TuiLanguageSwitcherService).pipe(switchAll()), }, ]; } class TuiLanguageSwitcherService extends BehaviorSubject { constructor() { super(tuiAsyncLoadLanguage(inject(WA_LOCAL_STORAGE)?.getItem(inject(TUI_LANGUAGE_STORAGE_KEY)), inject(TUI_LANGUAGE_LOADER, { optional: true }), inject(TUI_DEFAULT_LANGUAGE))); this.fallback = inject(TUI_DEFAULT_LANGUAGE); this.key = inject(TUI_LANGUAGE_STORAGE_KEY); this.storage = inject(WA_LOCAL_STORAGE); this.loader = inject(TUI_LANGUAGE_LOADER, { optional: true }); } get language() { return this.storage?.getItem(this.key) || this.fallback.name; } setLanguage(language) { this.storage?.setItem(this.key, language); this.next(tuiAsyncLoadLanguage(language, this.loader, this.fallback)); } clear() { this.storage?.removeItem(this.key); this.next(of(this.fallback)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLanguageSwitcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLanguageSwitcherService, providedIn: 'root' }); } } export { TuiLanguageSwitcherService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLanguageSwitcherService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc3dpdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pMThuL3V0aWxzL2xhbmd1YWdlLXN3aXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDM0IsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBRXJELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF5QjtJQUN6RCxPQUFPO1FBQ0g7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO1NBQzNCO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3pFO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFFRCxNQUdhLDBCQUEyQixTQUFRLGVBQXdDO0lBTXBGO1FBQ0ksS0FBSyxDQUNELG9CQUFvQixDQUNoQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFDbkUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLEVBQzdDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUMvQixDQUNKLENBQUM7UUFaVyxhQUFRLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxXQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFVeEUsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBeUI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFUyxLQUFLO1FBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBNUJRLDBCQUEwQjttSEFBMUIsMEJBQTBCLGNBRnZCLE1BQU07O1NBRVQsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Byb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfTE9DQUxfU1RPUkFHRX0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIFRVSV9ERUZBVUxUX0xBTkdVQUdFLFxuICAgIFRVSV9MQU5HVUFHRSxcbiAgICBUVUlfTEFOR1VBR0VfTE9BREVSLFxuICAgIFRVSV9MQU5HVUFHRV9TVE9SQUdFX0tFWSxcbn0gZnJvbSAnQHRhaWdhLXVpL2kxOG4vdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlMYW5ndWFnZSwgVHVpTGFuZ3VhZ2VMb2FkZXIsIFR1aUxhbmd1YWdlTmFtZX0gZnJvbSAnQHRhaWdhLXVpL2kxOG4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG9mLCBzd2l0Y2hBbGx9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge3R1aUFzeW5jTG9hZExhbmd1YWdlfSBmcm9tICcuL2xvYWQtbGFuZ3VhZ2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpTGFuZ3VhZ2VTd2l0Y2hlcihsb2FkZXI6IFR1aUxhbmd1YWdlTG9hZGVyKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0xBTkdVQUdFX0xPQURFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGxvYWRlcixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0xBTkdVQUdFLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0KFR1aUxhbmd1YWdlU3dpdGNoZXJTZXJ2aWNlKS5waXBlKHN3aXRjaEFsbCgpKSxcbiAgICAgICAgfSxcbiAgICBdO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMYW5ndWFnZVN3aXRjaGVyU2VydmljZSBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPFR1aUxhbmd1YWdlPj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFsbGJhY2sgPSBpbmplY3QoVFVJX0RFRkFVTFRfTEFOR1VBR0UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5ID0gaW5qZWN0KFRVSV9MQU5HVUFHRV9TVE9SQUdFX0tFWSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlID0gaW5qZWN0KFdBX0xPQ0FMX1NUT1JBR0UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVyID0gaW5qZWN0KFRVSV9MQU5HVUFHRV9MT0FERVIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgdHVpQXN5bmNMb2FkTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgICAgaW5qZWN0KFdBX0xPQ0FMX1NUT1JBR0UpPy5nZXRJdGVtKGluamVjdChUVUlfTEFOR1VBR0VfU1RPUkFHRV9LRVkpKSxcbiAgICAgICAgICAgICAgICBpbmplY3QoVFVJX0xBTkdVQUdFX0xPQURFUiwge29wdGlvbmFsOiB0cnVlfSksXG4gICAgICAgICAgICAgICAgaW5qZWN0KFRVSV9ERUZBVUxUX0xBTkdVQUdFKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBUdWlMYW5ndWFnZU5hbWUge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlPy5nZXRJdGVtKHRoaXMua2V5KSB8fCB0aGlzLmZhbGxiYWNrLm5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExhbmd1YWdlKGxhbmd1YWdlOiBUdWlMYW5ndWFnZU5hbWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlPy5zZXRJdGVtKHRoaXMua2V5LCBsYW5ndWFnZSk7XG4gICAgICAgIHRoaXMubmV4dCh0dWlBc3luY0xvYWRMYW5ndWFnZShsYW5ndWFnZSwgdGhpcy5sb2FkZXIsIHRoaXMuZmFsbGJhY2spKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZT8ucmVtb3ZlSXRlbSh0aGlzLmtleSk7XG4gICAgICAgIHRoaXMubmV4dChvZih0aGlzLmZhbGxiYWNrKSk7XG4gICAgfVxufVxuIl19