vue i18n element 使用

1. 首先下载 i18n包

npm install vue-i18n

2. 在src下创建 lang文件夹,存放语言配置文件(index.js),语言包

2.1 语言配置文件 index.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
// 从语言包文件中导入语言包对象
import zh from './zh.js'
import en from './en.js'
import de from './de.js'
//使用vuex
import store from '../store'
// element-ui 组件国际化
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import deLocale from 'element-ui/lib/locale/lang/de'

ElementLocale.i18n((key, value) => i18n.t(key, value))

Vue.use(VueI18n)
const messages = {
  zh: {
    ...zh,
    ...zhLocale
  },
  en: {
    ...en,
    ...enLocale
  },
  de: {
    ...de,
    ...deLocale
  }
}
console.log(store.state.langs)

const i18n = new VueI18n({
  messages,
  locale: store.state.langs, //初始默认中文
  fallbackLocale: 'zh', // 若某个语言环境变量,则使用fallbackLocale环境下对应的变量
  silentFallbackWarn: true, // 抑制警告
  globalInjection: true, // 全局注入
  silentTranslationWarn: true
})

export default i18n

2.2 中文包 zh.js

export default {
  home: {
    aaa: '登录',
    bbb: '用户名',
    ccc: '密码'
  }
}

2.3 英语包 en.js

export default {
  home: {
    aaa: 'log',
    bbb: 'user',
    ccc: 'passwd'
  }
}

2.4 只需要把语言包引入到语言配置文件中

3. 在store中加入 langs: localStorage.getItem('lang') ? localStorage.getItem('lang') : 'zh',

4. 在main.js 中引入 import i18n from './lang/index'

5. 在页面切换语言

<template>
  <div>
    <div class="langes">
      <el-radio-group v-model="radio" @change="changeLangs">
        <el-radio label="zh">中文</el-radio>
        <el-radio label="en">英文</el-radio>
        <el-radio label="de">德语</el-radio>
      </el-radio-group>
    </div>

    <div class="formBox">
      {{$t('home.aaa')}}
      {{$t('home.bbb')}}
      {{$t('home.ccc')}}
    </div>

  </div>
</template>

<script>
export default {
  data () {
    return {
      radio: this.$store.state.langs
    }
  },
  methods: {
    // 切换语言
    changeLangs (val) {
      localStorage.setItem('lang', val) // 存储到本地存储,防止页面刷新返回初始状态
      this.$i18n.locale = val
    }
  }
}
</script>

<style>
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不会•

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值