Les normes de développement des modules prévoient que les fichiers de langue de ceux-ci soient positionnés dans le répertoire language du module.
Considérant qu'en principe les fichiers du répertoire english sont corrects, il faut commencer par copier le répertoire english situé dans le dossier language pour le coller au même endroit et le renommer en french.
Il convient ensuite avec un éditeur de texte comme notepad++ d'éditer les fichiers un à un pour commencer la réalisation de la traduction.
Lorsqu'on ouvre l'un des fichiers on trouve une présentation quasiment toujours identique comme celle-ci :
<?php
// $Id: main.php,v 1.3 2005/10/19 17:20:33 phppp Exp $
if(defined('MAIN_DEFINED')) return;
define('MAIN_DEFINED',true);
define('_MD_ERROR','Error');
define('_MD_NOPOSTS','No Posts');
define('_MD_GO','Go');
define('_MD_SELFORUM','Select a Forum');
Il est donc nécessaire de traduire tout ce qui se trouve après la virgule, ce qui va donc donner :
<?php
// $Id: main.php,v 1.3 2005/10/19 17:20:33 phppp Exp $
if(defined('MAIN_DEFINED')) return;
define('MAIN_DEFINED',true);
define('_MD_ERROR','Erreur');
define('_MD_NOPOSTS','Aucun message');
define('_MD_GO','Aller au module');
define('_MD_SELFORUM','Sélectionner un forum');
Comme on peut le constater, certains développeurs insèrent parfois du code php un peu différent qu'il convient de ne pas modifier sans en connaitre les conséquences.
Selon les habitudes des développeurs on remarquera que les variables sont protégées par des délimiteurs qui peuvent être soit l'apostrophe simple, soit le guillemet (double apostrophe). L'apostrophe simple peut poser quelques soucis avec notre langage qui peut nécessiter l'utilisation de ce caractère dans la traduction que l'on aura à réaliser; ce qui ne manquera pas de provoquer une erreur dans le module si l'on ne prend pas quelques précautions. Dans ce genre de situation, il vous est proposé deux possibilités pour remédier à cette difficulté. Soit vous faites précédez le caractère apostrophe du symbole \, soit vous remplacer le délimiteur apostrophe par le guillemet, ce qui vous donne donc le résultat suivant :
//Ligne originale
define('_MD_PENDING_POSTS_FOR_AUTH','Posts pending approval:');
//Proposition 1 avec le symbole
define('_MD_PENDING_POSTS_FOR_AUTH','Messages en attente d'approbation :');
//Proposition 2 remplacement de l'apostrophe par des guillements
define("_MD_PENDING_POSTS_FOR_AUTH","Messages en attente d'approbation:");
Traduisez votre fichier avec des lettres et caractères normalement. Une fois votre fichier traduit, encodez-le en UTF_8 sans BOOM (Voir tutoriel)
Un développeur vient de publier une nouvelle version de son module, et vous disposez des fichiers de traduction d'une version antérieure. Il est possible que l'auteur ait rajouté des "define" pour gérer de nouvelles variables à différents endroits dans les différents fichiers, ce qui peut paraître rebutant au premier abord. Pour ne pas avoir à rechercher partout où se situent les nouveautés, ou réécrire la totalité des fichiers de traduction, il est possible de contrôler aisément ces différences en utilisant un logiciel adapté comme winmerge. Soyez rassuré si l'interface de téléchargement est en anglais, vous pourrez à l'installation choisir une interface en français.
Si vous avez déjà une version ancienne des fichiers langues pour ce module, vous pouvez copier votre dossier french dans le répertoire language. Avec winmerge, ouvrez d'abord un fichier du dossier english, puis le même dossier du répertoire french. Les couleurs vous guideront sur les lignes identiques, manquantes ou supplémentaires. Vous pouvez effectuez des copier/coller entre la partie gauche en anglais vers la partie droite où se situe le fichier français, puis traduire directement dans cette partie droite.
Les fichiers présents dans ce répertoire portent toujours le même nom :
Si vous vous retrouvez avec une page blanche sans indications alors que le module fonctionnait auparavant, il existe de fortes probabilités qu'une erreur se soit glissée dans votre travail, essayez de la retrouver le mode debug est censé vous fournir le nom et la ligne du fichier concerné.