prestashop module tutoriel

Traduire un module PrestaShop en 5 minutes avec un LLM

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.

Interface traductions back-office PrestaShop

L'interface de traductions du back-office PrestaShop

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.

Export traductions module PrestaShop

Section export dans International -> Traductions

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."

Traduction fichier XLF avec un LLM

Traduction du fichier .xlf avec Claude

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.