位置: IT常识 - 正文

Vue 国际化之 vue-i18n 的使用(vue国际化占位符)

编辑:rootadmin
Vue 国际化之 vue-i18n 的使用

目录

一、安装

二、使用

1、准备语言包

2、准备翻译的语言环境

3、实现语言翻译

三、整合 ElementUI 语言包

1、扩展中文

2、扩展英文 

3、使用扩展语言翻译

四、问题记录

五、扩展

vue3 中使用 vue-i18n


一、安装npm install vue-i18n

推荐整理分享Vue 国际化之 vue-i18n 的使用(vue国际化占位符),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue项目国际化,vue 国际化方案,vue gui,ant design vue 国际化,vue国际化解决方案,vue i18n国际化,vue i18n国际化,vue 国际化方案,内容如对您有帮助,希望把文章链接给更多的朋友!

如果在一个模块系统中使用它,你必须通过 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.jsexport default { main:{ message:"消息", display:"展示" }};// en.jsexport 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 i18n3、实现语言翻译

在 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 中变量,即可能存在多个值,此时又该如何进行语言翻译?

Vue 国际化之 vue-i18n 的使用(vue国际化占位符)

如下,“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.jsimport zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入element语言包export default { main:{ message:"消息", display:"展示" }, ...zhLocale};2、扩展英文 // en.jsimport 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>
本文链接地址:https://www.jiuchutong.com/zhishi/300222.html 转载请保留说明!

上一篇:《网络安全入门到精通》- 3.1 - 数据库 - MySQL数据库(《网络安全从入门到精通》)

下一篇:解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题?(vue3 $bus)

  • 动态市盈率与静态市盈率区别百度百科
  • 高新企业享受税收优惠政策备案怎么申请
  • 城建税及教育费附加怎么计算
  • 市政道路工程建筑包括什么
  • 增值税申报表在哪里打印
  • 房地产开发企业预收款预缴增值税
  • 企业收购资金计算公式
  • 转让金融商品的会计分录
  • 企业想成为退税商店需具备哪些条件
  • 商场做促销
  • 向公司一般户的银行借款怎么做账?
  • 代扣代缴的增值税怎么做账
  • 法人的往来款可以转为实收资本吗?
  • 结转已完工产品会计分录
  • 异地经营需要办什么税务手续?
  • 捐助建学校
  • 详解非税收入
  • 无票申报后开发票怎么申报
  • 母公司拨款给子公司的账务处理
  • 购销合同印花税2023年新规定
  • 当月计提当月缴纳的增值税还用结转吗
  • 印花税的购销合同改成买卖合同了吗?
  • 税务局开的专票可以抵扣吗
  • 路由器怎么重置网络
  • 无发票 入账
  • 文化事业建设费2023年是否减免了
  • 存量资金上缴国库是哪个文件规定了
  • 先入费用后来发票怎么做账
  • php strrpos函数
  • 客户尾款不付会计分录
  • 存货 计价
  • 路由器怎么设置2.4g网络
  • oracle win10
  • php addslashes函数
  • php自动执行函数
  • 企业为员工购买
  • 减免增值税会计处理
  • 主营业务成本入账分录
  • php 注入
  • 应收票据包括哪些项目内容
  • 员工辞退补偿金扣个税吗
  • 仓库折旧会计分录
  • 如何进行会计制度改革
  • 跨月更正申报会扣信用分么
  • mysql和sqlserver的sql语句一样吗
  • mysql的lsn
  • 土地摊销计入成本还是费用
  • 工会经费到底是什么
  • 固定资产改造的配件怎么入账
  • 残疾人就业保障金怎么计算
  • 短期借款可以用于在建工程吗
  • 企业收到个体户的普通发票还需要缴纳20%的税吗
  • 个税异地缴纳后果
  • 合伙企业一般纳税人六税两费
  • 红冲暂估原材料如何做会计分录
  • 工程检测单位
  • 房地产企业帐套设置
  • 长期待摊费用的最新账务处理
  • 公司注销退回投资款如何账务处理
  • 咨询企业发生的费用计入
  • 所有者权益变动表图片
  • 增值税留抵退税申请流程
  • 农行网银只有一张卡吗
  • 会务费所需要注意的细节
  • 工业企业应通过其他应付款科目核算的有
  • mysql怎么使用索引
  • mysql5.7.17下载
  • 注册表出错打不开程序
  • centos7怎么查看磁盘空间
  • freebsd11.3安装教程
  • Win10预览版怎么变回正式版
  • window mobile系统
  • win7电脑关机出现0xc0000142是什么原因
  • nodejs与springboot结合
  • python算法具有哪五个性质
  • jquery 使用
  • 批处理模式的例子
  • js移动到指定位置
  • 使用jQuery Rotare实现微信大转盘抽奖功能
  • 国家税务局发票验证查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设