mdbook-translator
一个用于 mdBook 的翻译预处理器插件,使用 DeepSeek API 自动翻译 Markdown 文档。
功能特性
- 🌐 自动翻译 mdBook 文档内容
- 🔄 智能缓存机制,避免重复翻译
- 🎯 保留代码块和专业术语
- 🚀 基于 DeepSeek API 的高质量翻译
- ⚙️ 可配置prompt
- 📚 支持多语言翻译
安装
从源码构建
# 克隆项目
# 构建项目
# 安装到系统路径
使用 cargo install
配置
1. 获取 DeepSeek API 密钥
访问 DeepSeek 官网 获取 API 密钥,并设置环境变量:
2. 配置 book.toml
在你的 mdBook 项目的 book.toml 文件中添加以下配置:
[]
= "你的书籍标题"
= ["作者名"]
[]
= ["mdbook-translator"]
= "book-zh" # 可选:指定输出目录
[]
= "mdbook-translator"
= "Chinese" # 目标翻译语言
= "请保持Send、Future、Futures等rust中的专业术语不要翻译" # 可选:自定义翻译提示
配置选项说明
language: 目标翻译语言(如:"Chinese", "Japanese", "Korean" 等)prompt: 可选的自定义翻译提示,用于指导翻译行为build-dir: 可选的输出目录,默认为 "book"
使用方法
基本使用
# 在你的 mdBook 项目目录中运行
插件会自动:
- 读取源文档
- 调用 DeepSeek API 进行翻译
- 缓存翻译结果
- 生成翻译后的文档
清理缓存
如果需要重新翻译,可以删除缓存文件:
调试模式
插件会输出调试信息到标准错误输出,包括缓存命中情况等。
工作原理
- 文档解析: 插件遍历 mdBook 的所有章节和页面
- 内容分块: 将长文本分割成适合 API 处理的块
- 智能翻译: 调用 DeepSeek API 进行翻译,保留代码块和格式
- 缓存机制: 使用 SHA256 哈希缓存翻译结果,避免重复翻译
- 文档重建: 用翻译后的内容替换原文档内容
注意事项
- 确保设置了正确的
DEEPSEEK_API_KEY环境变量 - 翻译过程需要网络连接(中国大陆用户可能需要配置http代理)
- 首次翻译可能需要较长时间,后续构建会使用缓存加速
- 代码块和特殊格式会被保留,不会被翻译
- 建议在翻译前备份原始文档
依赖项
mdbook: mdBook 核心库reqwest: HTTP 客户端,用于 API 调用serde_json: JSON 序列化/反序列化sha2: 哈希计算,用于缓存键生成anyhow: 错误处理clap: 命令行参数解析toml: TOML 配置文件解析
示例项目
参考 async-book 项目的配置:
[]
= "Asynchronous Programming in Rust"
= ["Taylor Cramer", "Nicholas Cameron", "Open source contributors"]
[]
= ["mdbook-translator"]
= "book-zh"
[]
= "mdbook-translator"
= "Chinese"
= "请保持Send、Future、Futures等rust中的专业术语不要翻译"
贡献
欢迎提交 Issue 和 Pull Request!