UNPKG

@logcomex/aylawc-core

Version:

An experimental library of web components

47 lines 1.65 kB
import { useCore } from '..'; import translations from './translations'; const localeFactory = (defaultLanguage) => { return { currentLocale: defaultLanguage, translationsLanguage: { 'pt-br': 'pt', en: 'en' } }; }; export var TranslationEvents; (function (TranslationEvents) { TranslationEvents["OnLocaleChange"] = "ON_LOCALE_CHANGE"; })(TranslationEvents || (TranslationEvents = {})); export class Translation { constructor() { this._translations = {}; this._locale = localeFactory('pt-br'); this.addTranslations(translations); } get currentLanguage() { return this._locale.currentLocale; } set currentLanguage(language) { this._locale.currentLocale = language; useCore().event.next({ name: TranslationEvents.OnLocaleChange, payload: null }); } addTranslations(translations) { this._translations = Object.assign(Object.assign({}, this._translations), translations); } $t(path, replaceValue) { const paths = path.split('.'); const translationMap = paths.reduce((map, p) => map[p] || {}, this._translations); let translation = translationMap[this._locale.translationsLanguage[this.currentLanguage]]; if (translation && replaceValue) { translation = translation.replace(/\{\}/g, () => replaceValue.shift() || ''); } if (translation) return translation; return path; } getTranslationLanguageKey(language) { return this._locale.translationsLanguage[language]; } } //# sourceMappingURL=translation.js.map