@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
43 lines • 5.39 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { LocalStorage } from '../utils';
import * as i0 from "@angular/core";
import * as i1 from "./logger.service";
/**
* Le service est chargé de maintenir le code langue de l'application et de signaler le changement de langue aux observateurs.
*/
export class LangService {
static { this.DEF_LANG = 'fr'; }
constructor(logger) {
this.logger = logger;
/** Observable de la langue. */
this.subject = new BehaviorSubject(LangService.DEF_LANG);
/** Par défaut, le code de la langue est stocké dans le localStorage. */
this.hasLocalStorage = true;
/** Nom par défaut du local storage. */
this.localStorageName = 'lang';
if (this.hasLocalStorage) {
const lang = LocalStorage.get(this.localStorageName);
if (lang)
this.lang = LocalStorage.get(this.localStorageName);
}
}
get lang() {
return this.subject.value;
}
set lang(code) {
if (!code || code === this.lang)
return;
this.logger.info(`Changement de langue courante: '${code}'`);
this.subject.next(code);
if (this.hasLocalStorage)
LocalStorage.set(this.localStorageName, code);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LangService, deps: [{ token: i1.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LangService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LangService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.LoggerService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9sYW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUd4Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxXQUFXO2FBQ0UsYUFBUSxHQUFHLElBQUksQUFBUCxDQUFRO0lBV3hDLFlBQW9CLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFUekMsK0JBQStCO1FBQy9CLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUQseUVBQXlFO1FBQ2pFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLHVDQUF1QztRQUMvQixxQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFHaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckQsSUFBSSxJQUFJO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUV4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQzsrR0E5QlUsV0FBVzttSEFBWCxXQUFXLGNBREUsTUFBTTs7NEZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7XG5cbi8qKlxuICogTGUgc2VydmljZSBlc3QgY2hhcmfDqSBkZSBtYWludGVuaXIgbGUgY29kZSBsYW5ndWUgZGUgbCdhcHBsaWNhdGlvbiBldCBkZSBzaWduYWxlciBsZSBjaGFuZ2VtZW50IGRlIGxhbmd1ZSBhdXggb2JzZXJ2YXRldXJzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExhbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGX0xBTkcgPSAnZnInO1xuXG4gIC8qKiBPYnNlcnZhYmxlIGRlIGxhIGxhbmd1ZS4gKi9cbiAgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihMYW5nU2VydmljZS5ERUZfTEFORyk7XG5cbiAgLyoqIFBhciBkw6lmYXV0LCBsZSBjb2RlIGRlIGxhIGxhbmd1ZSBlc3Qgc3RvY2vDqSBkYW5zIGxlIGxvY2FsU3RvcmFnZS4gICovXG4gIHByaXZhdGUgaGFzTG9jYWxTdG9yYWdlID0gdHJ1ZTtcblxuICAvKiogTm9tIHBhciBkw6lmYXV0IGR1IGxvY2FsIHN0b3JhZ2UuICovXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlTmFtZSA9ICdsYW5nJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSkge1xuICAgIGlmICh0aGlzLmhhc0xvY2FsU3RvcmFnZSkge1xuICAgICAgY29uc3QgbGFuZyA9IExvY2FsU3RvcmFnZS5nZXQodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKTtcbiAgICAgIGlmIChsYW5nKSB0aGlzLmxhbmcgPSA8c3RyaW5nPkxvY2FsU3RvcmFnZS5nZXQodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1YmplY3QudmFsdWU7XG4gIH1cblxuICBzZXQgbGFuZyhjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvZGUgfHwgY29kZSA9PT0gdGhpcy5sYW5nKSByZXR1cm47XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKGBDaGFuZ2VtZW50IGRlIGxhbmd1ZSBjb3VyYW50ZTogJyR7Y29kZX0nYCk7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQoY29kZSk7XG5cbiAgICBpZiAodGhpcy5oYXNMb2NhbFN0b3JhZ2UpIExvY2FsU3RvcmFnZS5zZXQodGhpcy5sb2NhbFN0b3JhZ2VOYW1lLCBjb2RlKTtcbiAgfVxufVxuIl19