借助AI的能力,自动化 翻译Mediawiki条目的流程。
Important
你使用该工具生成的内容由你负责。向站点提交内容前,不要忘了严格审校这些内容!
Important
你使用该工具生成的内容由你负责。向站点提交内容前,不要忘了严格审校这些内容!
Important
你使用该工具生成的内容由你负责。向站点提交内容前,不要忘了严格审校这些内容!
因作者能力有限,暂时只有cli版可用
- 我们使用uv管理本项目包括python本身在内的依赖,若你没有uv,请先下载安装uv
- clone本项目,cd到本项目
- 在
config.toml
中改配置;你可以直接使用默认配置为 archwikicn 站点生成安装指南
条目的翻译。 - 去 deepseek开放平台 那边获取 API key,
export OPENAI_API_KEY=your-api-key-here
uv run cli.py
即可运行cli版本- 翻译结果输出到
output/latestB
-
一些简写
- oldA 旧版英文文档
- latestA 最新英文文档
- oldB 旧版中文文档
- latestB 最新中文文档(本项目要生成的)
-
使用
src/connector
拉取 oldA, oldB, latestA
- 拆分块:
- 基于 oldA oldB,使用
src/alignment
切分文档,获得oldA 中的文段 <=> oldB 中对应的文段
对 - 使用
src/alignment
切分 latestA
- 处理块: 使用SequenceMatcher比较新旧文档的TOC结构,遍历差异操作:
- equal: 调用AI生成最新翻译,替换对应块
- insert: 插入新块并调用AI生成翻译
- delete: 删除对应块
- replace: 调用AI生成最新翻译,替换对应块
3.1. 应用差异: 根据diff结果调用apply_diff函数处理每个差异操作,生成最新翻译
- 把块块们合并: 从修改后的 旧原文译文对 获取译文全文,使用
src/connector
对文本进行平台相关处理,最后得到 latestB
AI一次能获取到更多的信息,感觉更准确
不值得为原文变更极少的条目使用(token会浪费在没变更的地方)
很长的文章会超AI服务商的token限制导致latestB输出不完整
- 从 oldA 、 latestA 生成diff信息
- 把 diff信息、oldB全文 直接给AI,AI返回 latestB
src/connector/mediawiki.py
pywikibot 套壳
src/alignment/wikitext.py
基于章节的分块
cli.py
先使用 块的ID信息 做 diff 来检测块级别的变更,再以块为单位做diff检测文本层面的变更
- 基于AI的diff检测