赞
踩
建议 translate.js 配合 i18 使用
本文只介绍 translate.js 的引入和使用方式
无论什么库 在翻译上 都不会做到 ( 100%翻译 && 100%准确 ) 吹毛求疵绕路
官方文档:translate.js 前端翻译
npm i i18n-jsautotranslate
在main.js内
- import translate from 'i18n-jsautotranslate'
- translate.setUseVersion2() //设置使用v2.x 版本
- translate.selectLanguageTag.show = false //是否显示切换栏
- translate.listener.start() //监控页面动态渲染的文本进行自动翻译
- Vue.prototype.$translate = translate
只保留关键代码
大体逻辑是在 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() //进行翻译
- },
在请求接口数据返回选然后 或者 路由切换后
会出现一半原始语种 一半翻译语种的情况
此时可以在请求拦截器的相应拦截 和 路由后置守卫里添加
this.$translate.execute() //进行翻译
vue 报错的情况下可以如下操作
- import Vue from 'vue'
-
-
-
- let vm = new Vue()
- vm.$nextTick(() => {
- vm.$translate.execute()
- })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。