Ce site web est rédigé en anglais. Les versions en allemand, français, croate, espagnol et arabe, comprenant 54 pages de documentation, ont été traduites par SwiftLing Pro à partir de la ligne de commande, à l’aide d’OpenAI et de ma propre clé. Voici la commande que j’ai exécutée, le temps que cela a pris et ce que j’ai encore fait manuellement.
La configuration
SwiftLing et SwiftLing Pro sont activés, les cinq langues ont été ajoutées dans l'écran « Langues » et une clé OpenAI a été enregistrée dans l'écran « Service de traduction ». J'ai choisi OpenAI comme service de traduction et gpt-6-sol comme modèle. J'ai d'abord traduit la page d'accueil avec DeepL, puis l'ensemble du site avec ce service, mais j'ai trouvé que la traduction d'OpenAI était meilleure, je l'ai donc remplacée.
La commande
wp swiftling translate --all --kind=post --lang=de --again=machine --user=admin
--all prend chaque page de ce type, --lang identifie la langue (ici l'allemand), et --again=machine traduit à nouveau les textes déjà traduits par une machine, ce qui a permis de remplacer le passage par DeepL. Sans --again cette commande, seuls les textes n’ayant pas encore de traduction sont remplis. Chaque page est d’abord ouverte sur le serveur, ce qui permet à SwiftLing de voir les textes que voit le visiteur, puis ces textes sont transmis au service.
En réalité, j'ai exécuté cette commande avec une liste de pages à la place de --all, car j’ai délibérément omis les deux pages juridiques : un texte juridique ne devrait pas être traduit par une machine sans qu’une personne ne le vérifie. J’ai lancé le traitement pour les cinq langues en même temps, à raison d’un processus par langue ; le temps d’exécution correspond donc à celui du processus le plus lent.
Les chiffres
| Languages | 5 (German, French, Croatian, Spanish, Arabic) |
| Pages | 54, plus the categories |
| Texts | 5,870 |
| Characters sent | 622,050 |
| Model | gpt-6-sol |
| Total time | 12 min 33 s |
| Fastest language (French) | 9 min 47 s |
| Slowest language (Croatian) | 12 min 33 s |
Je n’ai pas traduit les langues les unes après les autres. J’ai lancé cinq processus simultanément, un pour chaque langue, et ils ont tourné en parallèle. Le temps total correspond donc à celui du processus le plus lent, le croate. Si je les avais traités les uns après les autres, les cinq auraient pris environ 55 minutes (les cinq durées additionnées). Un test portant sur une page à traduire en deux langues a généré 3 810 caractères et a pris 25 secondes ; je me suis basé sur ces chiffres pour planifier le traitement.
Combien cela a coûté
OpenAI facture en tokens, et non en caractères. Sa page d’utilisation indique un montant total de 4,67 $ pour cette journée : 437 requêtes et 353 000 tokens d’entrée. Ce chiffre correspond à l'ensemble de mes activités avec cette clé ce jour-là, et pas seulement à cette session. Il inclut mes tests antérieurs sur un modèle plus coûteux, gpt-6-astra ; l'exécution de l'ensemble du site sur gpt-6-sol a donc coûté moins de 4,67 $. Je n’ai pas fait la distinction entre les deux, et j’estime le coût de l’exécution sur l’ensemble du site à environ 3 $. Le compteur de SwiftLing affichait un chiffre bien inférieur, car il a perdu une partie de ses comptages lorsque cinq processus y ont écrit simultanément.
Ce que j’ai fait à la main
- J’ai sélectionné le service et le modèle sur l’écran « Service de traduction ».
- Deux types de texte ne constituaient pas des mots ; SwiftLing les a donc laissés tels quels, ou je lui ai demandé de conserver l’original : les adresses des images et un extrait de code.
- L’arabe s’écrit de droite à gauche, ce qui nécessite l’utilisation du pack de langue arabe propre à WordPress.
- La page d’accueil, ainsi que l’en-tête et le pied de page, ont déjà été traduits à l’aide de DeepL et n’ont pas été retravaillés.
Qu’est-ce qui a mal tourné, et ce que cela ne signifie pas
- L’exécution simultanée de cinq langues a mis en évidence deux défauts dans SwiftLing : une ligne de l’index de recherche a été écrite deux fois, et le compteur d’utilisation a perdu des comptages. L’exécution des langues l’une après l’autre ne provoque aucun de ces deux problèmes. Il s’agissait de bogues dans le plugin, et je les ai tous deux corrigés : la ligne d’index est désormais remplacée au lieu d’être insérée, et le compteur est programmé de manière à ce qu’aucun processus ne puisse écraser les comptages d’un autre.
- Il s’agit de traductions automatiques. Personne ne les a encore relues, et SwiftLing les signale comme telles afin qu’un éditeur puisse les relire. Je ne comprends pas l’arabe, c’est donc à un locuteur natif de s’en charger.
- Les pages juridiques ne sont pas traduites, et ce, à dessein.
- Les textes générés par un script après le chargement de la page ne sont pas détectés par une commande, car celle-ci ouvre la page sans exécuter les scripts.
Si vous souhaitez l'essayer, vous trouverez les commandes dans la documentation de WP-CLI. Si vous rencontrez un problème, signalez-le-moi sur GitHub.