index.ts 787 Bytes
import { createI18n } from 'vue-i18n'
import type { App } from 'vue'
import zhCN from './zh-CN'
import en from './en'

/**
 * 国际化
 *
 * 注意:**菜单标题来自后端**(get-permission-info 下发的中文名),不走 i18n;
 * 这里只负责界面骨架文案(登录页、布局、按钮等)。多语言需求增长后可把后端菜单
 * 也接进来(菜单表加 i18n key)。
 */
export const i18n = createI18n({
  legacy: false,
  globalInjection: true,
  locale: 'zh-CN',
  fallbackLocale: 'zh-CN',
  messages: {
    'zh-CN': zhCN,
    en
  }
})

export function setupI18n(app: App) {
  app.use(i18n)
}

export function setLocale(locale: 'zh-CN' | 'en') {
  i18n.global.locale.value = locale
  document.documentElement.lang = locale
}

export default i18n