Markdown Translator
一个高性能的Rust翻译库,专为Markdown文档设计,提供智能文本翻译功能。
✨ 主要特性
- 🚀 高性能并行处理: 利用Rust异步特性,支持多任务并发翻译
- 🔧 智能代码块处理: 自动识别并跳过代码块,保持代码完整性
- ⚡ 速率限制: 内置智能速率限制器,防止API过载
- 📝 配置灵活: 支持TOML配置文件和程序化配置
- 🔄 错误恢复: 完善的错误处理和重试机制
- 📄 文本分块: 智能文本分割,支持长文档翻译
- 🌐 多API支持: 支持DeepLX和兼容的翻译API
🚀 快速开始
安装
将以下内容添加到你的 Cargo.toml:
[]
= "0.1.0"
= { = "1.0", = ["full"] }
基本使用
use ;
async
使用配置文件
创建 translation-config.toml:
[]
= true
= "auto"
= "zh"
= "http://localhost:1188/translate"
= 2.0
= 3000
= 10
然后在代码中使用:
use ;
async
📋 配置选项
翻译配置
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled |
bool |
false |
是否启用翻译功能 |
source_lang |
String |
"auto" |
源语言代码,"auto"表示自动检测 |
target_lang |
String |
"zh" |
目标语言代码 |
deeplx_api_url |
String |
"http://localhost:1188/translate" |
DeepLX API地址 |
max_requests_per_second |
f64 |
0.5 |
每秒最大请求数 |
max_text_length |
usize |
3000 |
单次翻译的最大文本长度 |
max_paragraphs_per_request |
usize |
10 |
单次请求的最大段落数 |
配置文件搜索路径
库会按以下顺序搜索配置文件:
translation-config.toml(当前目录)config.toml(当前目录).translation-config.toml(当前目录)
性能调优
高性能配置
适用于本地网络环境或高性能API服务:
[]
= true
= "auto"
= "zh"
= "http://localhost:1188/translate"
= 3.0
= 4000
= 15
稳定配置
适用于公网环境或API限制较严格的场景:
[]
= true
= "auto"
= "zh"
= "http://localhost:1188/translate"
= 0.5
= 2000
= 5
🌐 支持的翻译API
DeepLX
这是推荐的翻译API,支持多种部署方式:
# 使用Docker运行DeepLX
# 测试API
兼容的API格式
库支持两种API格式:
- 标准DeepLX格式:
- DpTrans格式:
🔧 高级特性
并行处理
库内置并行处理支持,可以同时翻译多个文本块:
use ;
async
代码块保护
库会自动识别Markdown代码块并跳过翻译:
这段文字会被翻译。
```rust
// 这段代码不会被翻译
fn main() {
}
这段文字也会被翻译。
### 错误处理和重试
内置重试机制,自动处理临时网络错误:
```rust
use markdown_translator::{TranslationService, TranslationError};
match translator.translate("Hello, world!").await {
Ok(result) => println!("Translation: {}", result),
Err(TranslationError::Http(e)) => eprintln!("Network error: {}", e),
Err(TranslationError::ApiError { code, message }) => {
eprintln!("API error {}: {}", code, message);
}
Err(e) => eprintln!("Other error: {}", e),
}
📊 性能基准
在典型配置下的性能表现:
| 文档大小 | 处理时间 | 并发数 | 吞吐量 |
|---|---|---|---|
| 1KB | ~1s | 1 | ~1KB/s |
| 10KB | ~3s | 3 | ~3.3KB/s |
| 100KB | ~15s | 5 | ~6.7KB/s |
注:性能取决于网络延迟、API响应时间和配置参数
🛠️ 开发
构建
测试
文档生成
运行示例
# 生成配置文件
# 运行翻译测试
🤝 贡献
欢迎贡献代码!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
📄 许可证
本项目使用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🙏 致谢
📞 支持
如果遇到问题或有建议,请:
注意: 请遵守API服务提供商的使用条款和速率限制。合理使用翻译服务,避免滥用。