Il y a longtemps de ça (une vingtaine d'années environ), j'utilisais un petit logiciel sous KDE pour obtenir rapidement la traduction d'un mot à la volée. Il suffisait pour cela de le sélectionner à la souris, et une fenêtre surgissait immédiatement avec la traduction. Super efficace. Cet outil n'existe plus depuis longtemps (de mémoire, ça s'appeler qtranslate ou quelque chose comme ça), alors on va se coder ça en Python, on n'est jamais si bien servi que par soi même…
Le cahier des charges
Mes besoins sont assez limités. Je souhaite simplement que la traduction d'un mot s'affiche dans une fenêtre lorsque je le sélectionne à la souris. Pas besoin de traduire des paragraphes ou des documents entiers. Le programme doit fonctionner pour n'importe quel type de document (page web, pdf, traitement de texte…)
Bibliothèques Python utilisées
Je vais m'appuyer sur trois bibliothèques Python :
- Klembord, qui permet de gérer le contenu du presse-papiers. L'énorme intérêt de cette bibliothèque est que sous Linux, elle est capable de gérer le presse-papiers classique (lorsque l'on sélectionne du texte puis que l'on appuie sur ctrl+C), mais également le presse-papiers primaire. Dès que du texte est sélectionné à la souris, il est automatiquement copié dans ce presse-papiers. On peut ensuite coller son contenu par un clic avec le bouton du milieu de la souris (quand on s'est habitué à cette technique pour faire du copier/coller, on ne peut plus s'en passer !). Et c'est exactement ce que je veux : dès que je sélectionne un mot à la souris (par un double-clic sur le mot par exemple), la traduction doit s'afficher sans que j'aie besoin de toucher au clavier.
- wrpy, qui permet d'obtenir des traductions en utilisant l'API du site Wordreference. Les traductions réceptionnées sont alors structurées sous forme de dictionnaires et listes Python, facilement exploitable ensuite.
- colorido, histoire de mettre un peu de couleur dans l'affichage des traductions pour faciliter la lecture.
Une toute première version
C'est pour l'instant assez rustique, mais ça fonctionne. Lorsqu'un mot en anglais est sélectionné à la souris, sa traduction en français s'affiche dans la console. Ça fonctionne également dans l'autre sens (sélection à la souris d'un mot en français). On peut facilement changer de langues dans le script.
Et voici ce que ça donne en sélectionnant le mot « easy » à la souris :
Le code source est disponible sur le serveur gitlab de l'université de Limoges, et bien sûr, c'est sous licence libre.
La suite ?
Pour l'instant, c'est très simpliste, mais ça fait le job ! Pour la suite, j'envisage d'ajouter les fonctionnalités suivantes :
- une interface graphique,
- affichage de la première traduction uniquement par défaut, puis possibilité d'afficher d'autres traductions,
- configuration des dictionnaires utilisés,
- possibilité d'afficher ou non les exemples.
On verra à l'usage…