{"id":1268,"date":"2016-02-07T17:20:14","date_gmt":"2016-02-07T15:20:14","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1268"},"modified":"2017-08-25T17:40:57","modified_gmt":"2017-08-25T15:40:57","slug":"prestashop-ajouter-vos-traductions-dans-les-fichiers-de-traductions","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2016\/02\/07\/prestashop-ajouter-vos-traductions-dans-les-fichiers-de-traductions\/","title":{"rendered":"Prestashop : Ajouter vos traductions dans les fichiers de traductions"},"content":{"rendered":"<p>J&rsquo;ai encore rencontr\u00e9 r\u00e9cemment le probl\u00e8me bien connus des utilisateurs de prestashop qui souhaitent changer les traductions depuis le back-office.<\/p>\n<p>L&rsquo;erreur d&rsquo;affichage des champs de formulaire \u00ab\u00a0max_input_vars\u00a0\u00bb qui empeche d&rsquo;afficher les traductions, et donc de les modifier depuis l&rsquo;administration.<\/p>\n<p>J&rsquo;avais apport\u00e9 une solution il y&rsquo;a plusieurs ann\u00e9es pour corriger ce probl\u00e8me sur un h\u00e9bergement mutualis\u00e9 ovh : <a href=\"https:\/\/www.h-hennes.fr\/blog\/2013\/08\/23\/prestashop-probleme-max_input_vars-en-hebergement-mutualise-chez-ovh\/\">Prestashop probl\u00e8me max_input_vars en h\u00e9bergement mutualis\u00e9 chez ovh <\/a>( Elle ne doit plus fonctionner malheureusement )<\/p>\n<p>Dans le cas de ceux qui disposent d&rsquo;un serveur d\u00e9di\u00e9 avec les acc\u00e8s n\u00e9cessaires, la modification du php.ini corrige rapidement ce probl\u00e8me.<\/p>\n<p>Pour mon probl\u00e8me j&rsquo;avais uniquement quelques traductions \u00e0 r\u00e9aliser, l&rsquo;ajout des informations de traductions directement dans les fichiers de traductions est donc une solution envisageable.<\/p>\n<p>Le fonctionnement est assez simple , la cl\u00e9 de traduction est construite de la mani\u00e8re suivante<\/p>\n<p>&lt;{<span style=\"color: #ff0000;\"><strong>nomModule<\/strong><\/span>}<span style=\"color: #ff6600;\"><strong>nomTheme<\/strong><\/span>&gt;<span style=\"color: #008000;\"><strong>nomFichier<\/strong><\/span>_<span style=\"color: #0000ff;\">md5(<strong>cleTraduction<\/strong>)<\/span><\/p>\n<p>Cette cl\u00e9 de traduction est ajout\u00e9e dans la variable $_MODULE , qui contient toutes les traductions.<\/p>\n<p>Par exemple la traduction du code ci-dessous , dans le fichier banwire.php<\/p>\n<pre lang=\"php\" escaped=\"true\">$this-&gt;displayName = $this-&gt;l('Bank wire');\r\n<\/pre>\n<p>est stock\u00e9 sous la forme suivante :<\/p>\n<pre>$_MODULE['&lt;{<span style=\"color: #ff0000;\"><strong>bankwire<\/strong><\/span>}<span style=\"color: #ff6600;\"><strong>prestashop<\/strong><\/span>&gt;<span style=\"color: #008000;\"><strong>bankwire<\/strong><\/span>_<span style=\"color: #0000ff;\">05adcee99142c1a60fb38bb1330bbbc1<\/span>'] = 'Virement bancaire';\r\n<\/pre>\n<p>Vous pouvez-voir gr\u00e2ce aux codes couleurs comment la cl\u00e9 est construite.<br \/>\nC&rsquo;est tout pour la th\u00e9orie, voici maintenant un petit script qui vous donnera la cl\u00e9 de traduction que vous souhaitez !<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;Translation tool&lt;\/title&gt;\r\n&lt;style&gt;\r\nlabel,input {float:left;}\r\ndiv.row {clear:both;margin-top:10px; height:40px;}\r\ndiv.hint {font-style:italic;clear:left;}\r\n.results {border:1px solid; padding:10px;margin:10px;}\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\r\n&lt;?php if ( isset($_POST)\u00a0 &amp;&amp; sizeof($_POST) ) : ?&gt;\r\n&lt;div class=\"results\"&gt;\r\n\r\n&lt;?php\r\n\r\n\/\/S\u00e9curisation basique des entr\u00e9es\r\n$datas = array();\r\nforeach ( $_POST as $key =&gt; $value)\r\n$datas[$key] = trim(strip_tags($value));\r\n\r\n\/\/Cr\u00e9ation de la cl\u00e9 du tableau de traduction\r\n$translation = '&lt;{'.$datas['module_name'].'}'.$datas['theme_name'].'&gt;'.$datas['file_name'].'_'.md5($datas['translate_key']);\r\n\r\necho '&lt;p&gt;La cl\u00e9 de traduction pour le module '.$datas['module_name'].', pour le theme '.$datas['theme_name'].' dans le fichier '.$datas['file_name'].'&lt;\/p&gt;';\r\necho $translation;\r\n?&gt;\r\nPour ins\u00e9rer la traduction \u00e0 votre module ajouter la ligne suivante dans le fichier de traduction souhait\u00e9 &lt;br \/&gt;\r\n&lt;?php echo '$_MODULE['.$translation.'] = \\''.addslashes($datas['translate_value']).\"'\"; ?&gt;\r\n\r\n&lt;p&gt;Fichier de traduction global du module , ou fichier de traduction du module dans le th\u00e8me souhait\u00e9 &lt;\/p&gt;\r\n\r\n&lt;\/div&gt;\r\n&lt;?php endif; ?&gt;\r\n&lt;form name=\"translate\" id=\"translate_form\" method=\"post\"&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;label for=\"module_name\"&gt;Nom du module&lt;\/label&gt;\r\n&lt;input type=\"text\" name=\"module_name\" \/&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;label for=\"file_name\"&gt;Nom du fichier&lt;\/label&gt;\r\n&lt;input type=\"text\" name=\"file_name\" \/&gt;\r\n&lt;div class=\"hint\"&gt;Nom du fichier dans lequel est situ\u00e9 la traduction (sans extension )&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;label for=\"theme_name\"&gt;Nom du th\u00e8me&lt;\/label&gt;\r\n&lt;input type=\"text\" name=\"theme_name\" value=\"prestashop\" \/&gt;\r\n&lt;div class=\"hint\"&gt;Nom du th\u00e8me pour la traduction&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;label for=\"translate_key\"&gt;Cl\u00e9 de traduction&lt;\/label&gt;\r\n&lt;input type=\"text\" name=\"translate_key\" \/&gt;\r\n&lt;div class=\"hint\"&gt;Nom de la cl\u00e9 de traduction ( qui ne doit pas contenir de caract\u00e8re sp\u00e9ciaux)&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;label for=\"translate_value\"&gt;Valeur de traduction&lt;\/label&gt;\r\n&lt;input type=\"text\" name=\"translate_value\" \/&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"row\"&gt;\r\n&lt;input type=\"submit\" value=\"Envoyer\" \/&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;\/form&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>C&rsquo;est un script tr\u00e8s basique, mais qui devrait pouvoir vous permettre de gagner du temps pour des corrections ou ajouts de traductions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai encore rencontr\u00e9 r\u00e9cemment le probl\u00e8me bien connus des utilisateurs de prestashop qui souhaitent changer les traductions depuis le back-office. L&rsquo;erreur d&rsquo;affichage des champs de formulaire \u00ab\u00a0max_input_vars\u00a0\u00bb qui empeche d&rsquo;afficher les traductions, et donc de les modifier depuis l&rsquo;administration. J&rsquo;avais apport\u00e9 une solution il y&rsquo;a plusieurs ann\u00e9es pour corriger ce probl\u00e8me sur un h\u00e9bergement mutualis\u00e9 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[421,104,420],"class_list":["post-1268","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-cle-de-traductions","tag-prestashop","tag-traduction"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1268"}],"version-history":[{"count":7,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1268\/revisions"}],"predecessor-version":[{"id":1586,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1268\/revisions\/1586"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}