Gérer les traductions vides dans PrestaShop : guide complet
Découvrez comment corriger et prévenir les traductions vides dans PrestaShop 1.7 et 8.x : fichiers de langue, back-office, scripts d'automatisation et bonnes pratiques.
En bref : Les traductions vides dans PrestaShop surviennent quand un module ne fournit pas de fichier de langue pour votre boutique. La solution la plus fiable est de dupliquer un fichier de traduction existant, de traduire les chaînes (manuellement ou en masse via tableur), puis de placer le résultat dans le dossier de surcharge du thème pour survivre aux mises à jour.
Le problème des traductions vides dans PrestaShop
Lorsqu'on installe un module ou un thème dont la langue d'origine ne correspond pas à celle de la boutique, on se retrouve fréquemment avec des chaînes de traduction vides. Le résultat côté front-office est immédiat : des libellés manquants, des boutons sans texte, voire des blocs entiers qui disparaissent visuellement.
Ce problème touche particulièrement les modules téléchargés sur des marketplaces internationales (modules russes, espagnols, polonais…) qui ne fournissent pas systématiquement les traductions françaises ou anglaises.
Comprendre comment fonctionne le système de traduction de PrestaShop permet de résoudre ce problème efficacement et de manière pérenne.
Architecture du système de traduction PrestaShop
PrestaShop 1.6 : le système `$_MODULE`
Dans PrestaShop 1.6, les traductions reposent sur des fichiers PHP contenant un tableau associatif global $_MODULE. Chaque entrée associe une clé de hachage MD5 à la chaîne traduite.
Ces fichiers se trouvent dans deux emplacements :
- **Modules :** `/modules/nom_module/translations/fr.php`
- **Thèmes :** `/themes/nom_theme/modules/nom_module/translations/fr.php`
Exemple de structure d'un fichier de traduction :
<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{monmodule}prestashop>monmodule_7b4cc4f79be9aae43efd53b4ae5cba4d'] = 'Paiement par chèque';
$_MODULE['<{monmodule}prestashop>monmodule_c888438d14855d7d96a2724ee9c306bd'] = 'Vos paramètres ont été mis à jour.';
$_MODULE['<{monmodule}prestashop>monmodule_5dd532f0a63d89c5af0243b74732f63c'] = 'Coordonnées';
La clé est composée du nom du module, du nom du fichier template d'origine et du hash MD5 de la chaîne originale en anglais.
PrestaShop 1.7 et 8.x : le système de catalogue
À partir de la version 1.7, PrestaShop a progressivement migré vers un système basé sur des catalogues de traduction au format XLIFF, stockés dans /app/Resources/translations/. Cependant, de nombreux modules continuent d'utiliser l'ancien système $_MODULE, ce qui fait coexister les deux mécanismes.
En PrestaShop 8.x, le système de traduction moderne utilise des domaines de traduction :
// Dans un module moderne (PS 8.x)
$this->trans('Payment by check', [], 'Modules.Monmodule.Admin');
Les fichiers XLIFF correspondants se trouvent dans :
/app/Resources/translations/fr-FR/ModulesMonmoduleAdmin.fr-FR.xlf
Méthode 1 : édition directe des fichiers de traduction
C'est la méthode la plus fiable et la plus rapide pour les modules utilisant l'ancien système.
Étape 1 : identifier le fichier source
Repérez le fichier de traduction existant dans la langue d'origine du module. Par exemple, pour un module russe :
/modules/nom_module/translations/ru.php
Étape 2 : dupliquer et adapter
Copiez ce fichier vers la langue cible :
cp modules/nom_module/translations/ru.php modules/nom_module/translations/fr.php
Étape 3 : traduire les chaînes
Ouvrez le fichier fr.php et remplacez chaque valeur par sa traduction française. La structure des clés reste strictement identique — seule la valeur (la chaîne après le =) doit être modifiée.
// Avant (russe)
$_MODULE['<{monmodule}prestashop>monmodule_abc123'] = 'Оплата чеком';
// Après (français)
$_MODULE['<{monmodule}prestashop>monmodule_abc123'] = 'Paiement par chèque';
Important : ne modifiez jamais les clés du tableau. Le hash MD5 est calculé sur la chaîne originale anglaise, pas sur la traduction.
Méthode 2 : traduction en masse via tableur
Pour les modules comportant des centaines de chaînes, une approche semi-automatisée est bien plus efficace.
Étape 1 : exporter en format exploitable
Les fichiers de traduction PrestaShop utilisent le séparateur = entre la clé et la valeur. On peut les exploiter directement dans un tableur.
- Renommez temporairement le fichier `.php` en `.csv`
- Ouvrez-le avec LibreOffice Calc ou Excel
- Choisissez `=` comme séparateur de colonnes
- La colonne A contient les clés, la colonne B les valeurs à traduire
Étape 2 : traduire la colonne des valeurs
Sélectionnez l'intégralité de la colonne B (les chaînes à traduire) et utilisez un service de traduction. Pour un grand volume, des outils comme DeepL API ou Google Cloud Translation permettent de traiter le lot automatiquement.
Étape 3 : réassembler le fichier
Réexportez en CSV avec le séparateur =, renommez en .php, et vérifiez que la syntaxe PHP est intacte :
php -l modules/nom_module/translations/fr.php
Cette commande vérifie la syntaxe sans exécuter le fichier. Si elle renvoie No syntax errors detected, le fichier est valide.
Méthode 3 : le back-office PrestaShop
PrestaShop propose un outil intégré pour gérer les traductions.
PrestaShop 1.6
Accédez à Localisation > Traductions, sélectionnez le type de traduction (modules, thèmes, back-office…), la langue cible, puis le module concerné. L'interface affiche toutes les chaînes avec les traductions existantes et les champs vides à compléter.
PrestaShop 1.7 / 8.x
Naviguez vers International > Traductions. L'interface a évolué mais le principe reste le même. Utilisez le filtre par module pour isoler les chaînes manquantes.
En PrestaShop 8.x, l'outil de traduction affiche directement les chaînes non traduites avec un indicateur visuel, ce qui facilite l'identification des lacunes.
Limite : le back-office ne gère que les chaînes déjà référencées. Si un module utilise des chaînes non enregistrées dans le catalogue, elles n'apparaîtront pas.
Méthode 4 : script automatisé de détection des traductions vides
Pour industrialiser la détection, voici un script PHP qui identifie toutes les traductions vides ou manquantes dans un module donné :
<?php
/**
* Détecte les traductions vides dans les modules PrestaShop
* Usage : php detect_empty_translations.php nom_module fr
*/
$moduleName = $argv[1] ?? null;
$targetLang = $argv[2] ?? 'fr';
if (!$moduleName) {
die("Usage : php detect_empty_translations.php <nom_module> <langue>\n");
}
$translationFile = __DIR__ . "/modules/{$moduleName}/translations/{$targetLang}.php";
if (!file_exists($translationFile)) {
echo "Fichier de traduction absent : {$translationFile}\n";
echo "Créez-le à partir d'un fichier de langue existant.\n";
exit(1);
}
require $translationFile;
$emptyCount = 0;
foreach ($_MODULE as $key => $value) {
if (empty(trim($value))) {
echo "VIDE : {$key}\n";
$emptyCount++;
}
}
echo "\nTotal chaînes vides : {$emptyCount} / " . count($_MODULE) . "\n";
Bonnes pratiques pour éviter les traductions vides
1. Vérifier les traductions avant l'installation
Avant d'installer un module, inspectez le dossier translations/ pour vérifier que votre langue est présente. Un module professionnel inclut au minimum en.php et fr.php.
2. Utiliser le fallback linguistique
PrestaShop applique un mécanisme de repli : si une traduction n'existe pas dans la langue demandée, il affiche la clé originale (généralement en anglais). Assurez-vous que le fichier en.php est toujours complet — il sert de filet de sécurité.
3. Purger le cache après modification
Après avoir modifié un fichier de traduction, videz systématiquement le cache :
# PrestaShop 1.7 / 8.x
php bin/console cache:clear
# Ou manuellement
rm -rf var/cache/*
4. Surcharger plutôt que modifier
Pour un thème, placez vos traductions dans le dossier du thème plutôt que dans le module directement :
/themes/votre_theme/modules/nom_module/translations/fr.php
Cette approche survit aux mises à jour du module.
5. Automatiser avec les packs de langue
En PrestaShop 8.x, les packs de langue communautaires couvrent de plus en plus de modules tiers. Vérifiez dans International > Traductions > Ajouter / Mettre à jour une langue si des traductions sont disponibles avant de tout refaire manuellement.
Cas particulier : modules avec XLIFF (PrestaShop 8.x)
Pour les modules modernes utilisant le nouveau système, les traductions se gèrent via des fichiers .xlf :
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="fr" datatype="plaintext">
<body>
<trans-unit id="abc123">
<source>Payment by check</source>
<target>Paiement par chèque</target>
</trans-unit>
</body>
</file>
</xliff>
L'avantage du format XLIFF est sa compatibilité native avec les outils de traduction professionnels (POEdit, Crowdin, Lokalise), ce qui simplifie considérablement la gestion multilingue à grande échelle.
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.