UNPKG

@gouvfr/dsfr-nexus

Version:

Le module `dsfr-nexus` est l'interface de ligne de commande (CLI) centrale du Système de Design de l’État - DSFR. Il offre des outils pour gérer et compiler les ressources du DSFR

76 lines (62 loc) 1.44 kB
import { I18nLocale } from './i18n-locale.js'; import { log } from '@gouvfr/dsfr-forge'; class I18nState { constructor () { this._default = null; this._current = null; this._locales = []; this._alts = []; } fill (data) { this._default = new I18nLocale(data.default, true); this._alts = data?.alts?.map(alt => new I18nLocale(alt)) ?? []; this._locales = [this._default, ...this._alts]; this.freeze(); } freeze () { Object.freeze(this._locales); Object.freeze(this._alts); Object.freeze(this); } get locales () { return this._locales; } get default () { return this._default; } get alts () { return this._alts; } get current () { return this._current; } get data () { return { default: this._default.data, alts: this._alts.map(locale => locale.data) }; } clone () { const clone = this._clone(); clone.freeze(); return clone; } _clone () { const clone = new I18nState(); clone._default = this._default; clone._current = this._current; clone._locales = this._locales clone._alts = this._alts; return clone; } localize (locale) { if (!this._locales.some(loc => loc.code === locale.code)) { log.error(`wrong Locale '${locale}'`); } const clone = this._clone(); clone._current = locale; this.freeze(); return clone; } } export { I18nState };