use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TranslationConfig {
pub enabled: bool,
pub source_lang: String,
pub target_lang: String,
pub deeplx_api_url: String,
pub max_requests_per_second: f64,
pub max_text_length: usize,
pub max_paragraphs_per_request: usize,
}
impl Default for TranslationConfig {
fn default() -> Self {
Self {
enabled: false,
source_lang: "auto".to_string(),
target_lang: "zh".to_string(),
deeplx_api_url: "http://localhost:1188/translate".to_string(),
max_requests_per_second: 0.5,
max_text_length: 3000,
max_paragraphs_per_request: 10,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RetryConfig {
pub max_retries: usize,
pub initial_delay_ms: u64,
pub max_delay_ms: u64,
pub backoff_multiplier: f64,
}
impl Default for RetryConfig {
fn default() -> Self {
Self {
max_retries: 1, initial_delay_ms: 100, max_delay_ms: 1000, backoff_multiplier: 1.2, }
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DeepLXRequest {
pub text: String,
pub source_lang: String,
pub target_lang: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DpTransRequest {
pub text: String,
pub source_lang: String,
pub target_lang: String,
}
#[derive(Debug, Deserialize)]
pub struct DeepLXResponse {
pub code: i32,
pub data: String,
}
#[derive(Debug, Clone)]
pub struct TextSegment {
pub content: String,
pub is_code_block: bool,
}