async_translate/
translator.rs

1//! 翻译器trait定义
2
3use crate::{error::TranslationError, options::TranslateOptions};
4use unic_langid::LanguageIdentifier;
5
6/// 翻译器trait,定义了统一的翻译接口
7#[async_trait::async_trait]
8pub trait Translator: Send + Sync {
9    /// 翻译文本(带配置选项)
10    ///
11    /// # 参数
12    ///
13    /// * `text` - 需要翻译的文本
14    /// * `target_lang` - 目标语言标识符
15    /// * `source_lang` - 源语言标识符 (None表示自动检测)
16    /// * `options` - 翻译配置选项
17    ///
18    /// # 返回值
19    ///
20    /// 返回翻译后的文本,如果出错则返回错误信息
21    async fn translate_with_options(
22        &self,
23        text: &str,
24        target_lang: &LanguageIdentifier,
25        source_lang: Option<&LanguageIdentifier>,
26        options: &TranslateOptions,
27    ) -> Result<String, TranslationError>;
28
29    /// 翻译文本(使用默认选项)
30    ///
31    /// # 参数
32    ///
33    /// * `text` - 需要翻译的文本
34    /// * `target_lang` - 目标语言标识符
35    /// * `source_lang` - 源语言标识符 (None表示自动检测)
36    ///
37    /// # 返回值
38    ///
39    /// 返回翻译后的文本,如果出错则返回错误信息
40    async fn translate(
41        &self,
42        text: &str,
43        target_lang: &LanguageIdentifier,
44        source_lang: Option<&LanguageIdentifier>,
45    ) -> Result<String, TranslationError> {
46        self.translate_with_options(text, target_lang, source_lang, &TranslateOptions::default())
47            .await
48    }
49}