Vue 国际化自动翻译工具 vue-translate-auto

📖 前言

在 Vue 项目开发中,国际化(i18n)是一个绕不开的话题。传统的国际化方案需要手动维护多语言文件,不仅工作量大,而且容易出错。今天给大家介绍一个我开发的 Vue 国际化自动翻译工具 —— vue-translate-auto,它能够自动提取代码中的翻译字符串并生成多语言文件,大大提升开发效率!

🌟 工具简介

vue-translate-auto 是一个专为 Vue 项目设计的国际化自动翻译工具,支持自动提取 $t()、t()、this.$t() 等翻译函数包裹的字符串,并能够自动翻译成多种语言。

✨ 核心特性

🔍 智能提取

  • 自动识别多种翻译函数格式
  • 支持 $t('key')、t('key')、this.$t('key') 等
  • 可配置提取关键词,灵活适配不同项目

�� 多语言支持

  • 完全支持: 英语、日语、韩语、简体中文
  • 部分支持: 法语、德语、西班牙语、俄语
  • 支持自定义语言配置

📈 增量翻译

  • 智能检测已有翻译和新词汇
  • 只翻译新增内容,保留已有翻译
  • 大幅提升重复运行效率

�� 多种翻译API

  • 有道翻译 ⭐⭐⭐⭐⭐ (推荐,质量最高)
  • Google翻译 ⭐⭐⭐⭐ (免费,无需密钥)
  • ⚡ 高性能

  • 智能重试机制,确保翻译成功率
  • 指数退避策略,避免API限制
  • 实时进度显示和详细统计

🚀 快速开始

1. 安装依赖

npm install -D vue-translate-auto
# 或者
yarn add -D vue-translate-auto

2. 创建配置文件

在项目根目录创建 vue-translate-config.json 文件:

{
  "targetPath": "src/lang.json",
  "filePath": "src",
  "fileSuffix": [".vue", ".js", ".jsx", ".ts", ".tsx"],
  "excludes": ["node_modules", "dist"],
  "extractKeywords": ["$t", "t", "this.$t", "this.t"],
  "translation": {
    "enabled": true,
    "targetLanguages": ["en", "ja", "ko", "zh-CN"],
    "sourceLanguage": "zh-CN",
    "outputDir": "src/langs",
    "api": {
      "provider": "youdao",
      "apiKey": "your-api-key",
      "apiSecret": "your-api-secret"
    }
  }
}

3. 运行翻译

# 启用翻译功能
npx vue-translate-auto

# 或者禁用翻译,只提取词汇
# 在配置中设置 "enabled": false

�� 使用示例

Vue 组件示例

<template>
  <div>
    <h1>{{ $t('welcome') }}</h1>
    <p>{{ $t('description') }}</p>
    <button>{{ $t('submit') }}</button>
  </div>
</template>

<script>
export default {
  name: 'TestComponent',
  methods: {
    showMessage() {
      console.log(this.$t('message'))
    }
  }
}
</script>

JavaScript 文件示例

// utils/message.js
export const showMessage = (type, key) => {
  const message = this.$t(key)
  this.$message[type](message)
}

export const getButtonText = (action) => {
  return this.$t(`button.${action}`)
}

📁 输出文件结构

运行工具后,会生成以下文件结构:

src/
├── lang.json          # 词汇提取文件(翻译功能禁用时)
└── langs/             # 翻译文件目录(翻译功能启用时)
    ├── zh-CN.json     # 源语言(中文)
    ├── en.json        # 英语翻译
    ├── ja.json        # 日语翻译
    ├── ko.json        # 韩语翻译
    ├── fr.json        # 法语翻译
    └── de.json        # 德语翻译

文件内容示例

zh-CN.json (源语言)

{
  "welcome": "欢迎",
  "description": "描述",
  "submit": "提交",
  "message": "消息"
}

en.json (英语翻译)

{
  "welcome": "welcome",
  "description": "description",
  "submit": "submit",
  "message": "message"
}

⚙️ 配置详解

核心配置

配置项说明默认值
targetPath词汇提取文件输出路径src/lang.json
filePath需要扫描的源代码目录src
fileSuffix支持的文件扩展名[".vue", ".js", ".jsx", ".ts", ".tsx"]
excludes排除的目录列表["node_modules", "dist"]
extractKeywords需要提取的翻译函数关键字["$t", "t", "this.$t"]

翻译配置

配置项说明默认值
enabled是否启用翻译功能false
targetLanguages目标语言列表["en", "ja", "ko", "zh-CN"]
sourceLanguage源语言(提取的字符串语言)zh-CN
outputDir翻译文件输出目录src/langs
api.provider翻译服务提供商youdao

�� 高级功能

增量翻译

工具支持增量翻译,只翻译新增的词汇,保留已有翻译:

# 第一次运行:翻译所有词汇
npx vue-translate-auto

# 添加新词汇后再次运行:只翻译新增内容
npx vue-translate-auto

智能重试

内置智能重试机制,自动处理网络错误和API限制:

  • 最大重试次数:8次
  • 指数退避策略:基础延迟3秒,最大30秒
  • 自动重试失败的翻译请求

进度显示

实时显示翻译进度和统计信息:

🚀 开始翻译到 en 语言
📊 总计需要翻译: 15 个词汇
[██████████████████████████████] 100.0% (15/15) ✓ 完成

�� en 语言翻译完成!
📊 最终统计:
   • 总词汇数: 15
   • 成功翻译: 15
   • 失败词汇: 0
   • 成功率: 100.0%
   • 总耗时: 8.2秒

�� 贡献与反馈

如果你在使用过程中遇到问题或有改进建议,欢迎:

  • 提交 Issue:gitee.com/D5498543/vue-translate-auto/issues
  • 贡献代码:Fork 项目并提交 Pull Request
  • 联系作者:
  • QQ: 2636530781
  • Email: 2636530781@qq.com
  • Gitee: @D5498543
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值