兼容一切使用 OpenAI 式输出的模型平台的代码注释翻译工具,自动将代码中的英文注释转换为中文,并插入到原注释下方。
该工具会读取目标目录下所有文件的所有注释,交由 AI 翻译后写回文件。只增不改:原始代码行一个字节都不会动,译文以独立注释行插入在原注释下方。
- 支持 Python / C / C++ / Java / JavaScript / TypeScript 文件
- 多进程并发处理,默认 2 进程(见下方「并发怎么调」)
- 智能跳过:已翻译文件、许可证声明、版权行、纯链接等不翻译
- 保留原始编码:GBK/Latin-1 等文件不会被转成 UTF-8
- 幂等:重复运行不会重复翻译
- 自动管理虚拟环境和依赖
- 单条注释翻译失败时保持文件原样,可稍后重跑
# 克隆项目
git clone https://github.com/JianFeeeee/Transcomment.git
cd Transcomment
# 首次运行会自动创建虚拟环境并安装依赖
./run.sh [目标文件或目录]Windows 用户:
.\run.bat [目标文件或目录]不传参数则交互式询问目标目录。目标可以是单个文件,也可以是整个目录(递归处理)。
如果您喜欢,也可以将 run.bat(windows中)/run.sh(linux中) 重命名为您喜欢的名称后,将本项目添加至环境变量,方便您随时调用。
编辑 config/config.ini(可参考 config/config.example.ini):
[API]
apikey = 您使用的平台的API密钥
apiurl = 您使用平台的url或使用环境变量(优先级更高,便于避免在仓库里明文保存密钥):
export TRANSCOMMENT_API_KEY=sk-xxxx
export TRANSCOMMENT_API_URL=https://api.example.com/v1也兼容 OPENAI_API_KEY / OPENAI_BASE_URL。
编辑 config/models.json,按优先级排列,失败时自动切换到下一个:
["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-v4.1-flash"]模型名必须是您所用平台实际支持的。配错不会报错中止,但会给每条注释白白多花 4 次请求 —— 工具会识别「模型不存在」这类永久错误并立即跳过该模型。
[MAXPROCESS]
max = 2 # 并发进程数
timeout = 300 # 单个文件的处理上限(秒),超时跳过该文件并发怎么调:原版文档建议 30-90,但那是针对 SiliconFlow 独立部署的。实测公共聚合网关通常只能承受 3-5 并发,超过就会大面积返回 502 / blocked by WAF。建议:
- 官方 API(OpenAI / DeepSeek 官方):可调到 8-16
- 聚合网关(one-api / router 类):2-4
- 不确定时:先用默认值跑,观察日志里的错误率再调
timeout 是安全阀:某个文件因网络问题卡死时,超过该秒数会被强制跳过,不影响其余文件。
翻译:
// Listen to new devices on the network
// 监听网络上出现的新设备
/* Retry a few times before giving up
* @param n the retry count
*/自动跳过(保持原样):
| 类型 | 原因 |
|---|---|
文件前 50 行含 Translated by AI |
已翻译过 |
SPDX-License-Identifier / SPDX-FileCopyrightText |
许可证标识符被 REUSE 工具机读,改动会导致合规扫描失败 |
Copyright (c) 2020 ... |
版权声明 |
| 纯 URL 链接 | 翻译后即失效 |
# -*- coding: utf-8 -*- |
编码声明必须在首行 |
空的 // / //---- 分隔线 |
没有可翻译内容 |
| 三引号字符串(非独立成行的) | 是字符串字面量,不是注释 |
此外,工具能正确识别 # 在字符串内的情形,不会破坏 url = "http://a#b" 或多行 SQL 模板。
- 需要保持网络连接以调用 API
- 首次翻译前请确保工程已提交 git 或另有备份。工具会直接改写源文件,虽然只增不改,但仍建议有版本控制兜底
- 高并发会增加 API 调用频率,也可能触发平台限流
- 部分模型不接受
system角色,若译文为空请换用其他模型 - 已翻译的文件靠首部
Translated by AI标记识别,如需重新翻译请先删除该标记
如果您喜欢本项目,可以给本项目点个 star。
若想要实现任意语言到任意语言的翻译,仅需修改 src/translate_comments.py 中的提示词常量:
SYSTEM_PROMPT = (
"你是一个翻译家,你要为接下来的所有输入给出对应的中文翻译,"
"注意保留原有的符号,同时注意保留原有的空格换行等,"
"注意不要给出解释只给出翻译即可"
)改成英文、日文或任意目标语言即可,模型列表和降级逻辑无需改动。
想扩展支持更多语言(如 .rs、.go、.kt、.swift)时,在 translate_comments.py 顶部的 PY_SUFFIXES / C_SUFFIXES 里加后缀,并在 run.py 的同名常量中同步添加,然后按该语言补充注释提取函数即可。
MIT 许可证 - 详见 LICENSE 文件