UNPKG

@intuitionrobotics/thunderstorm

Version:
43 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LocaleModule = exports.LocaleModule_Class = void 0; const ts_common_1 = require("@intuitionrobotics/ts-common"); const util_1 = require("util"); const thunder_dispatcher_1 = require("../../core/thunder-dispatcher"); const StorageModule_1 = require("../StorageModule"); const dispatch_onLanguageChanged = new thunder_dispatcher_1.ThunderDispatcher("__onLanguageChanged"); class LocaleModule_Class extends ts_common_1.Module { constructor() { super("LocaleModule"); this.selectedLanguage = new StorageModule_1.StorageKey("locale--selected-language"); } init() { const defaultLocale = this.selectedLanguage.get() || this.config.defaultLocale; if (!defaultLocale) throw new ts_common_1.ImplementationMissingException("MUST set defaultLocale in the config data"); this.defaultLocale = this.setLanguage(defaultLocale); } setLanguage(locale) { const localeDef = this.config.locales.find(_locale => _locale.locale === locale); if (!localeDef) throw new ts_common_1.ImplementationMissingException(`Unsupported language: ${locale}`); this.activeLocale = localeDef; dispatch_onLanguageChanged.dispatchUI(); this.selectedLanguage.set(localeDef.locale); return localeDef; } getAvailableLanguages() { return this.config.locales; } get(key, ...params) { let text = this.activeLocale.texts[key]; if (!text) text = this.defaultLocale.texts[key]; if (!text) return key; return (0, util_1.format)(text, ...params); } } exports.LocaleModule_Class = LocaleModule_Class; exports.LocaleModule = new LocaleModule_Class(); //# sourceMappingURL=LocaleModule.js.map