import type { App } from 'vue' import { createI18n } from 'vue-i18n' import { useLocaleStoreWithOut } from '@/store/modules/locale' import type { I18n, I18nOptions } from 'vue-i18n' import { setHtmlPageLang } from './helper' export let i18n: ReturnType async function createI18nOptions(): Promise { const localeStore = useLocaleStoreWithOut() const locale = localeStore.getLocale const localeMap = localeStore.getLocaleMap const defaultLocal = await import(`../../locales/${locale.lang}.ts`) const message = defaultLocal.default ?? {} setHtmlPageLang(locale.lang) localeStore.setLocale({ lang: locale.lang // elLocale: elLocal }) return { legacy: false, locale: locale.lang, fallbackLocale: locale.lang, messages: { [locale.lang]: message }, availableLocales: localeMap.map((v) => v.lang), sync: true, silentTranslationWarn: true, missingWarn: false, silentFallbackWarn: true } } export async function setupI18n(app: App) { const options = await createI18nOptions() i18n = createI18n(options) as I18n app.use(i18n) }