Changeset 52389 in spip-zone


Ignore:
Timestamp:
Oct 3, 2011, 7:31:21 PM (8 years ago)
Author:
esj@…
Message:

_plugins_/langonet: savoir gérer un \n dans un fichier de langue à produire. Tant qu'à faire, uiliser le format de commentaires de Doxygen pour décrirer le contenu du fichier, et mettre à part l'écriture du fichier pour pouvoir au besoin manipuler le contenu produit.

File:
1 edited

Legend:

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

    r47003 r52389  
    11<?php
     2/// @file
    23/**
    34 * Ecriture des fichiers de langue
     
    3536        $dir = sous_repertoire(_DIR_TMP,"langonet");
    3637        $dir = sous_repertoire($dir,"generation");
    37         $producteur = "\n// Produit automatiquement par le plugin LangOnet a partir de la langue source $langue_source";
     38        $producteur = "Produit automatiquement par le plugin LangOnet a partir de la langue source $langue_source";
    3839        $ok = ecrire_fichier_langue_php($dir, $langue_cible, $module, $source, $producteur);
    3940
     
    8889}
    8990
    90 // Produit un fichier de langues a partir d'un tableau (index => trad)
    91 // Si trad n'est pas une chaine mais un tableau, on le met en commentaire
     91/// Produit un fichier de langues a partir d'un tableau (index => trad)
     92/// Si trad n'est pas une chaine mais un tableau, on le met en commentaire
    9293
    93 function ecrire_fichier_langue_php($dir, $langue, $module, $items, $producteur='')
     94function produire_fichier_langue($langue, $module, $items, $producteur='')
    9495{
    95         $contenu = '<'.'?php' . "\n" . '
    96 // Ceci est un fichier langue de SPIP -- This is a SPIP language file'
    97 . $producteur . '
    98 // Module: ' . $module . '
    99 // Langue: ' . $langue . '
    100 // Date: ' . date('d-m-Y H:i:s') . '
    101 // Items: ' . count($items) . '
     96        ksort($items);
     97        $initiale = '';
     98        $contenu = array();
     99        foreach($items as $k => $v) {
     100                if ($initiale != strtoupper($k[0])) {
     101                        $initiale = strtoupper($k[0]);
     102                        $contenu[]= "// $initiale";
     103                }
     104                if (!is_string($v))
     105                        $contenu[]= "/*\t" . $v[0] ."\n\t'" . $k . "' => '" . addslashes($v[1]) ."',*/\n";
     106                else {
     107                        $v = addslashes($v);
     108                        $v = str_replace('\\\\n', "' . \"\\n\" .'", $v);
     109                        $contenu[]= "\t'" . $k . "' => '$v',";
     110                }
     111        }
     112
     113        return '<'.'?php' . "\n" . '
     114/// @file
     115/// Ceci est un fichier langue de SPIP -- This is a SPIP language file' . '
     116/// ' . preg_replace(",\\n[/#]*,", "\n/// ", $producteur) . '
     117/// Module: ' . $module . '
     118/// Langue: ' . $langue . '
     119/// Date: ' . date('d-m-Y H:i:s') . '
     120/// Items: ' . count($items) . '
    102121
    103122if (!defined(\'_ECRIRE_INC_VERSION\')) return;
    104123
    105124$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
    106 ';
    107         ksort($items);
    108         $initiale = '';
    109         foreach($items as $k => $v) {
    110                 if ($initiale != strtoupper($k[0])) {
    111                         $initiale = strtoupper($k[0]);
    112                         $contenu .= "\n// $initiale";
    113                 }
    114                 if (is_string($v))
    115                         $contenu .= "\n\t'" . $k . "' => '" . addslashes($v) . "',";
    116                 else $contenu .= "\n/*\t" . $v[0] ."\n\t'" . $k . "' => '" . addslashes($v[1]) ."',*/\n";
    117         }
    118         $contenu .= "\n);\n?".'>';
     125' .
     126          join("\n", $contenu)  .
     127          "\n);\n?".'>';
     128}
    119129
     130function ecrire_fichier_langue_php($dir, $langue, $module, $items, $producteur='')
     131{
    120132        $nom = $dir . $module . "_" . $langue   . '.php';
    121         return ecrire_fichier($nom, $contenu) ? $nom : false;
     133        $c = produire_fichier_langue($langue, $module, $items, $producteur);
     134        return ecrire_fichier($nom, $c) ? $nom : false;
    122135}
    123136?>
Note: See TracChangeset for help on using the changeset viewer.