piral-translate
Version:
Plugin for providing translated messages in Piral.
50 lines • 1.81 kB
JavaScript
export function createActions(localizer) {
return {
selectLanguage(ctx, selected) {
ctx.dispatch((state) => {
localizer.language = selected;
const previousLanguage = state.language.selected;
const currentLanguage = selected;
// emit this event *after* we changed the state container
setTimeout(() => {
ctx.emit('select-language', {
previousLanguage,
currentLanguage,
});
}, 0);
return {
...state,
language: {
...state.language,
loading: selected === undefined,
selected,
},
};
});
},
translate(_, key, variables) {
return localizer && localizer.localizeGlobal(key, variables);
},
setTranslations(ctx, language, data) {
localizer.messages[language] = data.global;
for (const item of data.locals) {
const api = ctx.apis[item.name];
if (api) {
const translations = api.getTranslations();
translations[language] = item.value;
api.setTranslations(translations);
}
}
},
getTranslations(ctx, language) {
return {
global: localizer.messages[language],
locals: Object.keys(ctx.apis).map((name) => ({
name,
value: ctx.apis[name].getTranslations()[language],
})),
};
},
};
}
//# sourceMappingURL=actions.js.map