@intuitionrobotics/thunderstorm
Version:
43 lines • 1.84 kB
JavaScript
;
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