Skip to content
Extraits de code Groupes Projets
Valider 9108eb05 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

feat: Un fichier d’export au format SPIP 5 (compatible SPIP 4.1+ aussi)

parent cf576ec0
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php
/**
*
* Trad-lang v2
* Plugin SPIP de traduction de fichiers de langue
* © Florent Jugla, Fil, kent1
*
* Fichier des fonctions spécifiques du plugin
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'export d'une langue d'un module SPIP 5+ en php
*
* `return [...];`
*
* @param string $module
* Le module à exporter
* @param string $langue
* La langue à exporter
* @param string $dir_lang
* Le répertoire où stocker les fichiers de langue
* @param bool $tout
* Si true, exporte toutes les chaines même non traduites
* @return string $fichier
* Le fichier final
*/
function export_lang_spip5_dist($module, $langue, $dir_lang, $tout = false) {
$url_trad = null;
/**
* Le fichier final
* local/cache-lang/module_lang.php
*/
$fichier = $dir_lang . '/' . $module . '_' . $langue . '.php';
$tab = "\t";
$where = 'module = ' . sql_quote($module) . ' AND lang = ' . sql_quote($langue);
if (!$tout) {
$where .= " AND statut IN ('OK','MODIF','RELIRE')";
}
$res = sql_allfetsel('id,str,comm,statut', 'spip_tradlangs', $where, 'id');
$x = [];
$prev = '';
$tous = array_column($res, null, 'id');
ksort($tous);
foreach ($tous as $row) {
if ($prev !== strtoupper($row['id'][0])) {
$x[] = "\n$tab// " . strtoupper($row['id'][0]);
}
$prev = strtoupper($row['id'][0]);
if (strlen($row['statut']) && $row['statut'] != 'OK') {
$row['comm'] .= ' ' . $row['statut'];
}
if (trim($row['comm'])) {
/**
* on rajoute les commentaires ?
*/
$row['comm'] = ' # ' . trim($row['comm']);
}
$str = $row['str'];
$oldmd5 = md5($str);
$str = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str), ENT_NOQUOTES, 'utf-8'));
$newmd5 = md5($str);
if ($oldmd5 !== $newmd5) {
sql_updateq('spip_tradlangs', ['md5' => $newmd5], 'md5 = ' . sql_quote($oldmd5) . ' AND module = ' . sql_quote($module));
}
$x[] = "$tab" . var_export($row['id'], 1) . ' => ' . var_export($str, 1) . ',' . $row['comm'] ;
}
$fd = fopen($fichier, 'w');
$contenu = implode("\n", $x);
$contenu = str_replace("\r\n", "\n", $contenu);
/**
* On écrit le fichier
*/
fwrite($fd, <<<PHP
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de ' . $url_trad . '
// ** ne pas modifier le fichier **
return [
$contenu
];
PHP
);
fclose($fd);
@chmod($fichier, 0666);
return $fichier;
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter