[M5] Traduction à la volée : trait TranslationEngine + Bergamot/LibreTranslate/DeepL (SF-M5-01) #58

Closed
opened 2026-04-06 01:37:24 +00:00 by charles · 0 comments
Owner

Contexte

Bouton "Traduire" sur chaque message, avec choix du moteur (local ou cloud), implémenté via un trait TranslationEngine symétrique au SttEngine (SF-M5-01).

Critères d'acceptation

  • Trait TranslationEngine: Send + Sync avec translate(text, source_lang, target_lang) -> Result<String> et supported_languages()
  • Implémentation BergamotEngine (local, WASM) pour les paires de langues supportées
  • Implémentation LibreTranslateEngine (self-hosted, configurable URL)
  • Implémentation DeepLEngine (cloud, nécessite clé API)
  • Bouton "Traduire" sur chaque message dans fractal-gtk
  • La traduction s'affiche dans un widget dépliable sous le message (même pattern que TranscriptWidget)
  • Cache local SQLite (clé = event_id + target_lang)

Notes techniques

  • Implémenté directement dans fractal-gtk avec le trait dans fractal-ext (pas de nouvelle crate dédiée)
  • Moteur sélectionnable dans les préférences
  • Dépend de #2 (Extension trait)
## Contexte Bouton "Traduire" sur chaque message, avec choix du moteur (local ou cloud), implémenté via un trait `TranslationEngine` symétrique au `SttEngine` (SF-M5-01). ## Critères d'acceptation - [ ] Trait `TranslationEngine: Send + Sync` avec `translate(text, source_lang, target_lang) -> Result<String>` et `supported_languages()` - [ ] Implémentation `BergamotEngine` (local, WASM) pour les paires de langues supportées - [ ] Implémentation `LibreTranslateEngine` (self-hosted, configurable URL) - [ ] Implémentation `DeepLEngine` (cloud, nécessite clé API) - [ ] Bouton "Traduire" sur chaque message dans `fractal-gtk` - [ ] La traduction s'affiche dans un widget dépliable sous le message (même pattern que TranscriptWidget) - [ ] Cache local SQLite (clé = `event_id + target_lang`) ## Notes techniques - Implémenté directement dans `fractal-gtk` avec le trait dans `fractal-ext` (pas de nouvelle crate dédiée) - Moteur sélectionnable dans les préférences - Dépend de #2 (Extension trait)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#58
No description provided.