add i18n
This commit is contained in:
+33
@@ -0,0 +1,33 @@
|
||||
import { createI18n } from 'vue-i18n'
|
||||
|
||||
export const SUPPORT_LOCALES = ['en', 'sl']
|
||||
|
||||
export const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: 'en',
|
||||
fallbackLocale: 'en',
|
||||
messages: {},
|
||||
})
|
||||
|
||||
const loadedLocales = new Set()
|
||||
|
||||
async function loadLocaleMessages(locale) {
|
||||
if (!loadedLocales.has(locale)) {
|
||||
const messages = await import(`../locales/${locale}.json`)
|
||||
i18n.global.setLocaleMessage(locale, messages.default)
|
||||
loadedLocales.add(locale)
|
||||
}
|
||||
}
|
||||
|
||||
export async function setLocale(locale) {
|
||||
await loadLocaleMessages(locale)
|
||||
i18n.global.locale.value = locale
|
||||
document.documentElement.setAttribute('lang', locale)
|
||||
localStorage.setItem('locale', locale)
|
||||
}
|
||||
|
||||
export function initialLocale() {
|
||||
const saved = localStorage.getItem('locale')
|
||||
const browser = navigator.language.split('-')[0]
|
||||
return [saved, browser].find(l => SUPPORT_LOCALES.includes(l)) || 'en'
|
||||
}
|
||||
Reference in New Issue
Block a user