Skip to content

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

代码注释翻译工具

Python Version License

兼容一切使用 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中) 重命名为您喜欢的名称后,将本项目添加至环境变量,方便您随时调用。

配置说明

1. API 凭证

编辑 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。

2. 模型降级链

编辑 config/models.json,按优先级排列,失败时自动切换到下一个:

["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-v4.1-flash"]

模型名必须是您所用平台实际支持的。配错不会报错中止,但会给每条注释白白多花 4 次请求 —— 工具会识别「模型不存在」这类永久错误并立即跳过该模型。

3. 并发与超时

[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 模板。

注意事项

  1. 需要保持网络连接以调用 API
  2. 首次翻译前请确保工程已提交 git 或另有备份。工具会直接改写源文件,虽然只增不改,但仍建议有版本控制兜底
  3. 高并发会增加 API 调用频率,也可能触发平台限流
  4. 部分模型不接受 system 角色,若译文为空请换用其他模型
  5. 已翻译的文件靠首部 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 文件

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages