Diffuser les informations de traduction des plugins

, par _Eric_

Déclarer à Salvatore les modules à traduire

Fonctionnement actuel

Aujourd’hui Salvatore se base sur le fichier traductions.txt, inclus dans l’outil lui-même, pour définir la liste des modules à traduire via TradLang. Le format de ce fichier est le suivant :

# Spip-proprio (deux fichiers)
svn://zone.spip.org/spip-zone/_plugins_/spip_proprietaire/lang/;spip_proprio;fr
svn://zone.spip.org/spip-zone/_plugins_/spip_proprietaire/lang/;textes_legaux;fr

On y retrouve donc :

  • l’adresse SVN du répertoire contenant le module de langue concerné,
  • le module de langue
  • la langue de référence à partir de laquelle les autres langues sont traduites.

Évolution

L’idée de base est d’inclure dans le fichier plugin.xml l’information relative à la traduction d’un module du plugin par le couple Salvatore / TradLang. Pour ce faire, on ajoute à chaque plugin.xml concerné la balise XML suivante :

<traduire module="menus" gestionnaire="salvatore" reference="fr" />

Ensuite, pour éviter de modifier les traitements actuels de Salvatore, on construit le fichier traductions.txt à partir des plugin.xml.

La génération est confiée à Smart-Paquets qui actuellement scanne déjà l’ensemble des plugins d’un dépôt. Le fichier traductions.txt est produit au même emplacement que archives.xml ce qui nécessite de modifier Salvatore en conséquence.

Evolution codée dans smart-paquets. cependant, le fichier résultant n’est pas encore utilisé par Salvatore

Remarque : il faut aussi traiter proprement les cas particuliers de SPIP, de forum.spip.net, de spip-loader...

Produire les rapports de traduction via Salvatore

Pour permettre à des outils comme SVP d’informer les utilisateurs sur les traductions des plugins, il est nécessaire de produire ces informations via Salvatore. Les informations concernées sont les langues traduites et leurs traducteurs.

Toutes ces données sont présentes dans la base TradLang — les traducteurs sont en cours de mise à jour — et il est donc possible pour Salvatore de les compiler lors de la production des fichiers de langue traduits.

Pour un module donné, par exemple « menus », outre les fichiers de langue lang/menus_fr.php, lang/menus_en.php... Salvatore produirait un fichier lang/menus.xml contenant les langues traduites et les traducteurs associés comme suit :

<traduction module="menus" gestionnaire="salvatore" reference="fr">
        <langue code="de">
                <traducteur nom="Klaus" />
                <traducteur nom="Kent1" />
        </langue>
        <langue code="en">
                <traducteur nom="Paolo" />
        </langue>
        <langue code="it" />
</traduction>

Evolution codée dans Salvatore et opérationnelle

Diffuser les informations sur les traductions

À partir du moment où les rapports de traductions sont accessibles dans un fichier géré en configuration sur la Zone, ces informations sont consultables par des développeurs ! Pour étendre l’accessibilité de ces informations aux utilisateurs, il est nécessaire de fournir une autre plate-forme d’accès que la Zone.

L’idée est donc de stocker ces informations dans les tables SVP et de les afficher dans la page plugin du futur site plugins.spip.net. Pour ce faire il faut procéder en deux étapes :

  1. Faire évoluer Smart-Paquets pour qu’il intègre les rapports de traductions dans le fichier archives.xml
  2. Faire évoluer SVP pour qu’il stocke et affiche les traductions collectées

Évolution de Smart-Paquets

Pour être en mesure de fournir les informations de traduction de chaque plugin il faut que Smart-Paquets gère les cas des plugins traduits manuellement ou utilisant l’interface TradLang/Salvatore.

Pour les plugins utilisant TradLang/Salvatore, Smart-Paquets liste les rapports de traductions lang/module.xml et insère directement leur contenu dans le fichier archives.xml.

Pour les plugins traduits manuellement, Smart-Paquets scanne le répertoire lang/ à la recherche des fichiers de langue module_code.php et insère le bloc xml ainsi construit dans le fichier archives.xml. Cependant, les informations sur les traducteurs ne seront pas disponibles.

Evolution codée dans smart-paquets et opérationnelle

Évolution de SVP

Elle consiste uniquement à traiter la balise nouvellement incluse dans le fichier archives.xml et à stocker les informations dans la base de données. Plus précisément le champ traductions de la table spip_paquets contient un tableau sérialisé proposant par module de langue les informations suivantes :

  • le gestionnaire de langue utilisé pour les traductions : salvatore/vide
  • le code de la langue de référence, fr par défaut si le rapport xml n’existe pas
  • le tableau des langues traduites (hors la langue de référence) et des traducteurs associés. Vide si aucune autre langue que celle de référence n’est encore traduite.

Evolution codée dans SVP et opérationnelle.