liandri Posted August 6, 2009 Share Posted August 6, 2009 Bonjour,Voici un petit tutoriel expliquant la méthode à suivre pour gérer les langues dans votre développement de modules pour PrestaShop.Ceci est une proposition de méthode de travail, et est ouverte à toute proposition d’amélioration.Préface : J'ai relevé sur PrestaShop plusieurs gestions de langues différentes, ou du moins pour des usages différents :* les langues appelées et gérées par les templates de votre thème* les langues appelées et gérées par les modules dans le code php* les langues appelées et gérées par l'administration, backoffice, pdf et autres1. / Les langues appelées et gérées par les templates de votre thèmeL'appel à la fonction de traduction se fait grâce à l'usage de smarty, et nous retrouvons ici un exemple de déclaration : {l s='My English text'} Si la langue anglaise est activée sur la boutique, ce petit bout de code affichera par défaut : My English textLa politique de développement de PrestaShop, à ce que j'en ai perçu jusqu'à présent, prend comme référence principale pour ses appels la langue anglaise. Viennent ensuite se greffer les autres langues.Pour que ce petit bout de texte devienne alors : Mon texte en Français, il va falloir faire une petite gymnastique dans le fichier : /themes/monthemeperso/lang/fr.php PS : la méthode est la même pour les autres langues : es.php, de.php, it.php, etc.Essayons de comprendre ce que nous donne le fichier fr.php, par exemple rajoutons à la fin : $_LANG['mapagetpl_799ac8b3ad61de03f06c49fb56f0309d'] = 'Mon texte en Français'; Où :* mapagetpl : correspond tout simplement au nom du fichier tpl sur lequel est déclaré {l s='My English text'}, en enlevant l'extension .tpl à la fin* 799ac8b3ad61de03f06c49fb56f0309d : correspond au hashage MD5 du texte original de la vesrion Anglaise : My English text. Personnellement, pour aller vite, je traduis par hash md5 l'exactitude du texte sur la page : http://md5-hash-online.waraxe.us/* Mon texte en Français : correspond à la traduction que vous voulez en faire.Voilà, vous n'avez plus qu'à créer vous même dans vos templates de thèmes la traduction que vous souhaitez. L'avantage est que ces traductions sont totalement indépendantes du noyau de PrestaShop, et se greffent uniquement à votre thème. Donc s'il y a une mise à jour, vous ne perdrez pas vos traductions. Contrairement à ce qui va suivre...2. / Les langues appelées et gérées par les modules dans le code phpNous retrouvons l'appel à la fonction de traduction dans php par une déclaration telle que : $this->l('My English text') Un peu à la manière précédente pour les templates, vous pouvez directement gérer dans le code php vos traductions de langues. Cette méthode est utile lors de la création d'un module avec pourquoi pas, un formulaire de configuration que l'on souhaiterai multilingue lors du changement de langue dans le backoffice.Par défaut, c'est encore la langue anglaise qui sert de référence, et le principe de traduction reste le même (hash md5, etc.).Plaçons-nous dans un module quelconque : modulebeta que je retrouve à cet emplacement : /modules/modulebeta/modulebeta.php /modules/modulebeta/modulebeta.tpl /modules/modulebeta/modulebeta-autre.tpl /modules/modulebeta/fr.php /modules/modulebeta/en.php /modules/modulebeta/logo.gif Comme pour les templates du theme, nous remarquons la présence aussi de fr.php et par exemple rajoutons à la fin : $_MODULE['<{modulebeta}prestashop>modulebeta_799ac8b3ad61de03f06c49fb56f0309d'] = 'Mon texte en Français'; $_MODULE['<{modulebeta}prestashop>modulebeta-autre_799ac8b3ad61de03f06c49fb56f0309d'] = 'Mon texte en Français'; Où :* {modulebeta} : correspond au nom exact de votre module entre crochets* prestashop>modulebeta ou prestashop>modulebeta-autre : correspond tout simplement au nom du fichier tpl sur lequel sera envoyé la traduction, en enlevant l'extension .tpl à la fin* 799ac8b3ad61de03f06c49fb56f0309d : correspond au hashage MD5 du texte original de la vesrion anglaise : My English text.* Mon texte en Français : correspond à la traduction que vous voulez en faire.Voilà, la traduction sur les modules n'a plus de secret pour vous ! Un petit conseil, déterminez une fois pour toute, vos expressions en anglais, car sinon vous devrez retoucher le hash md5 à chaque fois, et c'est pas une partie de plaisir ! Par expérience, je ne fais la traduction qu'une fois le module terminé en anglais.suite dans le post suivant ... 1 Link to comment Share on other sites More sharing options...
liandri Posted August 6, 2009 Author Share Posted August 6, 2009 3. / Les langues appelées et gérées par l'administration, backoffice, pdf et autresPour faire simple, c'est le même fonctionnement que celui précédemment décrit pour les modules. Seul changement ici, les fichiers de traductions se trouvent dans le répertoire (depuis la racine du site, et non pas de l'admin) : /translations/fr/... Vous y trouverez alors la possibilité de traduire sur : /translations/fr/admin.php /translations/fr/errors.php /translations/fr/fields.php /translations/fr/pdf.php Arrêtons-nous sur admin.php, et voici un exemple de traduction : $_LANGADM['AdminCategories66f2dd0c775eff24ac95c38347bcaf9a'] = 'Catégorie parente :'; Où :* AdminCategories : correspond au nom du fichier et au nom de la classe php qui utilisera cette traduction dans son code. Elle correspond à ce que l'on appel un Tab, qui permet de greffer des fonctionnalités par une gestion par onglets dans le BackOffice.* 66f2dd0c775eff24ac95c38347bcaf9a : correspond au hashage MD5 du texte original de la vesrion anglaise : Parent category:.* Catégorie parente : : traduction française du texte souhaitéPour les autres traductions, le principe reste le même ! Et si vous avez lu jusque là, c'est que vous avez tout pigé bonne route ! Link to comment Share on other sites More sharing options...
ningu Posted August 6, 2009 Share Posted August 6, 2009 Pour éviter de toucher directement aux fichiers de traductions (qui ne sont pas super lisible), il existe un onglet 'Traduction' dans le back-office, sous 'Outils'. Link to comment Share on other sites More sharing options...
Atch Posted August 7, 2009 Share Posted August 7, 2009 Pour éviter de toucher directement aux fichiers de traductions (qui ne sont pas super lisible), il existe un onglet 'Traduction' dans le back-office, sous 'Outils'. +1 avec Ningu.Pour les traductions, quand je déplace un module, je file directement dans le back office, outils/traductions/modulesEn allant tout en bas, on s'apercevra que le module est présent avec le nom du theme devant.par défaut on a : prestashop - monmodulesi on déplace le tpl de monmodule dans Montheme on aura : Montheme - MonmoduleOn rempli les champs vides et automatiquement cela va générer un fichiers fr.php avec les traductions à l'intérieur.Merci Liandri pour tes Tutos, ça va servir à pas mal de monde V++Atch Link to comment Share on other sites More sharing options...
jolvil Posted August 7, 2009 Share Posted August 7, 2009 Pour le hashage Md5 de type$_MODULE['<{modulebeta}prestashop>modulebeta_799ac8b3ad61de03f06c49fb56f0309d'] = 'Mon texte en Français';il suffit simplement de faire la traduction avec l'outil de traduction du BO de Prestashop, le fichier de langue fr.php ou autre est automatiquement mis à jour sur le site distant, on peut eventuellement le donwloader si on desire l'archiver. Link to comment Share on other sites More sharing options...
liandri Posted August 7, 2009 Author Share Posted August 7, 2009 Pour le hashage Md5 de type$_MODULE['<{modulebeta}prestashop>modulebeta_799ac8b3ad61de03f06c49fb56f0309d'] = 'Mon texte en Français';il suffit simplement de faire la traduction avec l'outil de traduction du BO de Prestashop, le fichier de langue fr.php ou autre est autaumatiquement mis à jour sur le site distant, on peut eventuellement le donwloader si on desire l'archiver. Merci jolvil, effectivement, l'outil est déjà en place dans le BO et fonctionne très bien. Merci pour cette précision qui complète la mise en place "manuel" lors d'une phase de développement ! Link to comment Share on other sites More sharing options...
Natsu Posted August 7, 2009 Share Posted August 7, 2009 Atch: c'est assez étrange car je n'ai pas eu ce comportement à moins que je n'ai mal vu.Quand j'ai placé mon fichier tpl dans le théme je n'ai pas eu "Montheme – Monmodule" Link to comment Share on other sites More sharing options...
Atch Posted August 7, 2009 Share Posted August 7, 2009 Atch: c'est assez étrange car je n'ai pas eu ce comportement à moins que je n'ai mal vu.Quand j'ai placé mon fichier tpl dans le théme je n'ai pas eu "Montheme – Monmodule" Bizarre, normalement oui. (j ai toujours procédé comme cela).As tu regardé dans la traduction des modules (moi ça apparait tout en bas en général)atch Link to comment Share on other sites More sharing options...
Natsu Posted August 7, 2009 Share Posted August 7, 2009 J'irai regarder ça Merci Link to comment Share on other sites More sharing options...
Bouh Posted December 22, 2010 Share Posted December 22, 2010 Great voila qui répond très clairement à une question que je me posais ! Merci beaucoup Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now