2021-04-12 vue-i18n配置:

import { createI18n } from 'vue-i18n'

import { Locale } from 'vant'

import enUS from 'vant/es/locale/lang/en-US'

import zhCN from 'vant/es/locale/lang/zh-CN'

function loadLocaleMessages () {

  const locales = require.context('./locale', true, /[A-Za-z0-9-_,\s]+\.json$/i)

  const messages = {}

  locales.keys().forEach(key => {

    const matched = key.match(/([A-Za-z0-9-_]+)\./i)

    if (matched && matched.length > 1) {

      const locale = matched[1]

      messages[locale] = locales(key)

    }

  })

  messages.zh = {

    ...messages.zh,

    ...zhCN

  }

  messages.en = {

    ...messages.en,

    ...enUS

  }

  console.log(messages.zh)

  return messages

}

/*

* 获取语言

* */

export const getLang = () => {

  const locale = localStorage.getItem('locale')

  if (window) {

    vantLocale(locale)

    if (locale) return locale

    localStorage.setItem('locale', 'zh')

    return 'zh'

  }

  return 'zh'

}

/**

   * vant语言切换

   * */

export function vantLocale(flag) {

  if (flag === 'zh') {

    Locale.use('zh-CN', zhCN)

    return

  }

  Locale.use('en-US', enUS)

}

const i18n = createI18n({

  locale: getLang(),

  fallbackLocale: 'zh',

  messages: loadLocaleMessages()

})

export default i18n
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容