create-plume-react-project
Version:
CLI to create Plume React Project
42 lines (33 loc) • 1.3 kB
text/typescript
import { observable, WritableObservable } from 'micro-observables';
import { Locale, LocaleResolver } from '@lib/locale-resolver/LocaleResolver';
/**
* Récupère la langue par défaut, et permet de changer la langue courante
* en enregistrant le choix dans le locale storage
*/
export default class LocaleService {
static readonly LOCALE_FR: Locale = { code: 'fr', name: 'Français' } as const;
static readonly LOCALE_EN: Locale = { code: 'en', name: 'English' } as const;
private readonly currentLocale: WritableObservable<Locale>;
constructor(private readonly localeResolver: LocaleResolver) {
this.currentLocale = observable(localeResolver.resolve());
LocaleService.setHtmlLang(this.currentLocale.get());
}
getCurrentLocale() {
return this.currentLocale.readOnly();
}
setCurrentLocale(newLocale: Locale) {
this.currentLocale.set(newLocale);
if (this.localeResolver.hasLocaleStorage()) {
this.localeResolver.setPreferredLocale(newLocale);
}
LocaleService.setHtmlLang(newLocale);
}
getAvailableLocales() {
return this.localeResolver.getAvailableLocales();
}
private static setHtmlLang(local: Locale) {
if (typeof document !== 'undefined') {
document.documentElement.setAttribute('lang', local.code);
}
}
}