Vue 国际化 vue-i18n 的使用

1.安装

npm install vue-i18n

在main.js中引用下面代码

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

2.在src下新建lang文件夹 存放3个文件 zn.js en.js index.js

在这里插入图片描述

// -------- zn.js ---------
export default {
  main:{
    message:"消息",
    display:"展示"
  }
};
// --------- en.js----------
export default {
  main:{
    message:"message",
    display:"display"
  }
}
// ------------index.js----------
import Vue from "vue";
import VueI18n from 'vue-i18n'
import zn from "./zn"
import en from "./en"
Vue.use(VueI18n);   // 全局注册国际化包
 
// 准备翻译的语言环境信息
const i18n = new VueI18n({
  locale: "zn",   // 初始化中文
  messages: {
    "zn":zn,
    "en":en
  }
}); 
 
export default i18n

3.使用方法

直接使用

<template>
  <div style="width: 100%;">
    <div>
      <div>
        <span>{{$t('main.message')}}</span>
      </div>
    </div>
  </div>
</template>

语言切换

<template>
  <div style="width: 100%;">
    <div>
      <div>
        <span>{{$t('main.message')}}</span>
        <button @click="changeLang">切换语言</button>
      </div>
    </div>
  </div>
</template>
 
<script>
export default {
  methods: {
    changeLang() {
      if(this.$i18n.locale === 'zn'){   // 判断当前语言
        this.$i18n.locale = 'en'   // 设置当前语言
      } else {
        this.$i18n.locale = 'zn'
      }
    }
  }
}
</script>

data变量翻译


//假如页面某个名称绑定了 data 中变量,即可能存在多个值,此时又该如何进行语言翻译?
//如下,“msg”存在多个取值,我们希望在切换“msg”值同时根据当前语言环境进行翻译。
<template>
  <div style="width: 100%;">
    <div>
      <div>
        <span>{{$t('main.message')}}</span>
        <button @click="changeLang">切换语言</button>
      </div>
      <p>{{msg}}</p>
      <button @click="changeWord">切换msg值</button>
    </div>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      msg:'message'
    }
  },
  methods: {
    changeLang() {
      if(this.$i18n.locale === 'zn'){   // 判断当前语言
        this.$i18n.locale = 'en'   // 设置当前语言
      } else {
        this.$i18n.locale = 'zn'
      }
    },
    changeWord() {
      if(this.msg === 'message'){
        this.msg = 'display'
      } else {
        this.msg = 'message'
      }
    },
  }
}
</script>

问题报错

在这里插入图片描述
如果控制台出现这种问题
报错的原因主要是因为当前使用的版本不匹配,解决方案入下。(复制终安装无脑即可)

npm install vue-i18n@8

详细介绍请查看官方文档
i18n官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中使用vue-i18n进行国际化配置的步骤如下: 1. 安装vue-i18n包: ```shell npm install vue-i18n ``` 2. 创建i18n实例: 在项目的根目录下创建一个`i18n.js`文件,并在其中导入`vue-i18n`包,然后创建一个新的`VueI18n`实例并导出它。可以根据需要配置语言包和其他选项。 ```javascript // i18n.js import { createI18n } from 'vue-i18n' const i18n = createI18n({ locale: 'en', // 默认语言 messages: { en: { // 英文语言包 // ... }, zh: { // 中文语言包 // ... } } }) export default i18n ``` 3. 在main.js中配置i18n使用: 在`main.js`文件中导入刚刚创建的`i18n`实例,并将其作为Vue应用的插件进行注册。 ```javascript // main.js import { createApp } from 'vue' import App from './App.vue' import i18n from './i18n' createApp(App).use(i18n).mount('#app') ``` 4. 在HTML中使用国际化文本: 在Vue组件的模板中,可以使用`$t`方法来获取国际化文本。例如: ```html <template> <div> <p>{{ $t('message') }}</p> </div> </template> ``` 5. 在JS中使用国际化文本: 在Vue组件的JavaScript代码中,可以使用`$t`方法来获取国际化文本。例如: ```javascript export default { methods: { showMessage() { console.log(this.$t('message')) } } } ``` 6. 修改语言(和获取当前语言): 可以使用`$i18n.locale`来获取或设置当前的语言。例如: ```javascript // 获取当前语言 console.log(this.$i18n.locale) // 修改语言为中文 this.$i18n.locale = 'zh' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值