|
|
||
|---|---|---|
| .. | ||
| cli | ||
| example | ||
| modules | ||
| types | ||
| utils | ||
| volc | ||
| README.md | ||
| implementation-plan.md | ||
| index.ts | ||
| requirements.md | ||
| technical-specification.md | ||
README.md
中文备注转换为英文 - 项目概览
📖 项目简介
本项目是一个TypeScript命令行工具,用于自动将代码仓库中的中文注释翻译为英文。通过调用OpenAI API,实现高质量的代码注释翻译,同时保持原有的代码格式和结构。
🎯 功能特性
- ✅ 智能文件扫描:自动识别Git仓库中的源码文件
- ✅ 多语言支持:支持TypeScript、JavaScript、Go、Markdown等文件格式
- ✅ 精确注释解析:准确定位和提取不同语言的注释内容
- ✅ 高质量翻译:集成OpenAI API,提供专业的翻译服务
- ✅ 格式保持:保持原有的缩进、换行和注释结构
- ✅ 安全备份:自动创建文件备份,支持回滚操作
- ✅ 并发处理:支持并发翻译,提高处理效率
- ✅ 详细报告:生成完整的处理报告和统计信息
- ✅ 函数式设计:采用FP编程范式,代码简洁易维护
🚀 快速开始
安装依赖
npm install
基本使用
# 翻译指定目录下的所有支持文件
ai-translate --root ./src
# 指定文件扩展名
ai-translate --root ./src --exts ts,js,go
# 仅分析不修改(预览模式)
ai-translate --root ./src --dry-run
# 详细输出模式
ai-translate --root ./src --verbose
配置OpenAI API
# 通过环境变量设置
export OPENAI_API_KEY=your-api-key
# 或通过命令行参数
ai-translate --root ./src --openai-key your-api-key
📁 项目结构
src/convert-comments/
├── 📄 requirements.md # 需求文档
├── 📄 implementation-plan.md # 实现方案
├── 📄 technical-specification.md # 技术规格
├── 📄 README.md # 项目概览(本文件)
├── 📦 index.ts # 主入口文件
├── 🗂️ cli/ # 命令行接口
│ ├── command.ts # Commander.js命令定义
│ └── config.ts # 配置管理
├── 🗂️ modules/ # 核心功能模块
│ ├── file-scan.ts # 文件扫描模块
│ ├── chinese-detection.ts # 中文检测模块
│ ├── translation.ts # 翻译服务模块
│ ├── file-replacement.ts # 文件替换模块
│ └── report.ts # 报告生成模块
├── 🗂️ utils/ # 工具函数
│ ├── git.ts # Git操作工具
│ ├── language.ts # 编程语言识别
│ ├── chinese.ts # 中文字符检测
│ └── fp.ts # 函数式编程工具
├── 🗂️ types/ # TypeScript类型定义
│ ├── index.ts # 主要类型定义
│ └── config.ts # 配置类型
└── 🗂️ __tests__/ # 测试文件
├── unit/ # 单元测试
└── integration/ # 集成测试
🔧 核心模块
1. 文件扫描模块 (FileScanModule)
- 调用Git命令获取仓库文件列表
- 根据扩展名过滤目标文件
- 识别编程语言类型
2. 中文检测模块 (ChineseDetectionModule)
- 解析不同语言的注释语法
- 识别包含中文字符的注释
- 提取注释的精确位置信息
3. 翻译服务模块 (TranslationModule)
- 调用OpenAI API进行翻译
- 处理翻译错误和重试机制
- 优化翻译提示词和上下文
4. 文件替换模块 (FileReplacementModule)
- 精确替换文件中的中文注释
- 保持代码格式和缩进
- 实现备份和回滚机制
5. 报告生成模块 (ReportModule)
- 收集处理过程的统计信息
- 生成详细的处理报告
- 支持多种输出格式
⚡ 技术亮点
函数式编程范式
采用纯函数设计和不可变数据结构:
const processRepository = pipe(
getGitTrackedFiles,
asyncMap(readFile),
asyncFilter(hasChineseComments),
asyncMap(extractChineseComments),
asyncMap(translateComments),
asyncMap(applyTranslations),
generateReport
);
性能优化
- 并发控制:使用Semaphore控制API调用频率
- 缓存机制:避免重复翻译相同内容
- 增量处理:仅处理修改过的文件
- 流式处理:支持大文件分块处理
错误处理
- Result模式:使用函数式错误处理
- 重试机制:自动重试失败的API调用
- 部分失败:支持部分文件失败时继续处理
🛠️ 开发指南
环境准备
- Node.js 环境:建议使用 Node.js 16+
- TypeScript:项目使用TypeScript开发
- OpenAI API Key:需要有效的OpenAI API密钥
开发流程
- 安装依赖
npm install
- 开发模式运行
npm run dev
- 运行测试
npm test
- 构建项目
npm run build
贡献指南
- Fork 项目到自己的GitHub账号
- 创建功能分支:
git checkout -b feature/new-feature - 提交更改:
git commit -am 'Add new feature' - 推送分支:
git push origin feature/new-feature - 创建 Pull Request
代码规范
- TypeScript严格模式:启用所有严格类型检查
- ESLint规则:遵循项目ESLint配置
- Prettier格式化:保持代码格式一致
- 单元测试:新功能需要对应的单元测试
📋 命令行参数
必需参数
--root, -r <directory>:需要处理的根目录
可选参数
--exts, -e <extensions>:文件扩展名,如 "ts,js,go,md"--openai-key <key>:OpenAI API密钥--model <model>:OpenAI模型名称(默认:gpt-3.5-turbo)--dry-run:仅分析不实际修改文件--backup:创建文件备份(默认启用)--verbose, -v:详细输出模式--output <file>:报告输出文件路径
使用示例
# 基本使用
ai-translate --root ./src --exts ts,js
# 预览模式(不修改文件)
ai-translate --root ./src --dry-run --verbose
# 使用GPT-4模型
ai-translate --root ./src --model gpt-4
# 生成JSON格式报告
ai-translate --root ./src --output report.json
🔍 配置文件
支持使用配置文件来管理默认设置:
{
"translation": {
"model": "gpt-3.5-turbo",
"maxRetries": 3,
"timeout": 30000,
"concurrency": 3
},
"processing": {
"defaultExtensions": ["ts", "js", "go", "md"],
"createBackup": true,
"outputFormat": "console"
},
"git": {
"ignorePatterns": ["node_modules/**", ".git/**", "dist/**"],
"includeUntracked": false
}
}
📊 输出报告
处理完成后会生成详细的统计报告:
📊 翻译处理报告
==================
总文件数: 45
处理成功: 42
跳过文件: 3
翻译注释: 128
错误数量: 0
处理时间: 45.32秒
✅ 处理完成,无错误
⚠️ 注意事项
API限制
- OpenAI API有调用频率限制,建议合理设置并发数量
- 长时间运行可能消耗较多API配额
翻译质量
- 自动翻译可能不够准确,建议人工审核重要注释
- 提供dry-run模式预览翻译结果
文件安全
- 默认创建备份文件,避免意外损失
- 建议在版本控制环境下使用
🔗 相关文档
📞 问题反馈
如有问题或建议,请通过以下方式联系:
- 创建 GitHub Issue
- 提交 Pull Request
- 发送邮件至开发团队
Happy Coding! 🎉