一键实现全站多语言化:translate.js 极简集成指南,支持Vue 、React 框架。

文章目录

  • [什么是 translate.js?](#什么是 translate.js?)
  • [✨ 核心优势](#✨ 核心优势)
  • [🚀 三分钟快速集成(非npm包集成)](#🚀 三分钟快速集成(非npm包集成))
    • [1. 通过cdn js方式集成](#1. 通过cdn js方式集成)
    • [2. 自定义样式(示例)](#2. 自定义样式(示例))
    • [3. 高级配置项](#3. 高级配置项)
  • [🧩 框架集成方案](#🧩 框架集成方案)
    • [Vue 单文件组件](#Vue 单文件组件)
  • 运行效果
  • [📊 性能优化建议](#📊 性能优化建议)
  • [⚠️ 常见问题解决](#⚠️ 常见问题解决)
  • 总结

什么是 translate.js?

translate.js 是由 zvo.cn 团队开发的轻量级前端翻译库(仅 28KB),支持全站内容实时翻译。它通过智能解析 DOM 结构,结合云端翻译引擎和本地词库混合模式,为网站提供流畅的多语言体验。

官方地址https://translate.zvo.cn/index.html
体验地址https://res.wang.market/translate/demo.html

✨ 核心优势

  • ✅ 支持 100+ 语言实时互译
  • ✅ 智能缓存机制减少重复请求
  • ✅ 自动保留 HTML 标签结构
  • ✅ 支持 Google/DeepL 等多翻译引擎
  • ✅ 免费版提供基础翻译能力(商用建议授权)

🚀 三分钟快速集成(非npm包集成)

1. 通过cdn js方式集成

只需在项目的 index.html 页底部添加如下代码

html 复制代码
<!-- 在页面底部引入 -->
<script src="https://cdn.staticfile.net/translate.js/3.12.0/translate.js"></script>
<script>
    translate.service.use('client.edge')
    translate.language.setDefaultTo('chinese_simplified') //设置默认翻译为的语种
    translate.language.setLocal('chinese_simplified')
    translate.listener.start()
    translate.selectLanguageTag.show = true
     //翻译自定义
      // translate.nomenclature.append(
      //   'chinese_simplified',
      //   'english',
      //   `吾码=WuMa`
      // )
   translate.execute();
</script>

本人集成在 vue3 项目中, index.html 可以在根目录也可以在public目录,完整示例如下:

html 复制代码
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>

    <!-- 全局配置-多语言切换-开始 -->
    <!-- <script src="<%= BASE_URL %>static/translate.js"></script> -->
    <script src="https://cdn.staticfile.net/translate.js/3.12.0/translate.js"></script>
    <script>
      //设置本地语种(当前网页的语种)。如果不设置,默认就是 'chinese_simplified' 简体中文
      // translate.language.setDefaultTo('english') //设置默认翻译为的语种
      // translate.language.setLocal('english')
      translate.service.use('client.edge')
      //翻译自定义
      // translate.nomenclature.append(
      //   'chinese_simplified',
      //   'english',
      //   `吾码=WuMa`
      // )
      //开启html页面变化的监控,对变化部分会进行自动翻译
      translate.listener.start()
      //不显示语言选择标签
      translate.selectLanguageTag.show = true
      //执行翻译初始化操作,显示出select语言选择
      //translate.execute();

      //VUE的渲染需要时间,所以留出一点点时间来进行翻译切换
      document.addEventListener('DOMContentLoaded', function () {
        // //页面 DOM 已渲染完毕,当然最好是能监控到整个vue渲染完毕后触发最好
        translate.execute()
        // //2秒后再一次,避免有遗漏
        // setTimeout(function () {
        //   translate.execute()
        // }, 2000)
      })
    </script>
  </body>
</html>

2. 自定义样式(示例)

css 复制代码
/* 自定义语言切换器样式 */
.translate_selectLanguage_tag {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 9999;
    background: #4a6cf7;
    color: white;
    padding: 8px 15px;
    border-radius: 20px;
    cursor: pointer;
    box-shadow: 0 3px 10px rgba(74, 108, 247, 0.4);
}

3. 高级配置项

javascript 复制代码
translate.setAutoDiscriminateLocalLanguage(); // 自动识别用户语言
translate.ignore.class.push('no-translate'); // 跳过指定 class 元素

// 使用 Google 引擎(需配置代理)
translate.setServiceProvider('google', {
    proxyUrl: 'https://your-proxy-domain.com/translate' 
});

// 自定义词汇映射(覆盖机器翻译)
translate.mapping.addVocabulary({
    "首页": "HomePage", 
    "联系我们": "Contact Us"
});

🧩 框架集成方案

Vue 单文件组件

  1. npm 引用
sh 复制代码
npm install i18n-jsautotranslate
  1. main.js 引用
javascript 复制代码
// main.js
import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'

// import translate from 'i18n-jsautotranslate';

// // 是否显示语言切换栏
// translate.selectLanguageTag.show = true;

// // 监控页面动态渲染的文本进行自动翻译
// translate.listener.start();


const app = createApp(App);
// app.config.globalProperties.$translate = translate;
app.mount('#app');
  1. app页面引用
html 复制代码
// App.vue
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'

import { ref, getCurrentInstance, nextTick } from 'vue'

const instance = getCurrentInstance()
const translate = instance.appContext.config.globalProperties.$translate

const language = ref('en')

function languageAuto() {
  // language.value === 'zh' ? (language.value = 'en') : (language.value = 'zh')
  // localStorage.setItem('language', JSON.stringify({ language: language.value }))

  // if (language.value === 'zh') {
  //   translate.changeLanguage('chinese_simplified')
  // } else {
  //   translate.changeLanguage('english')
  // }
  nextTick(() => {
    translate.execute() // 执行翻译
  })
}

// languageAuto()
</script>

<template>
  <header>
    <img
      alt="Vue logo"
      class="logo"
      src="./assets/logo.svg"
      width="125"
      height="125"
    />

    <div class="wrapper">
      <HelloWorld msg="You did it!" />
    </div>
  </header>

  <main>
    <TheWelcome />
  </main>
</template>

<style scoped>
header {
  line-height: 1.5;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }
}
</style>

运行效果


📊 性能优化建议

  1. 本地缓存加速
    translate.setCache(true); 启用 localStorage 缓存翻译结果

  2. 预加载语言包
    translate.loadLanguage('english'); 用户访问时提前加载

  3. 排除动态内容
    translate.execute(); 在 AJAX 加载后手动执行翻译

  4. CDN 加速

    自托管库文件:<script src="/path/to/local/translate.js">

⚠️ 常见问题解决

Q: 翻译后页面布局错乱?

A: 添加 CSS 规则:[translate] { display: inherit !important; }

Q: 图片内容如何翻译?

A: 使用数据属性方案:

html 复制代码
<img src="about.png" 
     data-translate_attr="src"
     data-chinese_simplified="about_zh.png"
     data-english="about_en.png">

Q: SEO 如何优化?

A: 结合服务端渲染,使用 声明语言

text 复制代码
### 🌟 最佳实践案例
```javascript
// 双语混合模式(专业术语保留英文)
translate.specialTag.setKeepTexts({
    tags: ['h2', 'h3'],  // 标题保留原文
    words: ['API', 'JSON']  // 特定术语保留
});

// 配合 i18n 实现精准控制
if (user.isProfessional) {
    translate.mapping.addVocabulary(professionalTerms); // 导入专业词库
}

// 翻译事件监听
document.addEventListener('translate.onSuccess', (e) => {
    console.log(`已翻译 ${e.detail.total} 个字符`);
});

总结

translate.js 以极低的集成成本解决了网站国际化核心痛点。据官方数据,集成后平均提升:

  • 🌍 海外流量 170%+
  • 📈 用户停留时长 40%+
  • 💰 转化率 25%+

最后提醒:虽然免费版功能强大,但商业项目请遵循授权政策。对于高级需求(如 PDF 翻译、私有化部署),建议联系官方获取企业版支持。

让世界没有语言障碍,translate.js 正在重新定义网站全球化标准! 🌍🚀

相关推荐
超哥--2 小时前
B站视频内容智能分析系统(九):React 前端与管理面板
前端·react.js·前端框架
dsyyyyy11015 小时前
JavaScript变量
开发语言·javascript·ecmascript
kyriewen6 小时前
手写 Promise.all、race、any:不到 30 行代码,解决并发异步的所有姿势
前端·javascript·面试
胡志辉的博客7 小时前
深入浅出理解浏览器事件循环:从一道输出题讲到 Chrome 源码
前端·javascript·chrome·chromium·event loop
代码不加糖7 小时前
js中不会冒泡的事件有哪些?
前端·javascript·vue.js
懂懂tty8 小时前
Vue2与Vue3之间API差异
前端·javascript·vue.js
老毛肚8 小时前
软件测试期末考试
vue.js
小二·8 小时前
Next.js 15 全栈开发实战
开发语言·javascript·ecmascript
杨若瑜9 小时前
本地开发环境慢?localhost的锅!
vue.js
Rain5099 小时前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js