Prestashop 1.7 : Correction bug traduction dans controller admin d’un module

Ce tutoriel est compatible avec les versions de Prestashop suivantes :
1.7 1.7.8 +
Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

La dernière version de Prestashop 1.7 apporte de nombreux changements ( j’ y reviendrais sans doute plus longuement dans un article à venir ), et notamment dans la gestion des traductions dans l’administration.

Celle-ci se base à présent sur Symfony, tout en gardant quand même une rétrocompatibilité (théorique ) avec l’ancien système.
Les dernières recommandations ( à date ) de l’équipe Prestashop étaient de conserver l’ancien système de traduction pour les modules.

Dans le cadre de l’adaptation de l’un de mes module j’ai cependant fait face à la problématique suivante , impossible d’accéder à mon controller Admin, et affichage de la belle page d’erreur suivante :

Erreur traduction prestashop

Après analyse, du code erreur :

FatalErrorException in AdminController.php line 2735: Error: Call to a member function trans() on null

il s’avère que la fonction de traduction des modules ne marchait pas correctement dans mon cas et j’ai du surcharger cette fonction dans mon controller.

Voici donc le code qui a permis de faire fonctionner le module correctement

 /**
     * Surcharge de la fonction de traduction sur PS 1.7 et supérieur.
     * La fonction globale ne fonctionne pas
     * @param type $string
     * @param type $class
     * @param type $addslashes
     * @param type $htmlentities
     * @return type
     */
    protected function l($string, $class = null, $addslashes = false, $htmlentities = true)
    {
        if ( _PS_VERSION_ >= '1.7') {
            return Context::getContext()->getTranslator()->trans($string);
        } else {
            return parent::l($string, $class, $addslashes, $htmlentities);
        }
    }

Si vous avez aussi rencontré ce problème et trouvé une autre solution n’hésitez pas à la partager 😉

7 réflexions sur “Prestashop 1.7 : Correction bug traduction dans controller admin d’un module”

  1. Bonjour et merci pour cette page. Ayant rencontré également un problème avec l’accès au BO du site après juste avoir modifié une traduction, je vais tenter votre astuce. Mais en pratique, comment dois-je procéder ? Juste rajouter le code au fichier AdminController ?
    Merci

    1. Bonjour,

      Attention cette modification a été réalisée pour corriger un problème de traduction lors du développement d’un module.
      Elle ne s’applique donc pas forcément pour un problème global, il faut bien identifier votre problème initial.

  2. Bonjour je travaille egalement sur prestasop 1.7 et moi j’ai la meme erreur en essayant d’acceder au onglet contact , Category , Devises de la page Admin
    Comment je dois proceder pour effectuer la surcharge
    FatalThrowableError in AdminController.php line 2755:
    Call to a member function trans() on null

  3. Same issue updating to v1.7
    The only different/special module we have is the « amazon integration module » (from Common-Services). Can not confirm if the issue comes from it, but your solution grant us access to admin.
    Thanks
    ——
    Mismo problema al actualizar a v1.7
    El único módulo diferente / especial que tenemos es el « módulo de integración con amazon » (de Common-Services). No puedo confirmar si el problema proviene de él, pero tu solución nos ha dado acceso al admin.
    Gracias
    ——
    Même problème après mise à jour à v1.7
    Le seul module différent / spécial que nous avons est le « module d’intégration avec amazon » (de Common-Services). Onne peut pas confirmer si le problème vient de là, mais votre solution nous a permit d’accéder à l’administrateur.
    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *