Changeset 54269 in spip-zone


Ignore:
Timestamp:
Nov 9, 2011, 4:51:42 PM (8 years ago)
Author:
esj@…
Message:

langonet Si la production automatique de l'index d'un libellé pour un fichier de langue donne un index déja utilisé, vérifier que le texte associé est le même, sinon rajouter un suffixe arbitraire pour ne pas écraser l'ancien à la génération du fichier de langue. Et retrait de tests redondants.

File:
1 edited

Legend:

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

    r54162 r54269  
    150150                                // L'item est utilise dans un contexte variable
    151151                                $item_peut_etre[] = $_item;
    152                                 if (is_array($utilises['item_tous'][$_item])) {
    153                                         $fichier_peut_etre[$_item] = $utilises['item_tous'][$_item];
    154                                 }
     152                                $fichier_peut_etre[$_item] = $utilises['item_tous'][$_item];
    155153                        }
    156154                }
     
    183181        }
    184182
    185         $item_non = $definition_non_mais_nok = $item_md5 = $fichier_non = array();
     183        $item_non_mais = $item_non_mais_nok = $item_non = $definition_non_mais_nok = $item_md5 = $fichier_non = array();
    186184        foreach ($utilises['items'] as $_cle => $_valeur) {
    187185                if (!isset($init[$_valeur])) {
     
    191189                                        // Item indefini alors que le module est explicite, c'est une erreur
    192190                                        $item_non[] = $_valeur;
    193                                         if (is_array($utilises['item_tous'][$_cle])) {
    194191                                                $fichier_non[$_cle] = $utilises['item_tous'][$_cle];
    195                                         }
    196192                                } else {
    197193                                        // L'item peut etre defini dans un autre module. Le fait qu'il ne soit pas
     
    210206                                                $definition_non_mais[$_valeur] = array_map('array_shift', $tous_lang[$_valeur]);
    211207                                                $item_non_mais[] = $_valeur;
    212                                                 if (is_array($utilises['item_tous'][$_cle])) {
    213                                                         $fichier_non_mais[$_cle] = $utilises['item_tous'][$_cle];
     208                                                $fichier_non_mais[$_cle] = $utilises['item_tous'][$_cle];
     209                                        } else {
     210                                                $tous = $utilises['item_tous'][$_cle];
     211                                                // Si pas normalise, c'est une auto-definition
     212                                                // Si l'index est deja pris pour un autre texte
     213                                                // (32 caracteres initiaux communs)
     214                                                // forcer un suffixe md5
     215                                                if (!preg_match(',^\w+$,', $_valeur)) {
     216                                                        if (isset($tous_lang[$_cle])
     217                                                        AND !preg_match("%^\s*'$_valeur',?\s*$%", $tous_lang[$_cle][0][2])) {
     218                                                                $_cle .= '_' . md5($_valeur);
     219                                                        }
     220                                                        $item_md5[$_cle] = $_valeur;
    214221                                                }
    215                                         } else {
     222                                                $fichier_non_mais_nok[$_cle] = $tous;
    216223                                                $item_non_mais_nok[] = $_cle;
    217                                                 if (is_array($utilises['item_tous'][$_cle])) {
    218                                                         $fichier_non_mais_nok[$_cle] = $utilises['item_tous'][$_cle];
    219                                                         // Si pas normalise, c'est une auto-definition
    220                                                         // Il faudrait gerer l'homonymie, pas seulement la signaler
    221                                                         if (!preg_match(',^\w+$,', $_valeur)) {
    222                                                                   if (!isset($tous_lang[$_cle]) OR preg_match("%^\s*'$_valeur',?\s*$%", $tous_lang[$_cle][0][2]))
    223                                                                         $item_md5[$_cle] = $_valeur;
    224                                                                   else spip_log("homonymie de cle pour '$_valeur' et " . $tous_lang[$_cle][0][2]);
    225                                                         }
    226                                                 }
    227224                                        }
    228225                                }
Note: See TracChangeset for help on using the changeset viewer.