💻 DéveloppementIntermédiaire PS 1.6 PS 1.7 PS 8.x

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.

Publié le 21 mars 2026 6 min de lecture Alexandre Carette

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.

  1. Renommez temporairement le fichier `.php` en `.csv`
  2. Ouvrez-le avec LibreOffice Calc ou Excel
  3. Choisissez `=` comme séparateur de colonnes
  4. La colonne A contient les clés, la colonne B les valeurs à traduire
  5. É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.

#traductions #modules #internationalisation #i18n #back-office #multilingue

Questions fréquentes

Tout ce que vous devez savoir sur ce sujet.

Un projet PrestaShop ?

Discutons-en directement.

★★★★★

193 projets livrés

Gratuit & sans engagement — réponse sous 24h

Alexandre Carette

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.