habitica/website/client/libs/i18n.js

34 lines
1 KiB
JavaScript
Raw Normal View History

// Vue plugin to globally expose a '$t' method that calls common/i18n.t.
// Can be anywhere inside vue as 'this.$t' or '$t' in templates.
import i18n from 'common/script/i18n';
import moment from 'moment';
export default {
install (Vue, {i18nData}) {
if (i18nData) {
// Load i18n strings
i18n.strings = i18nData.strings;
// Load Moment.js locale
const language = i18nData.language;
if (language && i18nData.momentLang && language.momentLangCode) {
// Make moment available under `window` so that the locale can be set
window.moment = moment;
// Execute the script and set the locale
const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script');
script.type = 'text/javascript';
script.text = i18nData.momentLang;
head.appendChild(script);
moment.locale(language.momentLangCode);
}
}
Vue.prototype.$t = function translateString () {
return i18n.t.apply(null, arguments);
};
},
};