Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .ai/analyse-2026-08-06.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
## Résumé

UltimateChatTranslator est un mod Minecraft Fabric qui traduit automatiquement les messages du chat, les panneaux et les menus en jeu vers la langue choisie par le joueur. Le projet est bien structuré, avec une séparation claire entre la logique de traduction, les mixins, la configuration et l’intégration Mod Menu. Il utilise l’endpoint public de Google Translate (sans clé API), ce qui simplifie l’installation mais présente des risques de stabilité et de respect des conditions d’utilisation. Le code est globalement lisible, mais quelques points de vigilance ont été identifiés, notamment dans la gestion du cache, le script de build et la couverture de tests.

## Problèmes et bugs potentiels

- **Utilisation de l’endpoint public de Google Translate** (`TranslationService.java`) : cette méthode est non officielle, peut être limitée en débit, bloquée par Google, et ne garantit pas la pérennité du service. Elle ne permet pas non plus de choisir un moteur de traduction alternatif.
- **Cache de traduction du monde** (`WorldTextTranslationCache.java`) : les `ConcurrentHashMap` `RESOLVED` et `PENDING` ne sont jamais purgées, ce qui peut entraîner une croissance mémoire illimitée en cas de nombreux messages uniques. Les `WeakHashMap` sont corrects pour les objets Minecraft, mais les maps statiques restent un risque.
- **Script `build.sh`** : il utilise `sudo` pour installer des paquets système, ce qui est inadapté pour un environnement CI ou un utilisateur sans droits. La ligne `su` dans l’extrait semble être une erreur de copie ou une commande incomplète.
- **Mixins** (`ChatHudMixin.java`, `SignBlockEntityRendererMixin.java`, etc.) : les injections sont faites à `HEAD` et peuvent être `cancellable`. Il faut vérifier que la logique de traduction ne bloque pas l’affichage des messages originaux en cas d’erreur réseau ou de traduction.
- **Écran de configuration** (`ModMenuIntegration.java`) : le code crée de nombreux boutons sans gestion de la disposition responsive ; sur des petites fenêtres, les boutons peuvent se chevaucher.
- **Traductions du menu** (`MenuLocalization.java`) : les chaînes sont en dur, mais certaines langues peuvent manquer (ex. le chinois est présent, mais pas l’arabe, le hindi, etc.). De plus, les traductions ne sont pas externalisées dans des fichiers de ressources, ce qui complique la maintenance.

## Qualité du code et nettoyage

- **Mélange de langues** : les noms de classes et de méthodes sont en anglais, mais les commentaires et les messages utilisateur sont en français (ex. `build.sh`, `README.md`). Cela peut nuire à la lisibilité pour une communauté internationale.
- **Duplication de code** : la gestion des boutons dans `ModMenuIntegration.java` est répétitive ; une boucle ou une structure de données serait plus propre.
- **Fichiers de configuration** : `fabric.mod.json` a été supprimé dans un commit, mais il est toujours présent dans l’arborescence. Il faut vérifier que la suppression est volontaire (peut-être un oubli).
- **Tests** : les tests existants (`ChatTranslationRulesTest`, `ConfigScreenStateTest`, `MenuLocalizationTest`) sont bien écrits, mais ils ne couvrent pas les parties critiques (traduction réseau, mixins, cache).
- **Documentation** : le README est clair et bien structuré, mais il manque une section sur les limitations (ex. dépendance à Google Translate, risque de blocage).

## Nouvelles fonctionnalités à envisager

- **Support de plusieurs moteurs de traduction** : permettre à l’utilisateur de choisir entre Google (endpoint public), DeepL (avec clé API), ou un service local (ex. LibreTranslate).
- **Traduction des messages système** : actuellement, seuls les messages du chat sont traduits ; les messages système (ex. « Vous avez rejoint le serveur ») pourraient être traduits aussi.
- **Traduction des livres et des panneaux suspendus** : le mod gère les panneaux, mais pas les livres écrits dans le monde.
- **Mode « traduction à la volée »** : permettre de traduire un message en cliquant dessus (déjà en partie avec le bouton, mais peut-être ajouter un raccourci clavier).
- **Export/import de la configuration** : pour faciliter le partage de paramètres entre utilisateurs.

## Tests manquants

- `TranslationService.java` : tests unitaires pour les appels réseau (mock de la réponse, gestion des erreurs, timeout).
- `ChatHudMixin.java` : tests d’intégration pour vérifier que le message est bien traduit et que le bouton est ajouté.
- `WorldTextTranslationCache.java` : tests pour la résolution des traductions, la gestion des caches et la purge.
- `ModMenuIntegration.java` : tests de l’écran de configuration (affichage, clic sur les boutons, sauvegarde).
- `ChatMessageDispatcher.java` : tests de la logique de dispatch des messages.
- `Chat_language_translateClient.java` : tests du chargement de la configuration et de l’initialisation.

## Dépendances et sécurité

- **Google Translate public endpoint** : risque de violation des conditions d’utilisation, de blocage IP, et de limitation de débit. Aucune clé API n’est requise, mais cela peut être considéré comme une faille de sécurité (les requêtes sont envoyées en clair).
- **Script `build.sh`** : l’utilisation de `sudo` et de `apt`/`pacman` est intrusive. Il serait préférable de vérifier les prérequis et de laisser l’utilisateur installer les dépendances manuellement, ou de fournir un Dockerfile.
- **Dépendances Gradle** : le projet utilise des versions récentes (Gradle 9.5, Loom 1.17.17). Les mises à jour sont gérées par Renovate, ce qui est bien, mais il faut vérifier que les versions sont compatibles avec les versions de Minecraft ciblées (1.20.1 – 1.21.8).
- **Fichier `SECURITY.md`** : présent, mais il ne mentionne pas les risques liés à l’endpoint public de Google Translate.

## Suggestions prioritaires (top 5)

1. **Remplacer l’endpoint public de Google Translate** par une API plus robuste (ex. DeepL, avec clé optionnelle) ou permettre à l’utilisateur de configurer son propre endpoint. Cela réduira les risques de blocage et améliorera la fiabilité.
2. **Corriger le script `build.sh`** : retirer les commandes `sudo` et `su`, et fournir une option `--no-install` pour les environnements CI. Vérifier que le script fonctionne sur les distributions principales.
3. **Ajouter des tests pour les classes critiques** : `TranslationService`, `ChatHudMixin`, `WorldTextTranslationCache`. Cela permettra de détecter les régressions et d’assurer la stabilité.
4. **Améliorer la gestion du cache** : ajouter une purge périodique des `ConcurrentHashMap` (ex. après un certain temps ou un nombre d’entrées) pour éviter les fuites mémoire.
5. **Uniformiser la langue du code** : choisir une langue (anglais de préférence) pour les commentaires et les messages, et externaliser les traductions de l’interface dans des fichiers de lang (ex. `lang/en_us.json`, `lang/fr_fr.json`). Cela facilitera la contribution et la maintenance.
Loading