目录

一、安装

二、使用

1、准备语言包

2、准备翻译的语言环境

3、实现语言翻译

三、整合 ElementUI 语言包

1、扩展中文

2、扩展英文

3、使用扩展语言翻译

四、问题记录

五、扩展

vue3 中使用 vue-i18n


一、安装

npm install vue-i18n

如果在一个模块系统中使用它,你必须通过 Vue.use() 明确地安装 vue-i18n

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

二、使用

在 src 下创建 lang 文件夹。

1、准备语言包

本例我准备了两种语言包,分别是中文和英文:zn、en。在 lang 下创建两个文件,zn.js 和 en.js。

// zn.js
export default {main:{message:"消息",display:"展示"}
};
// en.js
export default {main:{message:"message",display:"display"}
}

2、准备翻译的语言环境

在 lang 下创建 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、实现语言翻译

在 main.js 中将 i18n 注入 vue 中

import i18n from './lang'
new Vue({el: '#app',router,store,i18n,   // 注入,不能缺少components: { App },template: '<App/>'
})

使用方式

(1)直接使用

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

(2) 语言切换

<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>

(3)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>

首先,明确“msg”的取值有两个,分别为“message”、“display”,此时确保语言包中都存在这两个词与对应的翻译值。

其次,在组件中不能直接 $t('main.message') 使用,该种方式确定了翻译对象,而“msg”的翻译对象不确定,有可能是“message”、“display”甚至更多,于是,我使用了模板字符串,实现了值动态变化自动翻译的效果。

<p>{{$t(`main.${msg}`)}}</p>// 当 msg 为 "message" 时,为 $t('main.message')
// 当 msg 为 "display" 时,为 $t('main.display')

Tips:在使用的过程中,出现了报错情况,将在第四点记录

三、整合 ElementUI 语言包

我们可以整合 ElementUI 中存在的语言包。

1、扩展中文

// zn.js
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'   //引入element语言包
export default {main:{message:"消息",display:"展示"},...zhLocale
};

2、扩展英文

// en.js
import enLocale from 'element-ui/lib/locale/lang/en'   //引入element语言包
export default {main:{message:"message",display:"display"},...enLocale
}

3、使用扩展语言翻译

根据上图(语言包)取可翻译字段。

<p>{{$t('el.colorpicker.confirm')}}</p>// 中文“确定”,英文“OK”

四、问题记录

在使用过程中,中间有如下报错信息。

报错的原因主要是因为当前使用的版本不匹配,解决方案入下。

npm install vue-i18n@8

五、扩展

vue3 中使用 vue-i18n

vue-i18n 在 vue3 中使用方式与 vue2 有些差异。

1、安装

npm install vue-i18n@next -S

2、准备语言环境

import { createI18n } from 'vue-i18n';   // 与vue2的VueI18n使用方式不同
import zn from './zn';
import en from './en';const i18n = createI18n({locale: 'zn',messages: {'zn': zn,'en': en}
});export default i18n;

3、实现语言翻译

// main.js 引入
import i18n from './lang';
App.use(i18n);
// vue3使用方式
import { useI18n } from 'vue-i18n';
setup() {const { locale } = useI18n();// 通过locale.value切换const changeLang = (val) =>{locale.value = val.value;}return {changeLang}}
// 在标签中使用 通过 $t() 或者 t()
<p>{{ $t('main.message') }}</p>
<p>{{ t('main.message') }}</p>

Vue 国际化之 vue-i18n 的使用相关推荐

  1. vue中如何使用i18n实现国际化

    一.前言 在4k广告机中需要实现多语言切换,这时候接触到国际化,前端框架无数,其中几种热门的框架都有相匹配的国际化插件工具.比如: vue + vue-i18n angular + angular-t ...

  2. vue中开发多语言(国际化),vue+i18n(详细教程)

    目录 第一步: 第二步: 第三步: 第四步: 最后: 前言:我们有时候会遇到一个项目需要支持多语言,而用直接翻译的插件时常会导致翻译的结果跟自己预想的有所偏差或者结果太长造成页面结构紊乱而这个时候就需 ...

  3. 使用 vue-i18n 进行Vue国际化处理,使项目切换中英文

    1.下载安装插件 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lan ...

  4. vue国际化(不刷新页面)

    本文介绍Vue如何做国际化,包括 vue-i18n, element ui 等国际化配置,搭配 vuex, localStorage使用,切换语言无需刷新页面. 说在前面的话 项目基于@vue/cli ...

  5. Spring+vue国际化实现

    前后端分离Spring+vue国际化实现 1.适用范围 针对于前后端分离Spring(后端)+VUE(前端)的web型项目.可实现多个语言的切换,后端运用配置语言方式设置默认语言,前端可根据需求自由切 ...

  6. 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法

    前端框架Vue--vue-i18n ,vue项目中如何实现国际化,$t的用法 vue中html页面写入$t('')怎么显示

  7. Vue国际化处理 vue-i18n 以及项目自动切换中英文

    0. 直接上 预览链接 Vue国际化处理 vue-i18n 以及项目自动切换中英文 1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue ...

  8. 【Vue.js】Vue.js中常用的UI组件库和Vue Router

    1.Vue生态中常用的UI组件库 1. vant 介绍 轻量级.可靠的移动端 Vue 组件库 有赞前端团队出品 GitHub地址:https://github.com/youzan/vant 特性 拥 ...

  9. html用vue传递数据,Vue组件及数据传递详解

    本文我们就和大家详细介绍一下Vue系列(三):组件及数据传递.路由.单文件组件.vue-cli脚手架,希望能帮助到大家. 一. 组件component 1. 什么是组件?组件(Component)是 ...

  10. Vue:利用Vue生成的网页,在浏览器中的标签页中的图标与标题怎么修改为自己的?

    Vue:利用Vue生成的网页,在浏览器中的标签页中的图标与标题怎么修改为自己的? 在解决这个问题的时候,在网上搜到了许多答案,可以说是众说纷纭,作者结合了多个答案,最后解决了这个问题,下面把用到的资源 ...

最新文章

  1. 舒工自定义AJAX-lite 1.0实用型极简方法
  2. 使用ajax实现多个查询条件功能以及下拉分页
  3. php循环不出数据,在thinkphp模板中循环数组没有循环出所需要的数据
  4. 【安全牛学习笔记】kali TOP10 安全工具:
  5. 截获android屏幕服务,如何捕获android设备屏幕内容?
  6. 2015年10月13日
  7. c语言实验题——字符串排序,C语言中实现“三个数由小到大排序”的多种方法浅析...
  8. 2018/12/26
  9. 程序员值得思考的问题
  10. 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)
  11. 虚拟文件系统模拟_容器和虚拟机到底有啥区别?
  12. ildasm、ilasm修改、反编译 已经编译的 dll文件(c#)
  13. 架构中的应用-XTT 篇
  14. 为什么局域网IP通常以192.168开头而不是1.2或者193.169?
  15. Android Studio添加常用快捷工具图标
  16. ASM安装和sqlplus管理
  17. PERL常见问题解答--FAQ(4)--Data: Strings
  18. 【2017年第1期】我国大数据征信的挑战及对策
  19. secure CRT脚本命令用于记录屏显日志
  20. python和土木工程_Python 的开发效率真的比 Java高吗?

热门文章

  1. 餐厅怎么引流客户,餐厅引流的方法有哪些
  2. 全面创新:酷我音乐2013年5月14日正式版全面上线,抢先试用
  3. 当初为啥选了前端,却没选后端、算法岗?
  4. TypeScript入门
  5. 在远离手机的120个小时里(四)
  6. 发朋友圈文案被折叠了怎么办?
  7. 做了一个端午节日网页并上线,祝大家端午快乐
  8. linux mkfs 源码,源码安装mkfs.jffs2
  9. java 递归查找,Java程序使用递归查找自然数之和
  10. numpy transpose 和 pytorch transpose