source: spip-zone/_plugins_/trad-lang/trunk/export_lang/spip.php @ 82034

Last change on this file since 82034 was 82034, checked in by kent1@…, 7 years ago

Exporter en CSV

utiliser sql_allfetsel + foreach au lieur de sql_select + while + sql_fetch

Petites améliorations

File size: 2.7 KB
Line 
1<?php
2/**
3 *
4 * Trad-lang v2
5 * Plugin SPIP de traduction de fichiers de langue
6 * © Florent Jugla, Fil, kent1
7 *
8 * Fichier des fonctions spécifiques du plugin
9 */
10
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13/**
14 * Fonction d'export d'une langue d'un module SPIP en php
15 *
16 * @param string $module
17 *              Le module à exporter
18 * @param string $langue
19 *              La langue à exporter
20 * @param string $dir_lang
21 *              Le répertoire où stocker les fichiers de langue
22 * @param bool $tout
23 *              Si true, exporte toutes les chaines même non traduites
24 * @return string $fichier
25 *              Le fichier final
26 */
27function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){
28        /**
29         * Le fichier final
30         * local/cache-lang/module_lang.php
31         */
32        $fichier = $dir_lang."/".$module."_".$langue.".php";
33
34        $tab = "\t";
35        $where = "module=".sql_quote($module)." AND lang=".sql_quote($langue);
36        if(!$tout)
37                $where .= " AND statut IN ('OK','MODIF')";
38        $res=sql_allfetsel("id,str,comm,statut","spip_tradlangs",$where,"id");
39        $x=array();
40        $prev="";
41        $tous = $lorigine; // on part de l'origine comme ca on a tout meme si c'est pas dans la base de donnees (import de salvatore/lecteur.php)
42        foreach ($res as $row){
43                $tous[$row['id']] = $row;
44        }
45        ksort($tous);
46        foreach ($tous as $row) {
47                if ($prev!=strtoupper($row['id'][0])) $x[] = "\n$tab// ".strtoupper($row['id'][0]);
48                $prev=strtoupper($row['id'][0]);
49                if (strlen($row['statut']) && ($row['statut'] != 'OK'))
50                        $row['comm'] .= ' '.$row['statut'];
51                if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ?
52
53                $str = $row['str'];
54
55                $oldmd5 = md5($str);
56                $str = unicode_to_utf_8(
57                        html_entity_decode(
58                                preg_replace('/&([lg]t;)/S', '&amp;\1', $str),
59                                ENT_NOQUOTES, 'utf-8')
60                );
61                $newmd5 = md5($str);
62                if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND module=".sql_quote($module));
63
64                $x[]="$tab".var_export($row['id'],1).' => ' .var_export($str,1).','.$row['comm'] ;
65        }
66
67        /**
68         * historiquement les fichiers de lang de spip_loader ne peuvent pas etre securises
69         */
70        $secure = ($module == 'tradloader')
71                ? ''
72                : "if (!defined('_ECRIRE_INC_VERSION')) return;\n\n";
73
74        $fd = fopen($fichier, 'w');
75
76        /**
77         * On supprime la virgule du dernier item
78         */
79        $x[count($x)-1] = preg_replace('/,([^,]*)$/', '\1', $x[count($x)-1]);
80
81        $contenu = join("\n",$x);
82       
83        /**
84         * On écrit le fichier
85         */
86        fwrite($fd,
87        '<'.'?php
88// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
89// extrait automatiquement de '.$url_trad.'
90// ** ne pas modifier le fichier **
91'
92."\n".$secure.'$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
93'
94. str_replace("\r\n", "\n", $contenu)
95.'
96);
97
98?'.'>'
99        );
100       
101        fclose($fd);
102        @chmod($fichier, 0666);
103       
104        return $fichier;
105}
106?>
Note: See TracBrowser for help on using the repository browser.