
前段时间,一位做翻译的朋友跟我吐槽,说现在市面上的翻译工具五花八门,但真正好用的小说翻译工具却寥寥无几。
他说自己翻译一本几百页的英文小说,光是处理格式、术语一致性就够头疼的,更别说还要应对各种编码问题和排版错乱。
确实,翻译长篇小说和普通文本完全是两码事。小说有复杂的情节、丰富的人物关系、独特的叙事风格,还有各种各样的专有名词需要统一处理。
更让人崩溃的是,很多工具翻译完之后,原文的排版、图片、目录和跳转链接全乱了,就像把一本精装书变成了草稿纸。
要是有一个专门针对小说翻译的工具就好了,能够自动处理格式、统一术语,还能保留原文的排版和结构。
没想到,还真让我找到了!今天要给大家介绍的这个开源项目,就是专门为小说翻译而生的——文译(wenyi)。

文译(wenyi) 是一个专注于将多语言 EPUB、FB2 或 TXT 小说翻译成中文的工具,由开发者 BigDawnGhost 基于个人兴趣开发。
它最大的特点就是能够尽量保留 EPUB 原排版、图片、目录和跳转链接,让翻译后的电子书看起来和原版一样精美。
项目的日常入口只有一个命令:translate。它会完成预扫、分析、翻译、可选润色、章末审校、标点规范化和 EPUB 导出等一系列操作,而且中断后可以继续跑,完全不用担心长篇小说翻译到一半出问题。
这绝对是文译最吸引人的地方。用过其他翻译工具的朋友应该都有体会,很多工具翻译完之后,原文的格式全乱了,段落不分、图片丢失、目录失效,读起来特别费劲。
文译采用了一种巧妙的方式:它会按原 XHTML 模板回填译文,尽量保留原书的样式、图片、目录和锚点。
也就是说,不管原文是精美的 EPUB 格式,还是简单的 TXT 文件,翻译出来的结果都能保持良好的阅读体验。
小说翻译中最让人头疼的就是专有名词的统一。同一个人名在不同章节翻译成不同的名字,不仅影响阅读体验,还容易让读者混淆。
文译内置了 SQLite 术语库,人名、地名、专有名词和敬称会自动进入术语库,翻译时按配置注入提示词。
这样一来,全书的术语翻译就能保持高度一致,不会出现"张三"在第一章叫"张三",到了第三章变成"张四"的尴尬情况。
文译支持配置三种不同档位的模型:strong、cheap 和 fast。
这种分层设计非常实用,既能保证核心翻译质量,又能有效控制成本,特别是对于长篇小说来说,成本优势非常明显。
翻译长篇小说往往需要很长时间,中途难免会遇到网络问题、程序崩溃等意外情况。文译很好地解决了这个问题,每个批次翻译完成后都会自动保存到 state/ 目录,中断后可以随时续跑,已经有译文的批次会跳过,只补未完成部分。
这个功能对于翻译几十万字的长篇巨著来说,简直是救星!再也不用担心翻译到一半出问题,前功尽弃了。
文译内置了多种质量控制机制,确保翻译质量:
--format txt 参数)对于 EPUB 输入,文译会按原 XHTML 模板回填译文,尽量保留原书样式、图片、目录和锚点;对于 TXT 输入,则会生成新的 EPUB 文件。
文译提供了一系列实用的命令行工具:
# 翻译书籍
uv run trans-novel translate book.epub
# 中断后继续
uv run trans-novel resume book.epub
# 查看翻译进度
uv run trans-novel status book.epub
# 仅重新导出 EPUB
uv run trans-novel tools assemble book.epub
# 查看术语库
uv run trans-novel tools glossary book.epub list
# 检查术语冲突
uv run trans-novel tools glossary book.epub conflicts
# 运行一致性 QA
uv run trans-novel tools qa book.epub
# 生成报告
uv run trans-novel tools report book.epub主要配置都在 config.yaml 文件中:
language.source: 源语言设置,auto 由模型自动识别,也可以写死语言代码(如 ja、en、ko、ru、de 等)llm.tiers: 配置三档模型(strong、cheap、fast)pipeline.review: 章末审校开关pipeline.autofix_severe: 严重问题自动修复开关pipeline.polish: 翻译后中文润色开关pipeline.backtranslate_sample: 回译抽检比例pipeline.consistency_qa: 全书跨章一致性扫描开关pipeline.book_understanding: 翻译前预扫整本书开关segment.max_chars_per_batch: 每个翻译批次的大小segment.max_chars_per_segment: 超长段落的拆分阈值默认配置使用 DeepSeek,并通过 OpenAI SDK 调用。当然,你也可以根据自己的需求更换其他模型,只需要修改 config.yaml 里的 llm.tiers 配置即可。
1. 克隆仓库
git clone https://github.com/BigDawnGhost/wenyi.git
cd wenyi2. 安装依赖
uv sync3. 配置 API Key
export DEEPSEEK_API_KEY=sk-...或者将 API Key 写入 .env 文件:
echo "DEEPSEEK_API_KEY=sk-..." > .env翻译书籍
uv run trans-novel translate book.epub翻译完成后,默认会在源文件目录下生成译文 EPUB。运行状态、章节 JSON、术语库和报告会放在 state/ 目录下。
中断后继续
uv run trans-novel resume book.epub查看翻译进度
uv run trans-novel status book.epub仅重新导出 EPUB
uv run trans-novel tools assemble book.epub翻译指定章节
uv run trans-novel translate book.epub --chapter 3输出纯文本格式
uv run trans-novel translate book.epub --format txt文译(wenyi) 是一个非常实用的小说翻译工具,它解决了长篇小说翻译中的诸多痛点,让翻译变得更加高效、准确。
无论是翻译爱好者还是专业翻译人员,都能从中受益。
如果你也有翻译长篇小说的需求,不妨试试文译,相信它不会让你失望!
项目链接:https://github.com/BigDawnGhost/wenyi
如果你觉得这个项目不错,欢迎给它点个 Star ⭐️ 支持一下开发者!
如果本文对您有帮助,也请帮忙点个 赞👍 哈!❤️