@logcomex/aylawc-core
Version:
An experimental library of web components
47 lines • 1.65 kB
JavaScript
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