Traduire un module PrestaShop en 5 minutes avec un LLM
Soyons honnêtes : tout ceux qui ont déjà utilisé le système de traductions de PrestaShop le savent. Accessible depuis le back-office dans International -> Traductions, il est lent (synchrone), buggué dès qu'il y a des placeholders du type %count%, et franchement pénible quand on se retrouve avec 256 clefs manquantes à remplir une par une.

Il peut suffire pour corriger une clef ou deux à la volée. Mais pour traduire un module entier, il y a une approche bien plus rapide, à base d'export et de LLM.
L'idée
On va exporter les fichiers de traduction du module au format .xlf, les donner à manger à un LLM, et les replacer directement dans le module. Fini les copier-coller depuis Google Traduction.
Étape 1 : exporter les traductions depuis le back-office
Depuis le back-office : International -> Traductions, section "Exporter les traductions". Choisir "Traductions module installé", puis sélectionner son module.

Même si aucune traduction n'a encore été saisie, le fichier contiendra toutes les clefs en anglais. C'est exactement ce qu'on veut.
Étape 2 : comprendre le format .xlf
On récupère un fichier .zip. Une fois extrait, on trouve quelque chose comme :
translations/fr-FR/ModulesMonmoduleAdmin.fr-FR.xlf
Chaque clef ressemble à ça :
<trans-unit id="6529662d2c8c1f44bb4ce1efc328eb2b">
<source>No invoice found for this period.</source>
<target>No invoice found for this period.</target>
<note>Line: </note>
</trans-unit>
Le hash de l'id est déjà généré par PrestaShop, la structure est stable. Le LLM n'a qu'à remplacer le contenu des balises <target>.
Étape 3 : extraire les fichiers dans le module
On place les fichiers extraits dans le dossier translations/ du module (à créer s'il n'existe pas) :
mon-module/
└── translations/
└── fr-FR/
└── ModulesMonmoduleAdmin.fr-FR.xlf
Étape 4 : donner les fichiers au LLM
On donne directement les fichiers .xlf à Claude, ChatGPT, ou un modèle local (Mistral via Ollama fonctionne très bien pour ça). La consigne est simple : "Traduis en français le contenu des balises <target> de ce fichier .xlf, sans modifier les attributs ni la structure XML."

Le LLM gère très bien les placeholders, les guillemets et les termes techniques, autant de choses qui plantaient régulièrement l'interface native. On peut même le faire avec un modèle local si on préfère garder le code en local.
Une fois le fichier traduit récupéré, on le remet à sa place.
Étape 5 : vider le cache
Depuis le back-office : Paramètres avancés -> Performance -> Vider le cache.
Les traductions sont actives immédiatement. Et elles seront incluses dès la prochaine installation du module sur une autre boutique.
Retour d'expérience
C'est la méthode que j'utilise pour tous mes modules PrestaShop sur mesure. Le gain de temps et d'énergie est réel : avant, je passais par le back-office à 100%, c'était long et pénible. Maintenant, une traduction complète prend quelques minutes.