37 lines
901 B
JavaScript
37 lines
901 B
JavaScript
import VueI18n from 'vue-i18n';
|
|
import Vue from 'vue';
|
|
import fallback from './fallback';
|
|
|
|
VueI18n.prototype.setLanguage = async function(lang) {
|
|
try {
|
|
if (!this.messages[lang]){
|
|
let messages = {};
|
|
messages = (await import(/* webpackIgnore: true */ `../lang/${lang}.js`)).default;
|
|
|
|
this.setLocaleMessage(lang, messages);
|
|
}
|
|
|
|
this.locale = lang;
|
|
document.querySelector('html').setAttribute('lang', lang);
|
|
} catch (e) {
|
|
console.error(`Failed to load language '${lang}'!`, e);
|
|
}
|
|
}
|
|
|
|
VueI18n.prototype.loadLanguageSettings = async function() {
|
|
let settings = (await import(/* webpackIgnore: true */ "../lang/settings.js")).default;
|
|
this.languages = settings.languages;
|
|
this.setLanguage(settings.default);
|
|
};
|
|
|
|
Vue.use(VueI18n);
|
|
|
|
const i18n = new VueI18n({
|
|
locale: 'fallback',
|
|
fallbackLocale: 'fallback',
|
|
silentFallbackWarn: true,
|
|
messages: { fallback }
|
|
});
|
|
|
|
export default i18n;
|