oxen-electron-gui-wallet/src/plugins/i18n.js

48 lines
1.1 KiB
JavaScript

import VueI18n from "vue-i18n";
import messages from "src/i18n";
import { Quasar } from "quasar";
let i18n;
export default ({ app, Vue }) => {
Vue.use(VueI18n);
// Set i18n instance on app
app.i18n = new VueI18n({
locale: "en-us",
fallbackLocale: "en-us",
messages
});
i18n = app.i18n;
};
const changeLanguage = lang => {
const quasarLang = Quasar.i18n.lang;
return new Promise((resolve, reject) => {
import(`src/i18n/${lang}`)
.then(({ default: messages }) => {
i18n.locale = lang;
i18n.setLocaleMessage(lang, messages);
// Setting the quasar language is optional
// There may be cases where they don't have the language
import(`quasar-framework/i18n/${lang}`)
.then(lang => {
quasarLang.set(lang.default);
})
.catch(() => {
console.warn(`Failed to set quasar language: ${lang}`);
})
.finally(() => {
resolve(lang);
});
})
.catch(() => {
reject(new Error("Language not found"));
});
});
};
export { i18n, changeLanguage };