Traduire un module en français

Date 01/09/2007 | Sujet : Documentations

Il arrive parfois que l'on souhaite utiliser un module pour lequel les fichiers du langage français n'existent pas, ou ne sont pas à jour compte tenu de l'évolution des versions.


L'objectif de cet article est de vous procurer une méthode qui soit à la fois fiable et performante.


1. Création du dossier french

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.

2. Utilisation d'un éditeur

Il convient ensuite avec un éditeur de texte tout simple (bloc-notes, pspad, notepad++, ultraedit...) 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.

3. Les délimiteurs

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:");

4. Les caractères accentués

Pour le codage des caractères accentués, je vous renvoie à cette page qui explique le pourquoi du comment. Mais comme il n'est pas très pratique de relire facilement son texte une fois que l'on a commencé à y mettre le code html de ces caractères accentués, je vous suggère de rédiger votre traduction normalement et d'utiliser ensuite un utilitaire comme html_helper qui vous convertira en 2 clics tous les fichiers du répertoire choisi dans un sens ou dans l'autre.

5. Mettre à jour une version antérieure

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.

6. Recommandations

Les fichiers présents dans ce répertoire portent toujours le même nom :

  • admin.php : affichage de l'interface d'administration
  • blocks.php : affichage des blocs
  • main.php : affichage de l'interface coté utilisateur
  • modinfo.php : affichage de la page préférences du module
Il se suffit pas de traduire simplement la phrase qui vous est présentée sur chacune des lignes du fichier en cours, il convient de tester simultanément le module afin d'adapter la traduction au contexte dans lequel se situe la variable. Cette phase de test servira autant à vérifier la bonne adéquation de votre traduction qu'à contrôler que le module ne provoque pas d'erreurs suite à une imperfection dans votre travail. C'est la raison pour laquelle il faut préalablement activer le mode debug avant de commencer.

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é.





Cet article provient de Communauté Francophone des Utilisateurs de Xoops
https://www.frxoops.org

L'adresse de cet article est :
https://www.frxoops.org/modules/news/article.php?storyid=1382