Skip to content
Extraits de code Groupes Projets
Valider ac69ae58 rédigé par kent1@arscenic.info's avatar kent1@arscenic.info
Parcourir les fichiers

PSR SPIP

parent f71d4e07
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php <?php
/** /**
* *
* Trad-lang v2 * Trad-lang v2
* Plugin SPIP de traduction de fichiers de langue * Plugin SPIP de traduction de fichiers de langue
* © Florent Jugla, Fil, kent1 * © Florent Jugla, Fil, kent1
* *
* Fichier d'export d'un module de langue en .csv * Fichier d'export d'un module de langue en .csv
*/ */
if (!defined('_ECRIRE_INC_VERSION')) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
/** /**
* Fonction d'export d'une langue d'un module en .csv * Fonction d'export d'une langue d'un module en .csv
* *
* @param string $module * @param string $module
* Le module à exporter (le champ "module" dans la base) * Le module à exporter (le champ "module" dans la base)
* @param string $langue * @param string $langue
* La langue à exporter * La langue à exporter
* @param string $dir_lang * @param string $dir_lang
* Le répertoire où stocker les fichiers de langue * Le répertoire où stocker les fichiers de langue
* @return string $fichier * @return string $fichier
* Le fichier final * Le fichier final
*/ */
function export_lang_csv_dist($module,$langue,$dir_lang){ function export_lang_csv_dist($module, $langue, $dir_lang) {
$chaines_csv=$tous=array(); $chaines_csv=$tous=array();
/** /**
* Le fichier final * Le fichier final
* local/cache-lang/module_lang.csv * local/cache-lang/module_lang.csv
*/ */
$fichier = $dir_lang."/".$module."_".$langue.".csv"; $fichier = $dir_lang . '/' . $module . '_' . $langue . '.csv';
/** /**
* Les informations du module * Les informations du module
*/ */
$info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod','spip_tradlang_modules','module='.sql_quote($module)); $info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod', 'spip_tradlang_modules', 'module = ' . sql_quote($module));
/** /**
* Les chaines * Les chaines
*/ */
$res=sql_allfetsel("id,str,statut,comm","spip_tradlangs","id_tradlang_module=".intval($info_module['id_tradlang_module'])." AND lang=".sql_quote($langue)." AND statut != 'attic'","id"); $res = sql_allfetsel('id,str,statut,comm', 'spip_tradlangs', 'id_tradlang_module = ' . intval($info_module['id_tradlang_module']) . ' AND lang=' . sql_quote($langue) . ' AND statut != "attic"', 'id');
foreach($res as $row){ foreach ($res as $row) {
$tous[$row['id']] = $row; $tous[$row['id']] = $row;
} }
ksort($tous); ksort($tous);
foreach ($tous as $id => $row) { foreach ($tous as $id => $row) {
$str = $row['str']; $str = $row['str'];
$oldmd5 = md5($str); $oldmd5 = md5($str);
$str = str_replace("\r\n", "\n", unicode_to_utf_8( $str = str_replace("\r\n", "\n", unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str), ENT_NOQUOTES, 'utf-8')));
html_entity_decode(
preg_replace('/&([lg]t;)/S', '&amp;\1', $str),
ENT_NOQUOTES, 'utf-8')
));
$newmd5 = md5($str); $newmd5 = md5($str);
if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND id_tradlang_module=".intval($info_module['id_tradlang_module'])); if ($oldmd5 !== $newmd5) {
$str_original = sql_getfetsel('str','spip_tradlangs','id ='.sql_quote($id).' AND id_tradlang_module='.intval($info_module['id_tradlang_module']).' AND lang='.sql_quote($info_module['lang_mere'])); sql_updateq('spip_tradlangs', array('md5'=>$newmd5), 'md5 = '.sql_quote($oldmd5) . ' AND id_tradlang_module = ' . intval($info_module['id_tradlang_module']));
}
$str_original = sql_getfetsel('str', 'spip_tradlangs', 'id = '.sql_quote($id).' AND id_tradlang_module = ' . intval($info_module['id_tradlang_module']).' AND lang = ' . sql_quote($info_module['lang_mere']));
$chaine = array('id' => $row['id'],'str_orig'=>$str_original,'str'=>$str,'statut'=>$row['statut'],'comm'=>$row['comm']); $chaine = array('id' => $row['id'],'str_orig'=>$str_original,'str'=>$str,'statut'=>$row['statut'],'comm'=>$row['comm']);
$chaines_csv[] = $chaine; $chaines_csv[] = $chaine;
...@@ -67,7 +65,7 @@ function export_lang_csv_dist($module,$langue,$dir_lang){ ...@@ -67,7 +65,7 @@ function export_lang_csv_dist($module,$langue,$dir_lang){
} }
$fp = fopen($fichier, 'w'); $fp = fopen($fichier, 'w');
foreach ($chaines_csv as $fields) { foreach ($chaines_csv as $fields) {
fputcsv($fp, $fields); fputcsv($fp, $fields);
} }
...@@ -76,4 +74,3 @@ function export_lang_csv_dist($module,$langue,$dir_lang){ ...@@ -76,4 +74,3 @@ function export_lang_csv_dist($module,$langue,$dir_lang){
return $fichier; return $fichier;
} }
?>
\ No newline at end of file
<?php <?php
/** /**
* *
* Trad-lang v2 * Trad-lang v2
* Plugin SPIP de traduction de fichiers de langue * Plugin SPIP de traduction de fichiers de langue
* © Florent Jugla, Fil, kent1 * © Florent Jugla, Fil, kent1
* *
* Fichier d'export d'un module de langue en .po (Gettext) * Fichier d'export d'un module de langue en .po (Gettext)
*/ */
if (!defined('_ECRIRE_INC_VERSION')) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
/** /**
* Fonction d'export d'une langue d'un module en .po * Fonction d'export d'une langue d'un module en .po
* *
* Les chaînes avec un statut NEW sont vidées * Les chaînes avec un statut NEW sont vidées
* Les chaînes avec un statut MODIF sont mises en "fuzzy" * Les chaînes avec un statut MODIF sont mises en "fuzzy"
* *
* @param string $module * @param string $module
* Le module à exporter (le champ "module" dans la base) * Le module à exporter (le champ "module" dans la base)
* @param string $langue * @param string $langue
* La langue à exporter * La langue à exporter
* @param string $dir_lang * @param string $dir_lang
* Le répertoire où stocker les fichiers de langue * Le répertoire où stocker les fichiers de langue
* @return string $fichier * @return string $fichier
* Le fichier final * Le fichier final
*/ */
function export_lang_po_dist($module,$langue,$dir_lang){ function export_lang_po_dist($module, $langue, $dir_lang) {
$x=$tous=array(); $x=$tous=array();
$contenu = ''; $contenu = '';
/** /**
* Le fichier final * Le fichier final
* local/cache-lang/module_lang.po * local/cache-lang/module_lang.po
*/ */
$fichier = $dir_lang."/".$module."_".$langue.".po"; $fichier = $dir_lang . '/' . $module . '_' . $langue . '.po';
/** /**
* Les informations du module * Les informations du module
*/ */
$info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod','spip_tradlang_modules','module='.sql_quote($module)); $info_module = sql_fetsel('id_tradlang_module,lang_mere,nom_mod', 'spip_tradlang_modules', 'module = ' . sql_quote($module));
$url_trad = url_absolue(parametre_url(generer_url_entite($info_module['id_tradlang_module'],'tradlang_module'),'lang_cible',$langue)); $url_trad = url_absolue(parametre_url(generer_url_entite($info_module['id_tradlang_module'], 'tradlang_module'), 'lang_cible', $langue));
/** /**
* Gestion des auteurs * Gestion des auteurs
* *
* On ajoute une liste de traducteurs en entête de fichier (non obligatoire) * On ajoute une liste de traducteurs en entête de fichier (non obligatoire)
* On ajoute également l'item "Last-Translator : user <email>" dans les métas ($last_auteur) * On ajoute également l'item "Last-Translator : user <email>" dans les métas ($last_auteur)
*/ */
$last_auteur = array(); $last_auteur = array();
if($langue != $info_module['lang_mere']){ if ($langue != $info_module['lang_mere']) {
$traducteur = sql_fetsel('id_tradlang,traducteur','spip_tradlangs',"id_tradlang_module=".intval($info_module['id_tradlang_module'])." AND lang=".sql_quote($langue),"",'maj DESC','0,1'); $traducteur = sql_fetsel('id_tradlang,traducteur', 'spip_tradlangs', 'id_tradlang_module = ' . intval($info_module['id_tradlang_module']) . ' AND lang = '.sql_quote($langue), '', 'maj DESC', '0,1');
if(is_numeric($traducteur['traducteur'])) if (is_numeric($traducteur['traducteur'])) {
$id_auteur = $traducteur['traducteur']; $id_auteur = $traducteur['traducteur'];
else } else {
$id_auteur = sql_getfetsel('id_auteur','spip_versions','objet="tradlang" AND id_objet='.intval($traducteur['id_tradlang']),"",'id_version DESC','0,1'); $id_auteur = sql_getfetsel('id_auteur', 'spip_versions', 'objet="tradlang" AND id_objet = ' . intval($traducteur['id_tradlang']), '', 'id_version DESC', '0,1');
}
$last_auteur = sql_fetsel('nom,email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
$last_auteur = sql_fetsel('nom,email','spip_auteurs','id_auteur='.intval($id_auteur));
$traducteurs[$lang] = array(); $traducteurs[$lang] = array();
$people_unique = array(); $people_unique = array();
$liste_traducteurs = sql_select('DISTINCT(traducteur)','spip_tradlangs','id_tradlang_module='.intval($info_module['id_tradlang_module'])." and lang=".sql_quote($langue)); $liste_traducteurs = sql_select('DISTINCT(traducteur)', 'spip_tradlangs', 'id_tradlang_module = '.intval($info_module['id_tradlang_module']) . ' AND lang = ' . sql_quote($langue));
while ($t = sql_fetch($liste_traducteurs)){ while ($t = sql_fetch($liste_traducteurs)) {
$traducteurs_lang = explode(',',$t['traducteur']); $traducteurs_lang = explode(',', $t['traducteur']);
foreach($traducteurs_lang as $traducteur){ foreach ($traducteurs_lang as $traducteur) {
if(!in_array($traducteur,$people_unique)){ if (!in_array($traducteur, $people_unique)) {
if(is_numeric($traducteur) AND $id_auteur=intval($traducteur)){ if (is_numeric($traducteur) and $id_auteur=intval($traducteur)) {
$traducteur_supp['nom'] = extraire_multi(sql_getfetsel('nom','spip_auteurs','id_auteur='.$id_auteur)); $traducteur_supp['nom'] = extraire_multi(sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = ' . $id_auteur));
$traducteur_supp['lien'] = url_absolue(generer_url_entite($id_auteur,'auteur'),$url_site); $traducteur_supp['lien'] = url_absolue(generer_url_entite($id_auteur, 'auteur'), $url_site);
}else if(trim(strlen($traducteur)) > 0){ } elseif (trim(strlen($traducteur)) > 0) {
$traducteur_supp['nom'] = trim($traducteur); $traducteur_supp['nom'] = trim($traducteur);
$traducteur_supp['lien'] = ''; $traducteur_supp['lien'] = '';
} }
if(isset($traducteur_supp['nom'])) if (isset($traducteur_supp['nom'])) {
$traducteurs[$lang][] = $traducteur_supp; $traducteurs[$lang][] = $traducteur_supp;
}
unset($traducteur_supp); unset($traducteur_supp);
$people_unique[] = $traducteur; $people_unique[] = $traducteur;
} }
} }
} }
foreach($traducteurs as $lang => $peoples) { foreach ($traducteurs as $lang => $peoples) {
$trad_texte = "#\n# Traducteurs :\n"; $trad_texte = "#\n# Traducteurs :\n";
if ($peoples) { if ($peoples) {
foreach ($peoples as $people) { foreach ($peoples as $people) {
$trad_texte .= "# ".$people['nom']." (".$people['lien'].")\n"; $trad_texte .= '# ' . $people['nom'] . ' (' . $people['lien'] . ")\n";
} }
} }
} }
...@@ -118,11 +120,11 @@ msgstr "" ...@@ -118,11 +120,11 @@ msgstr ""
/** /**
* Les chaines * Les chaines
* *
* On crée un bloc pour chaque chaînes sous la forme * On crée un bloc pour chaque chaînes sous la forme
* *
* #, php-format * #, php-format
* #| msgid "id_dans_la_base" * #| msgid "id_dans_la_base"
* msgid "Item dans la langue originale" * msgid "Item dans la langue originale"
* msgstr "Item dans la langue actuelle (traduit), si non traduit, vide" * msgstr "Item dans la langue actuelle (traduit), si non traduit, vide"
*/ */
...@@ -131,34 +133,36 @@ msgstr "" ...@@ -131,34 +133,36 @@ msgstr ""
$tous[$row['id']] = $row; $tous[$row['id']] = $row;
} }
ksort($tous); ksort($tous);
foreach ($tous as $id => $row) { foreach ($tous as $id => $row) {
if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ? if (trim($row['comm'])) {
/**
* on rajoute les commentaires ?
*/
$row['comm'] = ' # ' . trim($row['comm']);
}
$str = $row['str']; $str = $row['str'];
$oldmd5 = md5($str); $oldmd5 = md5($str);
$str = unicode_to_utf_8( $str = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str), ENT_NOQUOTES, 'utf-8'));
html_entity_decode(
preg_replace('/&([lg]t;)/S', '&amp;\1', $str),
ENT_NOQUOTES, 'utf-8')
);
$newmd5 = md5($str); $newmd5 = md5($str);
if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND id_tradlang_module=".intval($info_module['id_tradlang_module'])); if ($oldmd5 !== $newmd5) {
$str_original = sql_getfetsel('str','spip_tradlangs','id ='.sql_quote($id).' AND id_tradlang_module='.intval($info_module['id_tradlang_module']).' AND lang='.sql_quote($info_module['lang_mere'])); sql_updateq('spip_tradlangs', array('md5' => $newmd5), 'md5 = '.sql_quote($oldmd5) . ' AND id_tradlang_module = ' . intval($info_module['id_tradlang_module']));
$x[]=($row['comm'] ? "#".$row['comm']."\n" : ""). }
" $str_original = sql_getfetsel('str', 'spip_tradlangs', 'id =' . sql_quote($id) . ' AND id_tradlang_module=' . intval($info_module['id_tradlang_module']) . ' AND lang=' . sql_quote($info_module['lang_mere']));
#, ".(($row['statut'] == 'MODIF') ? "fuzzy, php-format" : "php-format")." $x[] = ($row['comm'] ? '#' . $row['comm']."\n" : '').
'
#, '.(($row['statut'] == 'MODIF') ? 'fuzzy, php-format' : 'php-format')."
#| msgid \"".$row['id']."\" #| msgid \"".$row['id']."\"
msgid \"".str_replace('"','\"',$str_original)."\" msgid \"".str_replace('"', '\"', $str_original)."\"
msgstr \"".(($row['statut'] == 'NEW') ? '' : str_replace('"','\"',$str))."\""; msgstr \"".(($row['statut'] == 'NEW') ? '' : str_replace('"', '\"', $str))."\"";
unset($tous[$id]); unset($tous[$id]);
} }
$contenu .= str_replace("\r\n", "\n", join("\n",$x)); $contenu .= str_replace("\r\n", "\n", join("\n", $x));
ecrire_fichier($fichier,$contenu); ecrire_fichier($fichier, $contenu);
return $fichier; return $fichier;
} }
?>
\ No newline at end of file
<?php <?php
/** /**
* *
* Trad-lang v2 * Trad-lang v2
* Plugin SPIP de traduction de fichiers de langue * Plugin SPIP de traduction de fichiers de langue
* © Florent Jugla, Fil, kent1 * © Florent Jugla, Fil, kent1
* *
* Fichier des fonctions spécifiques du plugin * Fichier des fonctions spécifiques du plugin
*/ */
if (!defined("_ECRIRE_INC_VERSION")) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
/** /**
* Fonction d'export d'une langue d'un module SPIP en php * Fonction d'export d'une langue d'un module SPIP en php
* *
* @param string $module * @param string $module
* Le module à exporter * Le module à exporter
* @param string $langue * @param string $langue
...@@ -26,44 +26,55 @@ if (!defined("_ECRIRE_INC_VERSION")) { ...@@ -26,44 +26,55 @@ if (!defined("_ECRIRE_INC_VERSION")) {
* @return string $fichier * @return string $fichier
* Le fichier final * Le fichier final
*/ */
function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){ function export_lang_spip_dist($module, $langue, $dir_lang, $tout = false) {
/** /**
* Le fichier final * Le fichier final
* local/cache-lang/module_lang.php * local/cache-lang/module_lang.php
*/ */
$fichier = $dir_lang."/".$module."_".$langue.".php"; $fichier = $dir_lang . '/' . $module . '_' . $langue . '.php';
$tab = "\t"; $tab = "\t";
$where = "module=".sql_quote($module)." AND lang=".sql_quote($langue); $where = 'module = ' . sql_quote($module) . ' AND lang = ' . sql_quote($langue);
if(!$tout) if (!$tout) {
$where .= " AND statut IN ('OK','MODIF','RELIRE')"; $where .= " AND statut IN ('OK','MODIF','RELIRE')";
$res=sql_allfetsel("id,str,comm,statut","spip_tradlangs",$where,"id"); }
$res=sql_allfetsel('id,str,comm,statut', 'spip_tradlangs', $where, 'id');
$x=array(); $x=array();
$prev=""; $prev = '';
$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) /**
foreach ($res as $row){ * 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)
*/
$tous = $lorigine;
foreach ($res as $row) {
$tous[$row['id']] = $row; $tous[$row['id']] = $row;
} }
ksort($tous); ksort($tous);
foreach ($tous as $row) { foreach ($tous as $row) {
if ($prev!=strtoupper($row['id'][0])) $x[] = "\n$tab// ".strtoupper($row['id'][0]); if ($prev != strtoupper($row['id'][0])) {
$prev=strtoupper($row['id'][0]); $x[] = "\n$tab// ".strtoupper($row['id'][0]);
if (strlen($row['statut']) && ($row['statut'] != 'OK')) }
$prev = strtoupper($row['id'][0]);
if (strlen($row['statut']) and ($row['statut'] != 'OK')) {
$row['comm'] .= ' '.$row['statut']; $row['comm'] .= ' '.$row['statut'];
if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ? }
if (trim($row['comm'])) {
/**
* on rajoute les commentaires ?
*/
$row['comm'] = ' # ' . trim($row['comm']);
}
$str = $row['str']; $str = $row['str'];
$oldmd5 = md5($str); $oldmd5 = md5($str);
$str = unicode_to_utf_8( $str = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str), ENT_NOQUOTES, 'utf-8'));
html_entity_decode(
preg_replace('/&([lg]t;)/S', '&amp;\1', $str),
ENT_NOQUOTES, 'utf-8')
);
$newmd5 = md5($str); $newmd5 = md5($str);
if ($oldmd5 !== $newmd5) sql_updateq("spip_tradlangs",array('md5'=>$newmd5), "md5=".sql_quote($oldmd5)." AND module=".sql_quote($module)); if ($oldmd5 !== $newmd5) {
sql_updateq('spip_tradlangs', array('md5'=>$newmd5), 'md5 = ' . sql_quote($oldmd5) . ' AND module = '.sql_quote($module));
}
$x[]="$tab".var_export($row['id'],1).' => ' .var_export($str,1).','.$row['comm'] ; $x[] = "$tab".var_export($row['id'], 1) . ' => ' . var_export($str, 1) . ',' . $row['comm'] ;
} }
/** /**
...@@ -82,29 +93,29 @@ function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){ ...@@ -82,29 +93,29 @@ function export_lang_spip_dist($module,$langue,$dir_lang,$tout=false){
*/ */
$x[count($x)-1] = preg_replace('/,([^,]*)$/', '\1', $x[count($x)-1]); $x[count($x)-1] = preg_replace('/,([^,]*)$/', '\1', $x[count($x)-1]);
$contenu = join("\n",$x); $contenu = join("\n", $x);
/** /**
* On écrit le fichier * On écrit le fichier
*/ */
fwrite($fd, fwrite(
'<'.'?php $fd,
'<'.'?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP // This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de '.$url_trad.' // extrait automatiquement de '.$url_trad.'
// ** ne pas modifier le fichier ** // ** ne pas modifier le fichier **
' '
."\n".$secure.'$GLOBALS[$GLOBALS[\'idx_lang\']] = array( ."\n".$secure.'$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
' '
. str_replace("\r\n", "\n", $contenu) . str_replace("\r\n", "\n", $contenu)
.' .'
); );
?'.'>' ?'.'>'
); );
fclose($fd); fclose($fd);
@chmod($fichier, 0666); @chmod($fichier, 0666);
return $fichier; return $fichier;
} }
?>
\ No newline at end of file
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