diff --git a/src/i18n.js b/src/i18n.js index ba02d36..bc11320 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -24,4 +24,20 @@ export const i18n = createI18n({ locale: getCurrentLanguage(), fallbackLocale: fallbackLocale, messages: {} -}); \ No newline at end of file +}); + +const loadedLanguages = new Set(); + +export async function loadLanguage (locale) { + if (loadedLanguages.has(locale)) { + i18n.global.locale.value = locale; + return; + }; + + const messages = (await import(`./locales/${locale}.json`)).default; + + i18n.global.setLocaleMessage(locale, messages); + i18n.global.locale.value = locale; + + loadedLanguages.add(locale); +}; \ No newline at end of file diff --git a/src/main.js b/src/main.js index 6268da9..e9ff0bc 100644 --- a/src/main.js +++ b/src/main.js @@ -16,11 +16,14 @@ limitations under the License. import { createApp } from 'vue' import App from './App.vue' -import { i18n } from './i18n'; +import { i18n, loadLanguage } from './i18n'; +import getCurrentLanguage from './utils/currentLanguage'; import router from './router' import './styles/common.css' import './styles/variables/colors.css' +await loadLanguage(getCurrentLanguage()); + createApp(App) .use(router) .use(i18n)