285 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			285 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # 中文备注转换为英文 - 项目概览
 | ||
| 
 | ||
| ## 📖 项目简介
 | ||
| 
 | ||
| 本项目是一个TypeScript命令行工具,用于自动将代码仓库中的中文注释翻译为英文。通过调用OpenAI API,实现高质量的代码注释翻译,同时保持原有的代码格式和结构。
 | ||
| 
 | ||
| ## 🎯 功能特性
 | ||
| 
 | ||
| - ✅ **智能文件扫描**:自动识别Git仓库中的源码文件
 | ||
| - ✅ **多语言支持**:支持TypeScript、JavaScript、Go、Markdown等文件格式
 | ||
| - ✅ **精确注释解析**:准确定位和提取不同语言的注释内容
 | ||
| - ✅ **高质量翻译**:集成OpenAI API,提供专业的翻译服务
 | ||
| - ✅ **格式保持**:保持原有的缩进、换行和注释结构
 | ||
| - ✅ **安全备份**:自动创建文件备份,支持回滚操作
 | ||
| - ✅ **并发处理**:支持并发翻译,提高处理效率
 | ||
| - ✅ **详细报告**:生成完整的处理报告和统计信息
 | ||
| - ✅ **函数式设计**:采用FP编程范式,代码简洁易维护
 | ||
| 
 | ||
| ## 🚀 快速开始
 | ||
| 
 | ||
| ### 安装依赖
 | ||
| 
 | ||
| ```bash
 | ||
| npm install
 | ||
| ```
 | ||
| 
 | ||
| ### 基本使用
 | ||
| 
 | ||
| ```bash
 | ||
| # 翻译指定目录下的所有支持文件
 | ||
| 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
 | ||
| 
 | ||
| ```bash
 | ||
| # 通过环境变量设置
 | ||
| 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)
 | ||
| - 收集处理过程的统计信息
 | ||
| - 生成详细的处理报告
 | ||
| - 支持多种输出格式
 | ||
| 
 | ||
| ## ⚡ 技术亮点
 | ||
| 
 | ||
| ### 函数式编程范式
 | ||
| 采用纯函数设计和不可变数据结构:
 | ||
| ```typescript
 | ||
| const processRepository = pipe(
 | ||
|   getGitTrackedFiles,
 | ||
|   asyncMap(readFile),
 | ||
|   asyncFilter(hasChineseComments),
 | ||
|   asyncMap(extractChineseComments),
 | ||
|   asyncMap(translateComments),
 | ||
|   asyncMap(applyTranslations),
 | ||
|   generateReport
 | ||
| );
 | ||
| ```
 | ||
| 
 | ||
| ### 性能优化
 | ||
| - **并发控制**:使用Semaphore控制API调用频率
 | ||
| - **缓存机制**:避免重复翻译相同内容
 | ||
| - **增量处理**:仅处理修改过的文件
 | ||
| - **流式处理**:支持大文件分块处理
 | ||
| 
 | ||
| ### 错误处理
 | ||
| - **Result模式**:使用函数式错误处理
 | ||
| - **重试机制**:自动重试失败的API调用
 | ||
| - **部分失败**:支持部分文件失败时继续处理
 | ||
| 
 | ||
| ## 🛠️ 开发指南
 | ||
| 
 | ||
| ### 环境准备
 | ||
| 
 | ||
| 1. **Node.js 环境**:建议使用 Node.js 16+
 | ||
| 2. **TypeScript**:项目使用TypeScript开发
 | ||
| 3. **OpenAI API Key**:需要有效的OpenAI API密钥
 | ||
| 
 | ||
| ### 开发流程
 | ||
| 
 | ||
| 1. **安装依赖**
 | ||
| ```bash
 | ||
| npm install
 | ||
| ```
 | ||
| 
 | ||
| 2. **开发模式运行**
 | ||
| ```bash
 | ||
| npm run dev
 | ||
| ```
 | ||
| 
 | ||
| 3. **运行测试**
 | ||
| ```bash
 | ||
| npm test
 | ||
| ```
 | ||
| 
 | ||
| 4. **构建项目**
 | ||
| ```bash
 | ||
| npm run build
 | ||
| ```
 | ||
| 
 | ||
| ### 贡献指南
 | ||
| 
 | ||
| 1. **Fork 项目**到自己的GitHub账号
 | ||
| 2. **创建功能分支**:`git checkout -b feature/new-feature`
 | ||
| 3. **提交更改**:`git commit -am 'Add new feature'`
 | ||
| 4. **推送分支**:`git push origin feature/new-feature`
 | ||
| 5. **创建 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>`:报告输出文件路径
 | ||
| 
 | ||
| ### 使用示例
 | ||
| 
 | ||
| ```bash
 | ||
| # 基本使用
 | ||
| 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
 | ||
| ```
 | ||
| 
 | ||
| ## 🔍 配置文件
 | ||
| 
 | ||
| 支持使用配置文件来管理默认设置:
 | ||
| 
 | ||
| ```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模式预览翻译结果
 | ||
| 
 | ||
| ### 文件安全
 | ||
| - 默认创建备份文件,避免意外损失
 | ||
| - 建议在版本控制环境下使用
 | ||
| 
 | ||
| ## 🔗 相关文档
 | ||
| 
 | ||
| - [需求文档](./requirements.md) - 详细的功能需求说明
 | ||
| - [实现方案](./implementation-plan.md) - 整体架构和设计方案
 | ||
| - [技术规格](./technical-specification.md) - 详细的技术实现规格
 | ||
| 
 | ||
| ## 📞 问题反馈
 | ||
| 
 | ||
| 如有问题或建议,请通过以下方式联系:
 | ||
| 
 | ||
| - 创建 GitHub Issue
 | ||
| - 提交 Pull Request
 | ||
| - 发送邮件至开发团队
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| **Happy Coding! 🎉**
 |