source: spip-zone/_plugins_/langonet/inc/langonet_generer_fichier.php @ 39357

Last change on this file since 39357 was 39357, checked in by eric@…, 9 years ago

Un test sur l'existence du fichier de langue source permettant de générer une langue cible afin d'éviter des erreurs de traitement par la suite

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1<?php
2/**
3 * Ecriture des fichiers de langue
4 *
5 * @param string $module
6 * @param string $langue_source
7 * @param string $ou_langue
8 * @param string $langue_cible [optional]
9 * @param string $mode [optional]
10 * @return
11 */
12function inc_langonet_generer_fichier($module, $langue_source, $ou_langue, $langue_cible='en', $mode='index', $encodage='html') {
13        $resultats = array();
14
15        include_spip('inc/traduire');
16        $var_source = "i18n_".$module."_".$langue_source;
17        if (empty($GLOBALS[$var_source])) {
18                $GLOBALS['idx_lang'] = $var_source;
19                if ( file_exists($source = _DIR_RACINE.$ou_langue.$module.'_'.$langue_source.'.php'))
20                        include($source);
21                else {
22                        $resultats['message_erreur'] = _T('langonet:message_nok_fichier_langue', 
23                                                                                array('langue' => $langue_source, 'module' => $module, 'dossier' => $ou_langue));
24                        return $resultats;
25                }
26        }
27       
28        $var_cible = "i18n_".$module."_".$langue_cible;
29        if (empty($GLOBALS[$var_cible])) {
30                $GLOBALS['idx_lang'] = $var_cible;
31                if ( file_exists($cible = _DIR_RACINE.$ou_langue.$module.'_'.$langue_cible.'.php'))
32                        include($cible);
33        }
34
35        $dir = sous_repertoire(_DIR_TMP,"langonet");
36        $dir = sous_repertoire($dir,"generation");
37        $f = $dir . $module . "_".$langue_cible . ".php";
38
39        $i = 0;
40        $initiale = '';
41        $texte = '';
42        $source = $GLOBALS[$var_source];
43        ksort($source);
44        foreach ($source as $_item => $_valeur) {
45                $i++;
46                if ($initiale != strtoupper(substr($_item, 0, 1))) {
47                        $texte .= "\n// " . strtoupper(substr($_item, 0, 1)) . "\n";
48                        $initiale = strtoupper(substr($_item, 0, 1));
49                }
50                $valeur_cible = $GLOBALS[$var_cible][$_item];
51                if ($GLOBALS[$var_cible][$_item]) {
52                        $texte .= "\t'" . $_item . "' => '" . addslashes($valeur_cible) . "',\n";
53                }
54                else {
55                        if ($mode != 'pas_item') {
56                                if ($mode == 'new')
57                                        $valeur_cible = '<NEW>';
58                                else if ($mode == 'new_index')
59                                        $valeur_cible = '<NEW>'.$_item;
60                                else if ($mode == 'new_valeur')
61                                        $valeur_cible = '<NEW>'.addslashes($_valeur);
62                                else if ($mode == 'valeur')
63                                        $valeur_cible = addslashes($_valeur);
64                                else if ($mode == 'vide')
65                                        $valeur_cible = '';
66                                else
67                                        $valeur_cible = $_item;
68                                $texte .= "\t'" . $_item . "' => '" . $valeur_cible . "',\n";
69                        }
70                }
71        }
72       
73        $date = date('d-m-Y H:i:s');
74        $texte = '<?php
75// Ceci est un fichier langue de SPIP -- This is a SPIP language file
76// Produit automatiquement par le plugin LangOnet a partir de la langue source ' . $langue_source . '
77// Langue: ' . $langue_cible . '
78// Date: ' . $date . '
79// Items: ' . $i . '
80
81if (!defined("_ECRIRE_INC_VERSION")) return;
82
83$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
84'. $texte .'
85);
86?>';
87
88        if ($encodage == 'utf8') {
89                include_spip('inc/langonet_utils');
90                $texte = entite2utf($texte);
91        }
92       
93        $ok = ecrire_fichier($f, $texte);
94
95        if (!$ok) {
96                $resultats['message_erreur'] = _T('langonet:message_nok_ecriture_fichier', 
97                                                                                array('langue' => $langue_cible, 'module' => $module));
98        }
99        else {
100                $resultats['message_ok'] = _T('langonet:message_ok_fichier_genere', 
101                                                                        array('langue' => $langue_cible, 'module' => $module, 'fichier' => $f));
102        }
103        return $resultats;
104}
105?>
Note: See TracBrowser for help on using the repository browser.