vue3使用i18n實(shí)現(xiàn)國(guó)際化與動(dòng)態(tài)切換語(yǔ)言

https://kazupon.github.io/vue-i18n/zh/started.html#javascript

  • 安裝依賴: npm install vue-i18n@next
    "vue-i18n": "^9.2.0-beta.33"

  • 創(chuàng)建i18n/index.js

import { createI18n } from 'vue-i18n'

// 國(guó)際化語(yǔ)言資源
const messages = {
  // 英文
  en: {
    login: {
      loginBtn: 'login',
      pwdBtn: 'password'
    }
  },
  // 中文
  zh: {
    login: {
      loginBtn: '登錄',
      pwdBtn: '密碼'
    }
  }
}

/**
 * 獲取
 * @returns {string}
 */
function getLocal () {
  // 如果緩存中存在,則直接返回
  const myLocale = localStorage.getItem('my_locale')
  if (myLocale) {
    return myLocale
  }
  // 否則讀取當(dāng)前網(wǎng)頁(yè)語(yǔ)言
  const localName = navigator.language.indexOf('zh') !== -1 ? 'zh' : 'en'
  // 設(shè)置緩存
  localStorage.setItem('my_locale', localName)
  return localName
}

// 創(chuàng)建i18n實(shí)例
export const i18n = createI18n({
  locale: getLocal(),
  messages
})
  • main.js
import { i18n } from '@/i18n'

app.use(i18n)
  • 使用: {{$t('xx.xx')}}
      <el-button type="primary" @click="handleLogin">{{$t('login.loginBtn')}}</el-button>
      <el-button type="info" @click="changeType">{{ tips }}{{$t('login.pwdBtn')}}</el-button>
image.png

image.png
  • 動(dòng)態(tài)變更語(yǔ)言: i18n.global.locale = lang
      <el-button type="success" @click="changeLanguage">變更語(yǔ)言</el-button>


import { i18n } from '@/i18n'

const changeLanguage = () => {
  console.log('i18n.global.locale', i18n.global.locale)
  const lang = i18n.global.locale === 'en' ? 'zh' : 'en'
  localStorage.setItem('my_locale', lang)
  i18n.global.locale = lang
}

  • 把國(guó)際化資源文件單獨(dú)拎出來
  • en.js
export default {
  login: {
    loginBtn: 'login',
    pwdBtn: 'password'
  }
}
  • zh.js
export default {
  login: {
    loginBtn: '登錄',
    pwdBtn: '密碼'
  }
}
  • i18n/index.js
import zh from '@/i18n/zh'
import en from '@/i18n/en'

// 國(guó)際化語(yǔ)言資源
const messages = {
  // 英文
  en: {
    ...en
  },
  // 中文
  zh: {
    ...zh
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容