Changeset 34329 in spip-zone


Ignore:
Timestamp:
Jan 9, 2010, 10:10:16 AM (10 years ago)
Author:
denisb@…
Message:

la fonction de vérification des définitions retourne plus d'informations.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/langonet/inc/langonet_verifier_definition.php

    r34112 r34329  
    11<?php
    22/**
    3  * Vérification de la bonne definition des items de langue utilises par le module
     3 * Vérification de la definition des items de langue utilises
    44 *
     5 * @param string $rep
    56 * @param string $module
    67 * @param string $langue
    78 * @param string $ou_langue
    8  * @param string $ou_fichiers
    9  * @return
     9 * @param string $ou_fichier
     10 * @return array
    1011 */
    11 function inc_langonet_verifier_definition($module, $langue, $ou_langue, $ou_fichiers) {
    1212
    13         $resultats = array();
     13// $rep        => nom du repertoire parent de lang/
     14// $module     => prefixe du fichier de langue
     15// $langue     => index du nom de langue
     16// $ou_lang    => chemin vers le fichier de langue a verifier
     17// $ou_fichier => racine de l'arborescence a verifier
     18function inc_langonet_verifier_definition($rep, $module, $langue, $ou_langue, $ou_fichier) {
    1419
    15         // On charge le fichier de langue a verifier si il existe dans l'arborescence $ou_langue
     20        // On charge le fichier de langue a verifier
     21        // si il existe dans l'arborescence $ou_langue
    1622        // (evite le mecanisme standard de surcharge SPIP)
    1723        include_spip('inc/traduire');
    1824        $var_source = "i18n_".$module."_".$langue;
    19         if (empty($GLOBALS[$var_source]))
    20                 if (find_in_path($module.'_'.$langue.'.php', $ou_langue)) {
    21                         charger_langue($langue, $module);
    22                         if (!$GLOBALS[$var_source]) {
    23                                 $resultats['statut'] = false;
    24                                 $resultats['erreur'] = _T('langonet:message_nok_plugin_inactif',
    25                                                                                 array('arbo_verif' => $ou_fichiers));
    26                                 return $resultats;
     25        if (empty($GLOBALS[$var_source])) {
     26                $GLOBALS['idx_lang'] = $var_source;
     27                include(_DIR_RACINE.$ou_langue.$module.'_'.$langue.'.php');
     28        }
     29
     30        // On cherche l'ensemble des items utilises dans l'arborescence $ou_fichier
     31        $utilises_brut = array('items' => array(), 'suffixes' => array());
     32        // On ne scanne pas dans les ultimes sous-repertoires charsets/ ,
     33        // lang/ , req/ . On ne scanne que les fichiers php, html ou xml
     34        // (voir le fichier regexp.txt).
     35        foreach (preg_files(_DIR_RACINE.$ou_fichier, '(?<!/charsets|/lang|/req)(/[^/]*\.(html|php|xml))$') as $_fichier) {
     36                foreach ($contenu = file($_fichier) as $ligne => $texte) {
     37                        if (strpos($_fichier, '.xml')) {
     38                                $trouver_item = _TROUVER_ITEM_X;
     39                        }
     40                        else {
     41                                $trouver_item = _TROUVER_ITEM_HP;
     42                        }
     43                        if (preg_match_all($trouver_item, $texte, $matches)) {
     44                                $utilises_brut['items'] = array_merge($utilises_brut['items'], $matches[2]);
     45                                $utilises_brut['suffixes'] = array_merge($utilises_brut['suffixes'], $matches[3]);
     46                                foreach ($matches[2] as $item_val) {
     47                                        $item_tous[$item_val][$_fichier][$ligne][] = trim($texte);
     48                                }
    2749                        }
    2850                }
    29                 else {
    30                         $resultats['statut'] = false;
    31                         $resultats['erreur'] = _T('langonet:message_nok_fichier_langue',
    32                                                                         array('langue' => $langue, 'module' => $module, 'dossier' => $ou_langue));
    33                         return $resultats;
    34                 }
     51        }
    3552
    36         // On cherche l'ensemble des items utilises dans l'arborescence $ou_fichiers
    37         $utilises_brut = array('items' => array(), 'suffixes' => array());
    38 //      $regexp = ",(=\"$module:|='$module:|<\w+>$module:|<:$module:|_T\('$module:|_U\('$module:)(\w*)('\s*\.\s*\\$*\w*)*,im";
    39         foreach (preg_files(_DIR_RACINE.$ou_fichiers,'\.(html|php|xml)$') as $_fichier) {
    40                 lire_fichier($_fichier, $contenu);
    41                 if (preg_match_all(_TROUVER_ITEM, $contenu, $matches)) {
    42                         $utilises_brut['items'] = array_merge($utilises_brut['items'], $matches[2]);
    43                         $utilises_brut['suffixes'] = array_merge($utilises_brut['suffixes'], $matches[3]);
    44                 }
    45         }
    46         // On rafine le tableau resultant en virant les doublons
     53        // On affine le tableau resultant en supprimant les doublons
    4754        $utilises = array('items' => array(), 'suffixes' => array());
    4855        foreach ($utilises_brut['items'] as $_cle => $_valeur) {
     
    5259                }
    5360        }
     61
    5462        // On construit la liste des items utilises mais non definis
    5563        $non_definis = array();
     
    6573                        else {
    6674                                // L'item trouve est utilise dans un contexte variable (ie _T('meteo_'.$statut))
    67                                 // il ne peut etre trouve directement dans le fichier de langue
    68                                 // Donc on verifie que des items de ce "type" existe dans le fichier de langue
     75                                // Il ne peut etre trouve directement dans le fichier de langue,
     76                                // donc on verifie que des items de ce "type" existent dans
     77                                // le fichier de langue
    6978                                $defini = false;
    7079                                foreach($GLOBALS[$var_source] as $_item => $_traduction) {
     
    7887                if (!$defini) {
    7988                        $non_definis[] = $_valeur;
     89                        if (is_array($item_tous[$_valeur])) {
     90                                $item_non[$_valeur] = $item_tous[$_valeur];
     91                        }
    8092                }
    8193                if (!$avec_certitude) {
    82                                 $a_priori_definis[] = $_valeur;
     94                        $a_priori_definis[] = $_valeur;
     95                        if (is_array($item_tous[$_valeur])) {
     96                                $item_peut_etre[$_valeur] = $item_tous[$_valeur];
     97                        }
    8398                }
    8499        }
    85100
    86101        // On prepare le tableau des resultats
     102        $resultats['module'] = $module;
     103        $resultats['ou_fichier'] = $ou_fichier;
     104        $resultats['langue'] = $ou_langue.$module.'_'.$langue.'.php';
    87105        $resultats['non_definis'] = $non_definis;
     106        $resultats['fichier_non'] = $item_non;
    88107        $resultats['a_priori_definis'] = $a_priori_definis;
     108        $resultats['fichier_peut_etre'] = $item_peut_etre;
    89109        $resultats['statut'] = true;
    90110       
Note: See TracChangeset for help on using the changeset viewer.