# vue-translate-auto

🚀 **Vue 国际化自动翻译工具** - 自动提取 `$t` 包裹的字符串并生成多语言文件，支持增量翻译和多种翻译API

[![npm version](https://badge.fury.io/js/vue-translate-auto.svg)](https://badge.fury.io/js/vue-translate-auto)
[![license](https://img.shields.io/npm/l/vue-translate-auto.svg)](https://gitee.com/D5498543/vue-translate-auto/blob/main/LICENSE)

## ✨ 特性

- 🔍 **智能提取**：自动识别 `$t()`、`t()`、`this.$t()` 等翻译函数
- 🌍 **多语言支持**：支持英语、日语、韩语等多种语言
- 📈 **增量翻译**：只翻译新增词汇，保留已有翻译
- 🔄 **多种API**：支持有道翻译、Google翻译、百度翻译
- ⚡ **高性能**：智能重试机制，确保翻译成功率
- 🎯 **配置灵活**：支持自定义提取关键词和翻译参数

## 📦 安装

```bash
npm install -D vue-translate-auto
```

或者

```bash
yarn add -D vue-translate-auto
```

## 🚀 快速开始

### 1. 创建配置文件

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

```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"
    }
  }
}
```

### 2. 运行翻译

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

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

## ⚙️ 配置说明

### 核心配置

- `targetPath`: 词汇提取文件输出路径（当翻译功能禁用时）
- `filePath`: 需要扫描的源代码目录
- `fileSuffix`: 支持的文件扩展名
- `excludes`: 排除的目录列表
- `extractKeywords`: 需要提取的翻译函数关键字

### 翻译配置

- `enabled`: 是否启用翻译功能
- `targetLanguages`: 目标语言列表
- `sourceLanguage`: 源语言（提取的字符串语言）
- `outputDir`: 翻译文件输出目录
- `api`: 翻译服务配置

### 关键字提取示例

配置 `["$t", "t", "this.$t"]` 会提取以下格式的字符串：

```javascript
// 模板中的使用
$t('welcome.message')
t('button.submit')
this.$t('form.title')

// JavaScript 中的使用
const message = this.$t('notification.success')
const label = t('field.name')
```

## 🌍 翻译功能

### 支持的语言

| 语言代码 | 语言名称 | 支持状态 |
|----------|----------|----------|
| `en` | 英语 | ✅ 完全支持 |
| `ja` | 日语 | ✅ 完全支持 |
| `ko` | 韩语 | ✅ 完全支持 |
| `zh-CN` | 简体中文 | ✅ 完全支持 |
| `fr` | 法语 | 🔄 部分支持 |
| `de` | 德语 | 🔄 部分支持 |
| `es` | 西班牙语 | 🔄 部分支持 |
| `ru` | 俄语 | 🔄 部分支持 |

### 翻译服务

| 服务商 | 特点 | API密钥 | 推荐度 |
|--------|------|----------|--------|
| **有道翻译** | 翻译质量高，支持语言多 | 需要 | ⭐⭐⭐⭐⭐ |
| **Google翻译** | 免费，无需密钥 | 无需 | ⭐⭐⭐⭐ |
| **百度翻译** | 中文翻译质量好 | 需要 | ⭐⭐⭐ |

### 增量翻译

- 🚀 **智能检测**：自动识别已有翻译和新词汇
- 💾 **内容保护**：保留所有已有翻译，永不覆盖
- ⚡ **性能提升**：只翻译新增内容，大幅减少等待时间

### 输出文件结构

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

### 文件内容示例

**zh-CN.json (源语言)**
```json
{
  "welcome": "欢迎",
  "login": "登录",
  "register": "注册"
}
```

**en.json (英语翻译)**
```json
{
  "welcome": "Welcome",
  "login": "Login",
  "register": "Register"
}
```

## 🚀 使用方法

### 命令行执行

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

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

### 执行流程

#### 翻译功能启用时：
1. 🔍 扫描指定目录下的源代码文件
2. 📝 提取所有翻译函数包裹的字符串
3. 🌍 自动翻译成配置的目标语言
4. 💾 在 `outputDir` 目录下生成各语言的JSON文件
5. 📊 显示详细的翻译统计和进度

#### 翻译功能禁用时：
1. 🔍 扫描指定目录下的源代码文件
2. 📝 提取所有翻译函数包裹的字符串
3. 💾 生成词汇提取文件到 `targetPath`
4. 📊 显示提取统计信息

## 📊 性能特性

- ⚡ **智能重试**：自动重试失败的翻译请求
- 🕐 **指数退避**：智能延迟策略，避免API限制
- 📈 **进度显示**：实时进度条和详细统计信息
- 💾 **缓存机制**：避免重复翻译相同内容
- 🔄 **增量更新**：只处理新增内容，大幅提升效率

## 📝 更新日志

### v2.0.1
- ✨ 新增增量翻译功能
- 🚀 优化翻译性能，支持智能重试
- 📊 改进进度显示和统计信息
- 🎯 支持禁用翻译功能，仅提取词汇

### v1.0.7
- 🎉 初始版本发布
- 🔍 支持多种翻译函数提取
- 🌍 集成多种翻译API服务

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

## 📄 许可证

本项目基于 [ISC License](LICENSE) 开源。

## 📞 联系作者

如有问题或建议，请备注来意，谢谢！

- **QQ**: 2636530781
- **Email**: 2636530781@qq.com
- **Gitee**: [@D5498543](https://gitee.com/D5498543)
