123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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<typeof createI18n>
- const createI18nOptions = async (): Promise<I18nOptions> => {
- const localeStore = useLocaleStoreWithOut()
- const locale = localeStore.getCurrentLocale
- const localeMap = localeStore.getLocaleMap
- const defaultLocal = await import(`../../locales/${locale.lang}.ts`)
- const message = defaultLocal.default ?? {}
- setHtmlPageLang(locale.lang)
- localeStore.setCurrentLocale({
- 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 const setupI18n = async (app: App<Element>) => {
- const options = await createI18nOptions()
- i18n = createI18n(options) as I18n
- app.use(i18n)
- }
|