Vue项目引入translate.js 国际化自动翻译组件

建议 translate.js 配合 i18 使用

本文只介绍 translate.js 的引入和使用方式

无论什么库  在翻译上 都不会做到 ( 100%翻译  && 100%准确 ) 吹毛求疵绕路

官方文档:translate.js 前端翻译

该组件优点:

  • 自动翻译 自动匹配本地语种
  • 利于SEO 对搜索引擎友好
  • 使用简单 直接引入使用即可
  • 瞬时翻译 使用了缓存预加载

该组件缺点

  • 正因为利于SEO 假设中译英 获取DOM节点的时候还是中文
  • DOM不刷新 DOM内容刷新时 不会自动翻译 所以最好配合 i18 使用

1. 安装

npm i i18n-jsautotranslate

2. 引入

在main.js内

import translate from 'i18n-jsautotranslate'
translate.setUseVersion2() //设置使用v2.x 版本
translate.selectLanguageTag.show = false //是否显示切换栏
translate.listener.start() //监控页面动态渲染的文本进行自动翻译
Vue.prototype.$translate = translate

3. 使用

只保留关键代码 

大体逻辑是在 localStorage 里存入一个 val  根据这个 val 去判断要切换的语种

<div @click="languageAuto()"> 一键翻译 </div>



data() {
  return {
    language: zh,
  }
},


// 翻译
languageAuto() {
  this.language == 'zh' ? (this.language = 'en') : (this.language = 'zh')
  localStorage.setItem('language', `{"language":"${this.language}"}`)
  if (this.language == 'zh') {
    console.log('转为中文')
    this.$translate.changeLanguage('chinese_simplified')
  }
  if (this.language == 'en') {
    console.log('转为英文')
    this.$translate.changeLanguage('english')
  }
  this.$translate.execute() //进行翻译
},

4.备注

在请求接口数据返回选然后  或者  路由切换后

会出现一半原始语种  一半翻译语种的情况

此时可以在请求拦截器的相应拦截 和 路由后置守卫里添加

this.$translate.execute() //进行翻译

vue 报错的情况下可以如下操作

import Vue from 'vue'



let vm = new Vue()
vm.$nextTick(() => {
   vm.$translate.execute()
})

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值