i18n配置与使用

291 阅读1分钟

在src下面新建两个文件夹,和对应的文件

language里面的语言包文件根据需求来创建

image.png

i18n下 index.js 文件

import { createI18n } from "vue-i18n";

import en from '@/language/en'

// import ja from '@/language/ja'

import zh_cn from '@/language/zh-cn'

// import zh_mo from '@/language/zh-mo'

const messages = {

  en: {

    ...en,

    // ...elementEnLocale

  },

  'zh-cn': {

    ...zh_cn,

    // ...elementZhLocale

  },

  // 'zh-mo': {

  //   ...zh_mo,

  //   // ...elementZhLocale

  // },

  // ja: {

  //   ...ja,

  //   // ...elementZhLocale

  // },

}

// 获取浏览器的语言,动态更改语言状态

export function getLanguage() {

  let languages = (navigator.language).toLowerCase();

  let languagesArray = languages.split("-");

  if (languagesArray[0] == 'zh') {

    if (languagesArray[1].toLowerCase() != 'cn') {

      languages = 'zh-mo'

    }

  }

  console.log('当前语言---', languages, languagesArray);

  const locales = Object.keys(messages)

  // console.log('locales', locales);

  for (const locale of locales) {

    // console.log(language.indexOf(locale));

    if (languages.indexOf(locale) > -1) {

      return locale

    }

  }

  return 'zh-cn'

}

const i18n = createI18n({

  legacyfalse,

  localegetLanguage(), //设置当前默认语言

  globalInjectiontrue,

  messages

})

//导出 i18n 实例。

export default i18n

language里面的语言包文件

image.png

在main.js中配置

// 导入i18n配置

import i18n from '@/i18n/index'

app.use(i18n)

使用

在template中使用

$t('DevicePage.L_TabBar_Home') }}

在js setup中使用

//导入

import { useI18n } from 'vue-i18n'
setup() {
    const { t } = useI18n() // 解构出t方法

    t('DevicePage.L_TabBar_Home') //使用
}

在js文件中使用

//导入

import i18n from "@/i18n/index"

//使用

const $i18n = i18n.global

$i18n.t('DevicePage.L_TabBar_Home')