diff --git a/salvatore/ecriveur.php b/salvatore/ecriveur.php index a29c2247eaf7a0994de09c517b815994a15aca4d..f4176279de45ec05238bd26d01b29664049990dd 100644 --- a/salvatore/ecriveur.php +++ b/salvatore/ecriveur.php @@ -76,8 +76,7 @@ function salvatore_ecrire($liste_sources, $message_commit = '', $dir_modules = n $id_tradlang_module = sql_getfetsel('id_tradlang_module', 'spip_tradlang_modules', 'dir_module = ' . sql_quote($source['dir_module'])); if (!$id_tradlang_module) { salvatore_fail("[Ecriveur] Erreur sur $module", "Erreur : export impossible, le module n'est pas en base\n"); - } - else { + } else { // url de l'interface de traduction d'un module $url_trad_module = url_absolue(generer_objet_url($id_tradlang_module, 'tradlang_module'), $url_gestionnaire); $nb = salvatore_exporter_module($id_tradlang_module, $source, $url_gestionnaire, $url_trad_module, $dir_modules, $dir_depots, $message_commit); @@ -119,14 +118,15 @@ function salvatore_exporter_module($id_tradlang_module, $source, $url_site, $url salvatore_log("<error>Le module #$id_tradlang_module $module n'existe pas</error>"); return false; } + $lang_ref = $row_module['lang_mere']; $dir_module = $dir_modules . $row_module['dir_module']; $module = $row_module['module']; + $type_export = $row_module['type_export']; if (is_numeric($row_module['limite_trad']) && $row_module['limite_trad'] > 0) { $seuil_export = $row_module['limite_trad']; - } - else { + } else { $seuil_export = lire_config('tradlang/seuil_export_tradlang', _SALVATORE_SEUIL_EXPORT); } @@ -206,7 +206,7 @@ function salvatore_exporter_module($id_tradlang_module, $source, $url_site, $url $comment = ' # ' . trim($comment); // on rajoute les commentaires ? } - // nettoyger la chaine de langue et calcul du md5 + // nettoyer la chaine de langue et calcul du md5 $str = salvatore_nettoyer_chaine_langue($chaine['str'], $lang); $newmd5 = md5($str); @@ -221,7 +221,13 @@ function salvatore_exporter_module($id_tradlang_module, $source, $url_site, $url } salvatore_log(' - traduction (' . $total_chaines['OK'] . "/$count_trad_reference OK | " . $total_chaines['RELIRE'] . "/$count_trad_reference RELIRE | " . $total_chaines['MODIF'] . "/$count_trad_reference MODIFS), export"); - $file_name = salvatore_exporter_fichier_php($dir_module, $module, $lang, $php_lines, $url_trad_module, ($lang == $lang_ref) ? $url_repo : false); + + $salvatore_exporter_fichier_php = 'salvatore_exporter_fichier_php_' . $type_export; + if (!function_exists($salvatore_exporter_fichier_php)) { + salvatore_log("<error>Pas de fonction pour l’export '$type_export'</error>"); + $salvatore_exporter_fichier_php = 'salvatore_exporter_fichier_php_spip5'; + } + $file_name = $salvatore_exporter_fichier_php($dir_module, $module, $lang, $php_lines, $url_trad_module, ($lang == $lang_ref) ? $url_repo : false); // noter la langue et les traducteurs pour lang/module.xml $people_unique = []; @@ -386,7 +392,13 @@ function salvatore_clean_comment($comment) { /** - * Generer un fichier de langue a partir de ses lignes php + * Generer un fichier de langue (SPIP < 5) a partir de ses lignes php + * + * À partir de SPIP 4.1, les fichiers de langues SPIP peuvent retourner + * directement un array (plus propre que de peupler une globale). + * Cette méthode d’écriture sera donc à déprécier / supprimer dans quelques années + * pour utiliser uniquement `spip5` + * * @param string $dir_module * @param string $module * @param string $lang @@ -395,7 +407,7 @@ function salvatore_clean_comment($comment) { * @param $origin * @return string */ -function salvatore_exporter_fichier_php($dir_module, $module, $lang, $php_lines, $url_trad_module, $origin) { +function salvatore_exporter_fichier_php_spip($dir_module, $module, $lang, $php_lines, $url_trad_module, $origin) { $file_name = $dir_module . '/' . $module . '_' . $lang . '.php'; $file_content = '<?php // This is a SPIP language file -- Ceci est un fichier langue de SPIP @@ -431,6 +443,37 @@ function salvatore_exporter_fichier_php($dir_module, $module, $lang, $php_lines, } +/** + * Generer un fichier de langue (SPIP >= 4.1) a partir de ses lignes php + * @param string $dir_module + * @param string $module + * @param string $lang + * @param array $php_lines + * @param string $url_trad_module + * @param $origin + * @return string + */ +function salvatore_exporter_fichier_php_spip5($dir_module, $module, $lang, $php_lines, $url_trad_module, $origin) { + $file_name = $dir_module . '/' . $module . '_' . $lang . '.php'; + $file_content = '<?php' . "\n"; + $file_content .= '// This is a SPIP language file -- Ceci est un fichier langue de SPIP' . "\n"; + + if ($origin) { + $file_content .= '// Fichier source, a modifier dans ' . $origin . "\n\n"; + } else { + $url_trad_module = parametre_url($url_trad_module, 'lang_cible', $lang, '&'); + $file_content .= '// extrait automatiquement de ' . $url_trad_module . "\n"; + $file_content .= '// ** ne pas modifier le fichier **' . "\n\n"; + } + + $file_content .= 'return [' . "\n" . implode("\n", $php_lines) . "\n];\n"; + file_put_contents($file_name, $file_content); + // et on fixe le chmod au passage + chmod($file_name, 0644); + return $file_name; +} + + /** * Lire la date de derniere modif d'un fichier de langue * @param string $file_name