Jump to content

Traduction des messages dans override


Recommended Posts

Bonjour,

J'ai modifié le fichier contactform.php, et pour éviter qu'il soit écrasé à la mise à jour de Prestashop, j'ai intégré une partie du script dans le dossier override, celui-ci fonctionne parfaitement à ce que j'attendais. Malheureusement, les traductions des modules installés ne fonctionnent pas.

Voici une ligne du script

$this->context->controller->errors[] = $this->l('Les liens ne sont pas autorisés dans le message');

Avant de vous demander, j'ai fait plusieurs recherches en vain et les sujets commence à dater.

Aviez-vous une idée à me proposer pour profiter des traductions même dans l'override ?

Link to comment
Share on other sites

19 hours ago, Mediacom87 said:

Bonjour,

je n'ai jamais pu faire fonctionner une traduction dans un override php

C'est fort dommage de ne pas pouvoir traduire lorsqu'on fait override.

J'ai trouvé un sujet qui parle des traductions en override, et la personne apparemment, elle a trouvé la solution. Par contre, je ne comprends pas du tout son script.

Si vous pouviez avoir la gentillesse de m'aider à comprendre ce script.

https://www.prestashop.com/forums/topic/178143-traduction-override-des-admintabs/

Merci

Link to comment
Share on other sites

On 9/10/2021 at 2:02 PM, Knowband Plugins said:

Pour les transactions de remplacement, veuillez essayer d'utiliser le code ci-dessous:

$this->trans('Translation text.', array(), 'Shop.Notifications.Error');

 

Bonjour,

j'ai remplacé ma ligne de script

$this->context->controller->errors[] = $this->l('Les liens ne sont pas autorisés dans le message');

par la votre

$this->trans('Translation text.', array(), 'Shop.Notifications.Error');

et la traduction dans l'override du fichier contactform.pfp ne fonctionne toujours pas.

Pourriez-vous être plus explicite ?

Link to comment
Share on other sites

On 9/13/2021 at 10:42 AM, Mediacom87 said:

et ce sujet :

 

Bonjour,

Merci de bien vouloir m'aider.

J'ai fait mon possible pour comprendre et j'ai fait des essais, sans obtenir de résultat concret.

J'ai regardé ce sujet et au post, il y a la phrase (Créer les champs à traduire directement en base dans la table ps_translations (en retirant les points du domaine, par exemple "Admin.Actions" devient "AdminAction"))

La table ps_translations n'existe pas dans ma base de données.

Pouviez-vous m'apporter des éclaircissements ?

Link to comment
Share on other sites

Franchement, concernant le sujet des traductions sur Prestashop 1.7 je passe la main, en essayant d'améliorer les choses ils ont fait pire et surtout Personne chez PrestaShop n'est en capacité de faire que cela fonctionne convenablement, donc j'abandonne.

Cela fait plus de 5 ans que nous sommes certains à soulever ce genre de problème mais il y a plus urgent semble t il.

Link to comment
Share on other sites

1 hour ago, Mediacom87 said:

Franchement, concernant le sujet des traductions sur Prestashop 1.7 je passe la main, en essayant d'améliorer les choses ils ont fait pire et surtout Personne chez PrestaShop n'est en capacité de faire que cela fonctionne convenablement, donc j'abandonne.

Cela fait plus de 5 ans que nous sommes certains à soulever ce genre de problème mais il y a plus urgent semble t il.

Ok Mediacom87, je vais laisser tomber. Plus urgent oui, par exemple les updates plantent.

Bon weekend à toi et merci.

Link to comment
Share on other sites

  • 2 years later...
On 9/13/2021 at 10:34 AM, osyris said:

Bonjour,

j'ai remplacé ma ligne de script

$this->context->controller->errors[] = $this->l('Les liens ne sont pas autorisés dans le message');

par la votre

$this->trans('Translation text.', array(), 'Shop.Notifications.Error');

et la traduction dans l'override du fichier contactform.pfp ne fonctionne toujours pas.

Pourriez-vous être plus explicite ?

Salut,

 

Pour traduire avec le domaine via trans il faut ajouter l'entrée dans le fichier app/Resources/translations/default/ puis le fichier qui correspond au domaine, dans votre cas pour 

Shop.Notifications.Error

ce sera le fichier 

ShopNotificationsError.xlf



Ensuite comme vous cherchez a rajouter une traduction dans "contactform.php" cherchez si il existe déjà un bloc avec ce fichier par exemple:
 

<file original="classes/ContactForm"

Si non, alors créez le bloc file avec le body et le trans-unit.

L'attribut id de "trans-unit" sera le hash MD5 de votre texte a traduire soit "Translation text."

Les valeurs de source & target seront le texte a traduire soit "Translation text."

La valeur de note n'a pas de réel importance.

Exemple:

<trans-unit id="b184c65824e045774cf27cf7b72c1d3b">
   <source>Translation text.</source>
   <target>Translation text.</target>
   <note>Line: 101</note>
</trans-unit>

Après ca vous pourrez retrouver votre traduction coté Back office dans Localisation > Traduction > Theme ou Module en fonction de votre domaine, pour vous ce sera Theme et votre theme.

 

Enjoy :)

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour Spiriit Agency,

Tout d'abord, je tiens à m'excuser pour le retard de ma réponse. Merci infiniment d'avoir pris le temps de partager tes conseils. Après avoir examiné attentivement ce que tu as proposé, je suis navré, mais je n'ai pas bien compris les étapes à suivre pour obtenir les traductions.

Pourrais-tu s'il te plaît fournir des clarifications supplémentaires ou des instructions plus détaillées ?

Encore une fois, je m'excuse pour le délai et je te suis reconnaissant pour ton aide.

Link to comment
Share on other sites

  • 1 month later...

Bonjour ,

si ça peut aider:

Dans le fichier contactform.php :

     

   // overide seb  condition pour exclure le http dans les message
        
        if(preg_match('/http(s?):\/\//ism',$message)) 
        {
           $this->context->controller->errors[] = $this->trans(
                'Nous autorisons pas Les urls dans le message.',
                [],
                'Modules.Contactform.Shop'
                
           );
           
            return;
            
        }
        
// overide seb  condition pour exclure les www. dans les message
        
        if(preg_match('/www./ism',$message)) 
        {
           $this->context->controller->errors[] = $this->trans(
                'Nous autorisons pas Les urls dans le message.',
                [],
                'Modules.Contactform.Shop'
                
           );
           
            return;
            
        }

 

Via un générateur de hashMD5:  https://www.md5hashgenerator.com/fr/ vous générez le hashmad5 de votre texte ici

Nous autorisons pas Les urls dans le message. généré = 8539b7d238f7d65154d454623a1d2236

 

 

Ensuite dans le fichier \app\Resources\translations\default\ModulesContactformShop.xlf 

vous ajoutez :

 <trans-unit id="8539b7d238f7d65154d454623a1d2236">
        <source>Nous autorisons pas Les urls dans le message.</source>
        <target>Nous autorisons pas Les urls dans le message.</target>
        <note>Line: 485</note>
      </trans-unit>

 

Ensuite dans le fichier \app\Resources\translations\fr-FR\ModulesContactformShop.fr-FR.xlf et/ou dans tous les autres dossiers de traduction que vous souhaité

vous ajoutez :

 

<trans-unit id="8539b7d238f7d65154d454623a1d2236" approved="yes">
        <source>Nous autorisons pas Les urls dans le message.</source>
          <target state="final">Nous autorisons pas Les urls dans le message.</target>
        <note>Line: 485</note>
      </trans-unit>

Ensuite via le BO dans traduction du module formulaire de contact, vous verrez les nouveaux champs ajouté :-)

 

Salut 😉 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...