translation-lib

Crates.iotranslation-lib
lib.rstranslation-lib
version0.1.1
created_at2025-07-27 22:26:02.841263+00
updated_at2025-07-27 22:26:02.841263+00
descriptionA simple and efficient translation library for Rust
homepage
repositoryhttps://github.com/your-org/translation-lib
max_upload_size
id1770482
size86,535
(yuzheqianlv)

documentation

README

Translation Library

Crates.io Documentation License: MIT OR Apache-2.0

一个简单高效的 Rust 翻译库,支持文本和 HTML 翻译功能。

特性

  • 多格式支持: 支持纯文本、HTML 和 DOM 翻译
  • 智能过滤: 自动识别并跳过代码、URL、邮箱等不需要翻译的内容
  • 并发翻译: 基于 tokio 的异步并发处理
  • 缓存机制: 内置 LRU 缓存,避免重复翻译(可选)
  • 错误处理: 完善的错误处理和自动重试机制
  • 语言检测: 智能检测文本语言,避免不必要的翻译

安装

[dependencies]
translation-lib = "0.1.0"

# 如果需要 HTML 支持
translation-lib = { version = "0.1.0", features = ["html-support"] }

# 如果需要缓存功能
translation-lib = { version = "0.1.0", features = ["cache"] }

# 启用所有功能
translation-lib = { version = "0.1.0", features = ["html-support", "cache"] }

快速开始

基本使用

use translation_lib::{Translator, TranslationConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = TranslationConfig::new("YOUR_API_URL".to_string())
        .with_api_key("YOUR_API_KEY".to_string());
    
    let translator = Translator::new(config)?;
    
    // 文本翻译
    let result = translator.translate_text("Hello, world!", "zh").await?;
    println!("翻译结果: {}", result);
    
    Ok(())
}

使用环境变量

use translation_lib::translate_text_simple;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 设置环境变量
    // export TRANSLATION_API_URL="your-api-url"
    // export TRANSLATION_API_KEY="your-api-key"
    
    let result = translate_text_simple("Hello", "zh").await?;
    println!("快速翻译: {}", result);
    Ok(())
}

HTML 翻译

use translation_lib::{Translator, TranslationConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = TranslationConfig::new("YOUR_API_URL".to_string());
    let translator = Translator::new(config)?;
    
    let html = r#"<p>Hello <span>World</span></p>"#;
    let translated_html = translator.translate_html(html, "zh").await?;
    println!("HTML翻译: {}", translated_html);
    
    Ok(())
}

配置选项

use translation_lib::TranslationConfig;
use std::time::Duration;

let config = TranslationConfig::new("YOUR_API_URL".to_string())
    .with_api_key("YOUR_API_KEY".to_string())
    .with_timeout(Duration::from_secs(30))
    .with_max_concurrent(5)
    .with_cache(true);

环境变量

  • TRANSLATION_API_URL: 翻译 API 地址
  • TRANSLATION_API_KEY: API 密钥(如果需要)
  • TRANSLATION_TIMEOUT: 请求超时时间(秒)
  • TRANSLATION_MAX_CONCURRENT: 最大并发请求数
  • TRANSLATION_ENABLE_CACHE: 是否启用缓存(true/false)

API 接口

主要结构

  • Translator: 核心翻译器
  • TranslationConfig: 配置结构
  • TranslationError: 错误类型

主要方法

  • translate_text(text, target_lang): 翻译文本
  • translate_html(html, target_lang): 翻译 HTML(需要 html-support 特性)
  • translate_texts(texts, target_lang): 批量翻译

便利函数

  • translate_text_simple(text, target_lang): 简单文本翻译
  • translate_html_simple(html, target_lang): 简单 HTML 翻译
  • should_translate(text, target_lang): 检查是否需要翻译
  • analyze_text(text): 分析文本特征

智能过滤

库会自动跳过以下类型的内容:

  • URL 链接
  • 邮箱地址
  • 代码片段
  • 已经是目标语言的文本
  • 空文本

错误处理

use translation_lib::{TranslationError, TranslationResult};

match translator.translate_text("Hello", "zh").await {
    Ok(result) => println!("翻译成功: {}", result),
    Err(TranslationError::Network(msg)) => println!("网络错误: {}", msg),
    Err(TranslationError::Api(msg)) => println!("API错误: {}", msg),
    Err(TranslationError::RateLimit) => println!("请求频率过高"),
    Err(e) => println!("其他错误: {}", e),
}

许可证

MIT OR Apache-2.0

贡献

欢迎提交 Issue 和 Pull Request!

Commit count: 0

cargo fmt