vue 或 js 使用谷歌翻译实现国际化

问题

一般没有适配国际化的页面 我们会使用谷歌翻译插件进行翻译。 但由于使用浏览器中的谷歌翻译插件 会导致dom的结构发生改变,从而导致 vue react与dom操作绑定关系失效!这样就无法触发跳转路由等操作。 下面的方法可以使得我们即使用谷歌翻译 又不会导致dom结构发生改变 兼容vue react(把vue代码改写一下)框架。

效果

hhh-google-translate v-google-translate

注意

由于这种方法是需要下载谷歌的js文件及请求谷歌翻译api的,所以需要科学上网才行。 而且选择语言时,切换语言最好先切换为源语言,再切换翻译语言,不然谷歌翻译会翻译错乱。

代码

hhh-google-translate 组件

这是我参考 写的。 以后可能放置到npm上 这样比较方便

使用

// 如果想全局先引入 谷歌的element.js文件 请在 index.html 添加以下script
//index.html
  <div id="app"></div>
  <script async src="//translate.google.cn/translate_a/element.js?cb=googleTranslateElementInit"></script>

//使用
<hhh-google-translate />

v-google-translate 组件

yarn add v-google-translate
npm i v-google-translate

使用

// main.js
import vGoogleTranslate from "v-google-translate";
Vue.use(vGoogleTranslate);

// xxx.vue
<template>
  <div>
  <v-google-translate />
  <div>
</template>

不过使用 npm 安装 可能会报错

gyp ERR! find Python 
gyp ERR! find VS msvs_version not set from command line or npm config

缺少python 环境 缺少c++环境 如果报错建议去github下载源码 具体参考

这两个组件都可以通过 添加 notranslate 类名,这样谷歌翻译将不会翻译该元素内文字

<a :href="href" class="navbar-brand  notranslate">不翻译的字</a>
经验分享 程序员 微信小程序 职场和发展