vue-i18n 轻松上手

633 阅读1分钟

最近公司有个老项目(vue2)需要做国际化, 研究了一下 vue-i18n 文档, 简单记录一下使用步骤。

npm i vue-i18n@8 # support vue@2
# 如果你的项目是 vue3 请使用 vue-i18n@9+

1. 初始化 & 挂载

// main.js
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

// 通过选项创建 VueI18n 实例
const i18n = new VueI18n({
  locale: 'zh-CN', // 设置地区
  messages: {
    'zh-CN': require('./assets/lang/zh-CN'),
    'en-US': require('./assets/lang/en-US')
  } // 设置地区信息
})

new Vue({
  i18n,
  // ...
})
  • 配置多语言信息
// assets/lang/en-US.js
module.exports = {
  login: {
    username: 'Please enter a user name',
    password: 'Please enter a password',
  }
}

// assets/lang/zh-CN.js
module.exports = {
  login: {
    username: '请输入用户名',
    password: '请输入密码',
  }
}

2. 读取 messages

// Page.vue

// 花括号语法
<div>{{$t('login.username')}}</div>
<div>{{$t('login.password')}}</div>

// 指令
<div v-t="'login.username'" />

3. 切换语言

// Page.vue
<button @click="$i18n.locale = 'en-US'">英文</button>

以上语法基本满足正常使用, 下面介绍一些实际开发中可能用到的高阶用法


4. 数字本地化(如: 货币, km/h...)

const i18n = new VueI18n({
  locale: 'zh-CN', // 设置地区
  numberFormats: {
    'zh-CN': {
      currency: {
        style: 'currency',// 数字格式: 货币格式, 各种单位格式...
        	// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
        currency: 'CNY', // 币种
        currencyDisplay: 'code' // 货币格式: symbol-符号(如¥), code-代码(如CNY)...
      }
    },
    'en-US': {
      currency: {
        style: 'currency',
        currency: 'USD'
      }
    }
  },
  // ...
})
// Page.vue
<div>{{ $t(100, 'currency') }}</div> // ¥100.00

5. 更多高阶用法可参看官方文档: kazupon.github.io/vue-i18n/zh…