LangOnet - Présentation générale

Un outil destiné aux personnes qui développent pour vérifier, générer, éditer ou afficher les items de langue d’un plugin, d’un squelette ou des fichiers originaux de SPIP.

Objectif

La mise au point des fichiers de langue d’un plugin ou d’un squelette est souvent une activité fastidieuse que l’on repousse à la fin des développements (toute ressemblance avec la documentation est fortuite...)
Ceci est particulièrement vrai quand on opère des mises à jour lourdes sur un développement déjà multilingue.

LangOnet passe en revue tous les fichiers du site : tant les fichiers originaux de SPIP que ceux des plugins installés (activés ou non) ou les éventuels fichiers-squelettes de personnalisation.

Ce plugin aide ainsi à la mise au point des chaînes de langue en proposant :

  • Une vérification de la bonne définition des items de langue (utilisés dans le code HTML ou PHP mais non définis dans les fichiers de langue) ;
  • Une vérification de la bonne utilisation des items de langue (définis mais non utilisés dans le code) ;
  • Une recherche des chaînes de langue utilisées avec la fonction _L() (items à traduire) ;
  • Un affichage en clair d’un fichier de langue ;
  • Une recherche des items de langue SPIP à partir de leur clef (raccourci) ou d’un extrait de leur valeur (traduction affichée) ;
  • Une génération d’un fichier de langue « cible » qui complète, avec les items trouvés, un fichier de langue « source » (en UTF-8 ou ASCII et entité XML) ;
  • Une génération d’un script Shell, dont l’exécution remplace dans les fichiers PHP et HTML les chaînes de langue (i.e. les premiers arguments de _L et les textes libres entre < : et :>) par des items de langue bien écrits et intuitifs, ce script est ajouté au fichier de langue mentionné ci-dessus (cette fonctionnalité est apparue avec la version 0.7.0).
  • Une édition en ligne des fichiers de langue (à partir de la version 1.4)
  • Une génération d’un fichier traduction à partir d’une langue source (à partir de la version 1.4)

Installation

Comme tout plugin, il suffit de suivre les procédures manuelles ou automatiques standard : veuillez vous reporter à cette documentation : SPIP-1-9-Les-Plugins.

À partir de SPIP 3.1, LangOnet se trouve dans le menu Développement.

Pré-requis

À partir de la version 0.5.2, il est nécessaire d’activer le plugin Itérateurs pour être en mesure d’utiliser LangOnet. Pour les versions antérieures il fallait activer SPIP-Bonux 2.

Depuis le version 1.0.0 le plugin n’a plus besoin de Itérateurs

Pertinence et limites

Les analyses effectuées par LangOnet sont basées sur des expressions rationnelles (RegExp) qui débusquent chaînes et items de langue dans des fichiers écrits en différents langages et sous des expressions parfois peu évidentes.

Dans sa version actuelle, LangOnet est capable de rechercher des items de langue dans les fichiers :

  • de code PHP (exemple : fonctions_plugin.php),
  • de squelette HTML (exemple : ma_page.html),
  • de définition XML ou YAML( exemple : plugin.xml).

Dans ces fichiers, LangOnet est capable de repérer des utilisations telles que :

  • <:item_de_langue5:>
  • <:texte pour lequel Langonet fabriquera un index:>
  • <:pluga:item_de_langue4:>
  • <:module:item_de_langue3{arg1=texte, arg2=#BALISE}|filtre1{texte, #BALISE}:>
  • _T('plugb:item_de_langue1', array('dest'=>$dest, 'bli' => 'blo'))
  • _T('module:item_de_langue2_' . $truc . 'n')
  • _T('module:item_de_langue6_' . $truc['bla'] . 'aa')
  • _T("item_de_langue7_" . $truc[$bla] . 'aa')
  • _T("item_de_langue9' . is_string($val) ? '_'.  $val : '')
  • _T("module:$variable")
  • _T("module:" . $variable)
  • _T('module:' . $variable)
  • _U("item_de_langue8")
  • _L("Ceci est une chaîne qu'il faut traduire")
  • _L("Ceci est une $expression à traduire @urgence@", array('urgence' => 'bientôt'))

Comme on peut le voir, si le plus grand nombre des utilisations possibles est ainsi couvert. « Toutes » les écritures contenant des items de langue ne sont cependant pas repérées aujourd’hui, et LangOnet ne conduit pas toujours à une information certaine. Par exemple, dans le plugin Rainette, les situations météorologiques sont connues par un numéro de 0 à 47 ; le fichier de langue rainette_fr.php se présentant ainsi :

   
  'meteo_0'  => 'tornade',
  'meteo_1'  => 'temp&ecirc;te tropicale',
  'meteo_10' => 'pluie vergla&ccedil;ante',
  'meteo_11' => 'averses',
  'meteo_12' => 'averses',
  'meteo_13' => 'quelques flocons',
  'meteo_14' => 'faibles averses de neige',
  'meteo_15' => 'blizzard',
  ...
   

L’utilisation qui en est faite dans le code est la suivante :

   
function rainette_resume_meteo($code_icon) {
  include_spip('inc/rainette_utils');
  $resume = ucfirst(_T('rainette:meteo_' . code2icone($code_icon)));
  return $resume;
}
   

Ici, l’utilisation des items meteo_xx dans la fonction rainette_resume_meteo() ne permet pas à LangOnet de savoir avec certitude si toutes les valeurs de 0 à 47 sont bien utilisées. LangOnet ne fournira donc qu’un avertissement appelant l’auteur à procéder à une vérification manuelle...

Les principes de l’interface d’utilisation

Tout se passe dans l’espace privé du site (sous-menu de Configuration ou Maintenance suivant que vous utilisiez Bandeau 2.1 ou pas. Vous pouvez aussi vous rendre directement à l’adresse ?exec=langonet_verifier).

La page affichée par défaut en cliquant sur l’entrée de menu « Vérifier les langues » est présentée ci-dessous. On y distingue les quatre onglets permettant d’accéder aux différentes fonctions du plugin.

La partie centrale affiche, d’une part, le « formulaire de paramétrage » de la fonction LangOnet en cours d’utilisation, et d’autre part, le « bloc des résultats ». Ces résultats utilisent un jeu de couleurs : vert, jaune ou rouge afin d’attirer l’attention sur le niveau d’erreur détecté.

La colonne de gauche présente les fichiers de log des vérifications ou la liste des fichiers de langue générés. Ces fichiers sont créés dans le répertoire tmp/langonet/. Il est possible de les télécharger sans passer par le FTP en cliquant simplement sur leur nom et en utilisant le plugin MediaBox, un « popup » de visualisation des fichiers s’ouvre d’un simple clic sur l’icône présente à droite du nom du fichier.

À partir de la version 0.7.0, ce répertoire contient également le script Shell dont l’exécution provoque la modification des fichiers PHP et HTML contenant les chaînes de langues. Actuellement il doit être récupéré par FTP et placé dans le répertoire des fichiers pour lesquels il a été produit. Lors d’une première exécution, on vérifiera que les substitutions sont acceptables : les limites exposées ci-dessus font que le découpage des chaînes de langue trouvées n’est pas toujours optimal, et le nom des items qui les remplaceront pas toujours intuitif, particulièrement pour les chaînes de plus de 32 caractères. Quelques adaptations manuelles seront alors nécessaires.

À partir de la version 1.4.0, LangOnet propose deux nouvelles fonctions :

  • édition des fichiers de langue
  • éditer la traduction d’un fichier d’une langue source à une langue destination (c’est à vous de saisir la traduction).

Les fichiers créés n’écrasent pas les fichiers d’origine mais sont stockés dans le répertoire tmp/langonet. Il faudra ensuite les télécharger et les placer au bon endroit.

Interface de traduction
Les champs indiqués en orange ne sont pas encore traduits (ou sont identiques à la langue source)
Les champs indiqués en vert sont traduits

Limites
Ce plugin est destiné à aider à la traduction de plugins et squelettes « maisons ». Pour des plugins majeurs, il est conseillé de passer par le site dédié de traductions de SPIP https://trad.spip.net/

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom