Changeset 34411 in spip-zone


Ignore:
Timestamp:
Jan 12, 2010, 2:14:15 PM (10 years ago)
Author:
denisb@…
Message:

on propose, si existance, le nom du(des) fichier(s) de langue définissant l'item utilisé dans le répertoire scanné mais non défini dans le fichier de langue sélectionné.

Location:
_plugins_/langonet
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/langonet/formulaires/langonet_verifier.php

    r34392 r34411  
    6161}
    6262
     63/**
     64 * Vérification de l'utilisation des items de langue
     65 *
     66 * @param string $resultats
     67 * @param string $verification
     68 * @return string
     69 */
     70
     71// $resultats    => tableau des resultats (9 sous-tableaux) :
     72//                    ["module"] => intitule module
     73//                    ["ou_fichier"] => rep plugin
     74//                    ["langue"] => nom fichier de lang
     75//                    ["item_non"][] => intitule item
     76//                    ["fichier_non"][item][fichier utilisant][num de la ligne][] => extrait ligne
     77//                    ["item_peut_etre"][] => intitule partiel item
     78//                    ["fichier_peut_etre"][item][fichier utilisant][num de la ligne][] => extrait ligne
     79//                    ["definition_possible"][item][] =>nom fichier de lang
     80//                    ["statut"] => (bool)
     81// $verification => type de verification effectuee
    6382function formater_resultats($resultats, $verification='definition') {
    6483        $texte = '';
     
    7291                                $texte .= _T('langonet:message_ok_non_definis_n', array('nberr' => count($resultats['item_non']), 'ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue'])) . "\n";
    7392                        }
    74                         $texte .= afficher_lignes($resultats['fichier_non']);
    75                         $texte .= "<br />\n";
    76                 }
    77                 else {
    78                         $texte .= _T('langonet:message_ok_non_definis_0', array('module' => $resultats['module'], 'ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue']));
    79                 }
    80                 $texte .= "\n</p>\n<p class=\"reponse_formulaire reponse_formulaire_ok\">\n";
     93                        // on ferme le <p> ouvert dans langonet_verifier.html
     94                        // car ce qui suit est un <div>
     95                        $texte .= "\n</p>\n";
     96                        $texte .= afficher_lignes($resultats['fichier_non'], $resultats['definition_possible']);
     97                }
     98                else {
     99                        $texte .= _T('langonet:message_ok_non_definis_0', array('module' => $resultats['module'], 'ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue'])) . "\n";
     100                        $texte .= "</p>\n"; // <p> ouvert dans langonet_verifier.html
     101                }
     102
     103                $texte .= "<p class=\"reponse_formulaire reponse_formulaire_ok\">\n<br />";
    81104                // Liste des items definis sans certitude
    82105                if (count($resultats['item_peut_etre']) > 0) {
     
    87110                                $texte .= _T('langonet:message_ok_definis_incertains_n', array('nberr' => count($resultats['item_peut_etre']), 'langue' => $resultats['langue'])) . "\n";
    88111                        }
     112                        // on ferme le <p> ouvert au-dessus car ce qui suit est un <div>
     113                        $texte .= "\n</p>\n";
    89114                        $texte .= afficher_lignes($resultats['fichier_peut_etre']);
    90                 }
    91                 else {
    92                         $texte .= _T('langonet:message_ok_definis_incertains_0', array('module' => $resultats['module']));
    93                 }
    94         }
     115                        // on ouvre un <p> ici qui sera ferme dans langonet_verifier.html
     116                        $texte .= "\n<p>\n";
     117                }
     118                else {
     119                        $texte .= _T('langonet:message_ok_definis_incertains_0', array('module' => $resultats['module'])) . "\n";
     120                        // pas de </p> ici : il sera ferme dans langonet_verifier.html
     121                }
     122        }
     123
    95124        else {
    96125                // Liste des items non utilises avec certitude
     
    102131                                $texte .= _T('langonet:message_ok_non_utilises_n', array('nberr' => count($resultats['item_non']), 'ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue'])) . "\n";
    103132                        }
     133                        // on ferme le <p> ouvert dans langonet_verifier.html
     134                        // car ce qui suit sont des <div>
    104135                        $texte .= "</p>\n";
    105136                        asort($resultats['item_non'], SORT_STRING);
    106137                        foreach($resultats['item_non'] as $_cle => $_item) {
    107                                 $texte .= "<div class=\"titrem\">" . $_item . "</div>\n";
    108                         }
    109                         $texte .= "<br />\n";
    110                 }
    111                 else {
    112                         $texte .= _T('langonet:message_ok_non_utilises_0', array('ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue']));
    113                 }
    114                 $texte .= "\n</p>\n";
    115                 $texte .= "<p class=\"reponse_formulaire reponse_formulaire_ok\">\n";
     138                                $texte .= "<div class=\"titrem\">\n" . $_item . "</div>\n";
     139                        }
     140                }
     141                else {
     142                        $texte .= _T('langonet:message_ok_non_utilises_0', array('ou_fichier' => $resultats['ou_fichier'], 'langue' => $resultats['langue'])) . "\n";
     143                        $texte .= "</p>\n"; // <p> ouvert dans langonet_verifier.html
     144                }
     145
     146                $texte .= "<p class=\"reponse_formulaire reponse_formulaire_ok\">\n<br />";
    116147                // Liste des items utilises sans certitude
    117148                if (count($resultats['item_peut_etre']) > 0) {
     
    122153                                $texte .= _T('langonet:message_ok_utilises_incertains_n', array('nberr' => count($resultats['item_peut_etre']))) . "\n";
    123154                        }
     155                        // on ferme le <p> ouvert au-dessus car ce qui suit est un <div>
     156                        $texte .= "\n</p>\n";
    124157                        $texte .= afficher_lignes($resultats['fichier_peut_etre']);
    125                 }
    126                 else {
    127                         $texte .= _T('langonet:message_ok_utilises_incertains_0', array('module' => $resultats['module']));
     158                        // on ouvre un <p> ici qui sera ferme dans langonet_verifier.html
     159                        $texte .= "\n<p>\n";
     160                }
     161                else {
     162                        $texte .= _T('langonet:message_ok_utilises_incertains_0', array('module' => $resultats['module'])) . "\n";
     163                        // pas de </p> ici : il sera ferme dans langonet_verifier.html
    128164                }
    129165        }
     
    138174        $ok = ecrire_fichier($bak_fichier, $bak_texte);
    139175        if (!$ok) {
    140                 spip_log("echec de creation du fichier $bak_nom\n", "langonet", $bak_rep);
     176                spip_log("echec de creation du fichier $bak_nom", "langonet", $bak_rep);
    141177        }
    142178        else {
    143                 $texte .= "\n<br /></p>\n<p class=\"reponse_formulaire reponse_formulaire_ok\">\n";
     179                $texte .= "\n<br /></p>\n<p class=\"reponse_formulaire reponse_formulaire_ok\"><br />\n";
    144180                $texte .= _T('langonet:bak_info', array('bak_fichier' => $bak_rep.$bak_nom));
    145181        }
     
    148184}
    149185
    150 function afficher_lignes($tableau) {
     186/**
     187 * Formate une liste de resultats
     188 *
     189 * @param array $tableau
     190 * @param array $possibles
     191 * @return string
     192 */
     193
     194// $tableau   => [item][fichier utilisant][num ligne][] => extrait ligne
     195// $possibles => [item][] => fichier de langue ou item est defini
     196function afficher_lignes($tableau, $possibles=array()) {
    151197        include_spip('inc/layer');
    152198        // detail des fichiers utilisant les items de langue
     
    155201                $liste_lignes .= bouton_block_depliable($item, false);
    156202                $liste_lignes .= debut_block_depliable(false);
     203                $liste_lignes .= "<p style=\"padding-left:2em;\">\n  "._T('langonet:item_utilise_ou')."\n<br />";       
    157204                foreach ($tableau[$item] as $fichier => $ligne) {
    158                         $liste_lignes .= "<p style=\"padding-left:2em;font-weight:bold;\">" .$fichier. "</p>\n";
     205                        $liste_lignes .= "\t<span style=\"font-weight:bold;padding-left:2em;\">" .$fichier. "</span><br />\n";
    159206                        foreach ($tableau[$item][$fichier] as $ligne_n => $ligne_t) {
    160207                                $L = intval($ligne_n+1);
    161                                 $liste_lignes .= "<p style=\"padding-left:9em;text-indent: -5em;\">L.". sprintf("%04s", $L) .":<span style=\"padding-left:1em;\">".htmlentities($ligne_t[0]). "</span></p>\n";
    162                         }
     208                                $T = '... '.htmlentities($ligne_t[0]).' ...';
     209                                $liste_lignes .= "\t\t<span style=\"padding-left:4em;text-indent: -5em;\">L.". sprintf("%04s", $L) .":</span><span style=\"padding-left:1em;\">".$T. "</span><br />\n";
     210                        }
     211                }
     212                $liste_lignes .= "</p>";
     213
     214                if (is_array($possibles[$item])) {
     215                        $liste_lignes .= "<p style=\"padding-left:2em;\">  "._T('langonet:definition_possible')."\n<br />";
     216                        foreach ($possibles[$item] as $fichier_def) {
     217                                $liste_lignes .= "\t<span style=\"font-weight:bold;padding-left:2em;\">" .$fichier_def. "</span><br />\n";
     218                        }
     219                        $liste_lignes .= "</p>\n";
    163220                }
    164221                $liste_lignes .= fin_block();
    165222        }
    166        
     223
    167224        return $liste_lignes;
    168225}
  • _plugins_/langonet/inc/langonet_verifier_items.php

    r34351 r34411  
    11<?php
     2
    23/**
    34 * Vérification de l'utilisation des items de langue
    4  * 
     5 *
    56 * @param string $rep
    67 * @param string $module
     
    2122
    2223        // On charge le fichier de langue a verifier
    23         // si il existe dans l'arborescence $ou_langue 
     24        // si il existe dans l'arborescence $ou_langue
    2425        // (evite le mecanisme standard de surcharge SPIP)
    2526        include_spip('inc/traduire');
     
    4748                                $utilises_brut['suffixes'] = array_merge($utilises_brut['suffixes'], $matches[3]);
    4849                                foreach ($matches[2] as $item_val) {
    49                                         $item_tous[$item_val][$_fichier][$ligne][] = trim($texte);
     50                                        preg_match("#.{0,18}".$item_val.".{0,10}#is", $texte, $extrait);
     51                                        $item_tous[$item_val][$_fichier][$ligne][] = trim($extrait[0]);
    5052                                }
    5153                        }
     
    6365
    6466        if ($verification == 'definition') {
     67                // On construit la liste de tous les items definis
     68                // dans tous les fichiers de langue presents sur le site.
     69                // Par economie, on se limite au scan des '/lang/xxxx_fr.php'
     70                foreach (preg_files(_DIR_RACINE, '/lang/[^/]+_fr\.php$') as $_fichier) {
     71                        foreach ($contenu = file($_fichier) as $ligne => $texte) {
     72                                if (preg_match_all("#^[\s\t]*['\"]([a-z0-9_]+)['\"][\s\t]*=>#i", $texte, $matches)) {
     73                                        foreach ($matches[1] as $cet_item) {
     74                                                $tous_lang[$cet_item][] = $_fichier;
     75                                        }
     76                                }
     77                        }
     78                }
    6579                // On construit la liste des items utilises mais non definis
    6680                foreach ($utilises['items'] as $_cle => $_valeur) {
     
    6983                                        // L'item est vraiment non defini et c'est une erreur
    7084                                        $item_non[] = $_valeur;
     85                                        if (array_key_exists($_valeur, $tous_lang)) {
     86                                                $definition_possible[$_valeur] = $tous_lang[$_valeur];
     87                                        }
    7188                                        if (is_array($item_tous[$_valeur])) {
    7289                                                $fichier_non[$_valeur] = $item_tous[$_valeur];
     
    129146        $resultats['item_peut_etre'] = $item_peut_etre;
    130147        $resultats['fichier_peut_etre'] = $fichier_peut_etre;
     148        $resultats['definition_possible'] = $definition_possible;
    131149        $resultats['statut'] = true;
    132150
  • _plugins_/langonet/lang/langonet_fr.php

    r34392 r34411  
    88        'bak_date_crea' => 'Fichier g&eacute;n&eacute;r&eacute; le @bak_date_jour@ &agrave; @bak_date_heure@.',
    99        'bak_info' => 'Le fichier &laquo;<em>@bak_fichier@</em>&raquo; a &eacute;t&eacute; cr&eacute;&eacute; pour sauvegarder ces r&eacute;sultats.',
     10        // 'bak_info' => 'Le fichier &laquo;<em><a href="@bak_fichier@">@bak_fichier@</a></em>&raquo; a &eacute;t&eacute; cr&eacute;&eacute; pour sauvegarder ces r&eacute;sultats.',
    1011        'bouton_generer' => 'G&eacute;n&eacute;rer',
    1112        'bouton_verifier' => 'V&eacute;rifier',
     13
     14// D
     15        'definition_possible' => '<em>d&eacute;fini dans :</em>',
    1216
    1317// I
     
    1923        'info_module' => 'Correspond au pr&eacute;fixe du fichier de langue hors abr&eacute;viation de la langue (exemple : <em>rainette</em> pour le plugin de m&ecirc;me nom, ou <em>ecrire</em> pour SPIP)',
    2024        'info_verifier' => 'Cette option vous permet de v&eacute;rifier les fichiers de langue d\'un module donn&eacute; sous deux angles compl&eacute;mentaires. Il est possible, soit de v&eacute;rifier si des items de langue utilis&eacute;s dans un groupe de fichiers (un plugin, par exemple) ne sont pas d&eacute;finis dans le fichier de langue idoine, soit que certains items de langue d&eacute;finis ne sont plus utilis&eacute;s.',
     25        'item_utilise_ou' => '<em>utilis&eacute; dans :</em>',
    2126
    2227// L
     
    6974        'option_mode_vide' => 'Une chaine vide',
    7075
    71 
    7276// T
    7377        'test_item_non_utilise' => 'TEST : Cet item de langue est bien d&eacute;fini dans le fichier de langue (), mais n\'est pas utilis&eacute; dans les fichiers du r&eacute;pertoire scann&eacute; ().',
     
    7781);
    7882
    79 
    8083?>
Note: See TracChangeset for help on using the changeset viewer.