use crate::{error::TranslationError, options::TranslateOptions};
use unic_langid::LanguageIdentifier;
#[async_trait::async_trait]
pub trait Translator: Send + Sync {
async fn translate_with_options(
&self,
text: &str,
target_lang: &LanguageIdentifier,
source_lang: Option<&LanguageIdentifier>,
options: &TranslateOptions,
) -> Result<String, TranslationError>;
async fn translate(
&self,
text: &str,
target_lang: &LanguageIdentifier,
source_lang: Option<&LanguageIdentifier>,
) -> Result<String, TranslationError> {
self.translate_with_options(text, target_lang, source_lang, &TranslateOptions::default())
.await
}
}