diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index f46be54221785c9ae3e9d694a55c7e9941b098b8..d2cf4440b8e581bdec513284657921195c27a3f8 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -36,7 +36,7 @@ else
 	// Les articles a valider
 	//
 
- echo  afficher_articles(_T('info_articles_proposes'), array("WHERE" => "statut='prop'$vos_articles", 'ORDER BY' => "date DESC"));
+ echo  afficher_articles(_T('info_articles_proposes'), array("WHERE" => "statut='prop'", 'ORDER BY' => "date DESC"));
 
 	//
 	// Les breves a valider
diff --git a/ecrire/exec/articles_page.php b/ecrire/exec/articles_page.php
index 912992a3afdaa90b1ecd246a08a4cb5d91901707..29d3940d657c36506db30f2347e530dd81122a6c 100644
--- a/ecrire/exec/articles_page.php
+++ b/ecrire/exec/articles_page.php
@@ -67,7 +67,7 @@ echo "</p>";
 // Vos articles publies
 //
 
- echo "<p>", afficher_articles(_T('info_publies'),	array("FROM" =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=\"$connect_id_auteur\" AND articles.statut='publie'", 'ORDER BY' => "articles.date DESC"), true);
+ echo "<p>", afficher_articles(_T('info_publies'),	array("FROM" =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=\"$connect_id_auteur\" AND articles.statut='publie'", 'ORDER BY' => "articles.date DESC"));
 echo "</p>";
 
 //
diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index 4a66edadcc3a819dd137c8bcf43c13d2750380d8..fbee7296eaf7f1fe8e2a8b91e8ce5bcb5c254946 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -137,7 +137,7 @@ function auteurs_interventions($id_auteur, $statut)
 	else if ($connect_id_auteur == $id_auteur) $aff_art = "'prepa','prop','publie'";
 	else $aff_art = "'prop','publie'";
 
-	echo afficher_articles(_T('info_articles_auteur'),  array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien",  "WHERE" => "lien.id_auteur='$id_auteur' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_art)",  'ORDER BY' => "articles.date DESC"), true);
+	echo afficher_articles(_T('info_articles_auteur'),  array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien",  "WHERE" => "lien.id_auteur='$id_auteur' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_art)",  'ORDER BY' => "articles.date DESC"));
 
 	if ($id_auteur != $connect_id_auteur
 	    AND ($statut == '0minirezo' OR $statut == '1comite')) {
diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php
index 90c38ad9dc86e43c5a21fd24fc2dd2a50007d022..9fb2a73ba792bc59654d346b283d77be7628b771 100644
--- a/ecrire/exec/memoriser.php
+++ b/ecrire/exec/memoriser.php
@@ -15,9 +15,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // http://doc.spip.org/@exec_memoriser_dist
 function exec_memoriser_dist()
 {
-	global $connect_id_auteur;
+	$id_ajax = intval(_request('id_ajax_fonc'));
 
-	$res = spip_fetch_array(spip_query("SELECT variables, hash FROM spip_ajax_fonc	WHERE id_ajax_fonc =" . intval(_request('id_ajax_fonc')) . " AND id_auteur=$connect_id_auteur"));
+	// le champ id_auteur sert finalement a memoriser le nombre de lignes
+	// (a renommer)
+
+	$res = spip_fetch_array(spip_query($q = "SELECT variables, id_auteur, hash FROM spip_ajax_fonc WHERE id_ajax_fonc = $id_ajax"));
 
 	if ($res) {
 		
@@ -25,10 +28,10 @@ function exec_memoriser_dist()
 
 	  include_spip('inc/presentation');		
 
-	  if (_request('trad'))
-	    ajax_retour(afficher_articles_trad ($param, $id_ajax_fonc, $titre_table, $requete, $afficher_visites, $afficher_auteurs));
+	  $formater_article = _request('trad') ? '' : charger_fonction('formater_article', 'inc');
+
+	  ajax_retour(afficher_articles_trad($titre_table, $requete, $formater_article, $param, $id_ajax, $res['id_auteur']));
 
-	  else ajax_retour(afficher_articles ($titre_table, $requete, $afficher_visites, $afficher_auteurs));
-	}
+	} else spip_log("memoriser $q vide");
 }
 ?>
diff --git a/ecrire/exec/mots_edit.php b/ecrire/exec/mots_edit.php
index 9afdaac7b295c7ea26f4d225507f51d45e27ab6a..db51a931a90b002753890f3968d95a38c7b886ce 100644
--- a/ecrire/exec/mots_edit.php
+++ b/ecrire/exec/mots_edit.php
@@ -205,7 +205,7 @@ if ($id_mot) {
 
 	afficher_rubriques(_T('info_rubriques_liees_mot'), array("FROM" => 'spip_rubriques AS rubrique, spip_mots_rubriques AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_rubrique=rubrique.id_rubrique", 'ORDER BY' => "rubrique.titre"));
 
-	echo afficher_articles(_T('info_articles_lies_mot'),	array('FROM' => "spip_articles AS articles, spip_mots_articles AS lien", 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC"), true);
+	echo afficher_articles(_T('info_articles_lies_mot'),	array('FROM' => "spip_articles AS articles, spip_mots_articles AS lien", 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_article=articles.id_article AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC"));
 
 	afficher_breves(_T('info_breves_liees_mot'), array("FROM" => 'spip_breves AS breves, spip_mots_breves AS lien', 'WHERE' => "lien.id_mot='$id_mot' AND lien.id_breve=breves.id_breve", 'ORDER BY' => "breves.date_heure DESC"));
 
diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php
index 4016ecbfaafe74f7f4ad9831ea2a8bcaacb25b0d..997b4ae32831b2167057a0a89ed09986b06d9d56 100644
--- a/ecrire/exec/naviguer.php
+++ b/ecrire/exec/naviguer.php
@@ -322,7 +322,7 @@ if ($relief) {
 //////////  Les articles publies
 /////////////////////////
 
-	  echo afficher_articles(_T('info_tous_articles_presents'), array("WHERE" => "statut='publie' AND id_rubrique='$id_rubrique'", 'ORDER BY' => "date DESC"), true);
+	  echo afficher_articles(_T('info_tous_articles_presents'), array("WHERE" => "statut='publie' AND id_rubrique='$id_rubrique'", 'ORDER BY' => "date DESC"));
 
 
 
diff --git a/ecrire/inc/formater_article.php b/ecrire/inc/formater_article.php
index a59460f63c47d609ec013d10dc018e8f39cb68dc..9415147ac3b6df281833e21e15a277e788fa222e 100644
--- a/ecrire/inc/formater_article.php
+++ b/ecrire/inc/formater_article.php
@@ -14,11 +14,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // Fonction appelee dans une boucle, calculer les invariants au premier appel.
 
-function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_langue, $langue_defaut)
+function inc_formater_article($row )
 {
 	global $dir_lang, $options, $spip_lang_right, $spip_display;
 	static $pret = false;
-	static $chercher_logo, $img_admin, $formater_auteur, $nb;
+	static $chercher_logo, $img_admin, $formater_auteur, $nb, $langue_defaut, $afficher_langue;
 
 	if (!$pret) {
 		$chercher_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
@@ -29,9 +29,17 @@ function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_la
 		$nb = ($options != "avancees")
 		  ? ''
 		  : _T('info_numero_abbreviation');
+		if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') {
+			$afficher_langue = true;
+			$langue_defaut = isset($GLOBALS['langue_rubrique'])
+			  ? $GLOBALS['meta']['langue_site']
+			  : $GLOBALS['langue_rubrique'];
+		}
 		$pret = true;
 	}
 
+	$id_article = $row['id_article'];
+
 	if ($chercher_logo) {
 		if ($logo = $chercher_logo($id_article, 'id_article', 'on')) {
 			list($fid, $dir, $nom, $format) = $logo;
@@ -62,22 +70,19 @@ function inc_formater_article($id_article, $row, $afficher_auteurs, $afficher_la
 	. (!$logo ? '' :
 	   ("<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>" . $logo . "</div>"))
 	. typo($titre)
-	. (!($afficher_langue AND $lang != $langue_defaut) ? '' :
+	. (!($afficher_langue AND $lang != $GLOBALS['meta']['langue_site']) ? '' :
 	   (" <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>"))
 	. (!$row['petition'] ? '' : (" <font size=1 color='red'>"._T('lien_petitions')."</font>"))
 	. "</a>"
 	. "</div>";
 	
-	if ($afficher_auteurs) {
-
-		$result = auteurs_article($id_article);
-		$les_auteurs = "";
-		while ($r = spip_fetch_array($result)) {
-			list($s, $mail, $nom, $w, $p) = $formater_auteur($r['id_auteur']);
-			$les_auteurs .= "$mail&nbsp;$nom, ";
-		}
-		$vals[] = substr($les_auteurs, 0, -2);
-	} else $vals[]= '&nbsp;';
+	$result = auteurs_article($id_article);
+	$les_auteurs = "";
+	while ($r = spip_fetch_array($result)) {
+		list($s, $mail, $nom, $w, $p) = $formater_auteur($r['id_auteur']);
+		$les_auteurs .= "$mail&nbsp;$nom, ";
+	}
+	$vals[] = substr($les_auteurs, 0, -2);
 
 	$s = affdate_jourcourt($date);
 	$vals[] = $s ? $s : '&nbsp;';
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index 9f6d88cd63ce95c6793a8c01ed6907793e20a68a..87cee9e233df1d7b5a60567f3decb4fb2f08585e 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -685,191 +685,120 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act)
 // Afficher tableau d'articles
 //
 // http://doc.spip.org/@afficher_articles
-function afficher_articles($titre_table, $requete, $afficher_visites = false, $afficher_auteurs = true, $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) {
+function afficher_articles($titre_table, $requete, $formater_article='') {
 
-	global $connect_id_auteur, $connect_statut, $dir_lang;
-	global $options, $spip_display;
-	global $spip_lang_left, $spip_lang_right;
+	global $options;
 
 	if (!isset($requete['FROM']))  $requete['FROM'] = 'spip_articles AS articles';
+
+	if (!isset($requete['SELECT'])) {
+		$requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.lang, articles.id_trad, articles.descriptif";
+	}
+	
+	if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = '';
+
 	// memo des arguments en base pour gérer l'affichage par tranche
 	// et/ou par langues.
 
-	$hash = "0x".substr(md5($connect_id_auteur. serialize($requete) . $titre_table), 0, 31);
+	$hash = "0x".substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre_table), 0, 31);
 	$tmp_var = 't' . substr($hash, 2, 7);
 
-	$res_proch = spip_query("SELECT id_ajax_fonc FROM spip_ajax_fonc WHERE hash=$hash AND id_auteur=$connect_id_auteur LIMIT 1");
+	// le champ id_auteur sert finalement a memoriser le nombre de lignes
+	// (a renommer)
+
+	$res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=$hash LIMIT 1");
 	if ($row = spip_fetch_array($res_proch)) {
 		$id_ajax = $row["id_ajax_fonc"];
+		$cpt = $row["id_auteur"];
 	} else  {
 		include_spip ('base/abstract_sql');
 		$variables = serialize(array(
 			"param" => $tmp_var,
 			"requete" => $requete,
 			"titre_table" => $titre_table,
-			"afficher_visites" => $afficher_visites,
-			"afficher_auteurs" => $afficher_auteurs
 			));
 
-		$id_ajax = spip_abstract_insert("spip_ajax_fonc", "(id_auteur, variables, hash, date)", "($connect_id_auteur, " . spip_abstract_quote($variables) . ", $hash, NOW())");
-		}
-
-	$activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
-	$afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
-	$afficher_langue = false;
-	$langue_defaut = $GLOBALS['meta']['langue_site'];
-	// Preciser la requete (alleger les requetes)
-	if (!isset($requete['SELECT'])) {
-		$requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.lang";
-
-		if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') {
-			$afficher_langue = true;
-			if (isset($GLOBALS['langue_rubrique'])) $langue_defaut = $GLOBALS['langue_rubrique'];
-			$requete['SELECT'] .= ", articles.lang";
+		$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
+		if (!$cpt = $cpt['n']) return '' ;
+		
+		if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt);
+		$id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . spip_abstract_quote($variables) . ", $hash, $cpt, NOW())");
 		}
-		if ($afficher_visites)
-			$requete['SELECT'] .= ", articles.visites, articles.popularite";
-		if ($afficher_descriptif)
-			$requete['SELECT'] .= ", articles.descriptif";
-	}
-	
-	if ($options == "avancees")  $ajout_col = 1;
-	else $ajout_col = 0;
-
-	if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = '';
-
-	$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
-	if (! ($obligatoire OR ($cpt = $cpt['n']))) return '' ;
-	if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt);
 
 	$nb_aff = floor(1.5 * _TRANCHES);
 	$deb_aff = intval(_request($tmp_var));
 
-
 	$requete['FROM'] = preg_replace("/(spip_articles AS \w*)/", "\\1 LEFT JOIN spip_petitions AS petitions USING (id_article)", $requete['FROM']);
 
 	$requete['SELECT'] .= ", petitions.id_article AS petition ";
 
-	if ($cpt > $nb_aff) {
-		$nb_aff = (_TRANCHES); 
-		$tranches = afficher_tranches_requete($cpt, $afficher_auteurs ? 4 + $ajout_col : 3 + $ajout_col, $tmp_var, generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax"), $nb_aff);
-
-	} else 	$tranches = '';
-
-	$result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
-
+	if (!function_exists($formater_article))
+		$formater_article = charger_fonction('formater_article', 'inc');
+	return afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt);
+}
 
-	$table = array();
-	$formater_article = charger_fonction('formater_article', 'inc');
+// http://doc.spip.org/@afficher_articles_trad
+function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt) {
 
-	while ($row = spip_fetch_array($result)) {
-	  	$id = $row['id_article'];
-		$table[]= $formater_article($id, $row, $afficher_auteurs, $afficher_langue, $langue_defaut);
-	}
-	spip_free_result($result);
+	global $options, $spip_lang_right;
 
-	if ($options == "avancees") { // Afficher le numero (JMB)
-		if ($afficher_auteurs) {
-			$largeurs = array(11, '', 80, 100, 50);
-			$styles = array('', 'arial2', 'arial1', 'arial1', 'arial1');
-		} else {
-			$largeurs = array(11, '', 100, 50);
-			$styles = array('', 'arial2', 'arial1', 'arial1');
-		}
+	if (!$formater_article) {
+	  $formater_article = 'afficher_articles_trad_boucle';
+	  $largeurs = array(11, 24, '', '1');
+	  $styles = array('', 'arial1', 'arial1', '');
+	  $icone = "langues-off-12.gif";
+	  $trad =0;
 	} else {
-		if ($afficher_auteurs) {
-			$largeurs = array(11, '', 100, 100);
-			$styles = array('', 'arial2', 'arial1', 'arial1');
+		if ($options == "avancees") { // Afficher le numero (JMB)
+		  $largeurs = array(11, '', 80, 100, 50);
+		  $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1');
 		} else {
-			$largeurs = array(11, '', 100);
-			$styles = array('', 'arial2', 'arial1');
+		  $largeurs = array(11, '', 100, 100);
+		  $styles = array('', 'arial2', 'arial1', 'arial1');
 		}
+		$icone = 'langues-12.gif';
+		$trad = 1;
 	}
 
-	$res = afficher_article_logo_trad($titre_table, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, 1); 
+	$nb_aff = floor(1.5 * _TRANCHES);
+	$deb_aff = intval(_request($tmp_var));
 
-	return ajax_action_greffe($tmp_var,$res);
-}
+	if ($cpt > $nb_aff) {
+		$nb_aff = (_TRANCHES); 
+		$tranches = afficher_tranches_requete($cpt,  count($largeurs), $tmp_var, generer_url_ecrire('memoriser', "id_ajax_fonc=$id_ajax&trad=$trad"), $nb_aff);
+	} else 	$tranches = '';
+
+	$q = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
+	$t = array();
+	while ($r = spip_fetch_array($q)) $t[]= $formater_article($r);
+	spip_free_result($q);
 
-function afficher_article_logo_trad($titre, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, $queltrad)
-{
-	global  $spip_lang_right;
-	$icone = $queltrad ? "langues-off-12.gif" : 'langues-12.gif';
 	$style = "style='visibility: hidden; float: $spip_lang_right'";
 
 	$texte = http_img_pack("searching.gif", "*", $style . " id='img_$tmp_var'");
 
 	if (($GLOBALS['meta']['gerer_trad'] == "oui")) {
-		$url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=$queltrad");
+		$url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=$trad");
 		$texte .= 
 		 "\n<div style='float: $spip_lang_right;'><a href=\"#\"\nonclick=\"return charger_id_url('$url','$tmp_var');\">"
 		. "<img\nsrc='". _DIR_IMG_PACK . $icone ."' /></a></div>";
 	}
-	$texte .=  '<b>' . $titre  . '</b>';
+	$texte .=  '<b>' . $titre_table  . '</b>';
 
-	return  "\n<div style='height: 12px;'></div>"
+	$res =  "\n<div style='height: 12px;'></div>"
 	. "\n<div class='liste'>"
 	. bandeau_titre_boite2($texte, "article-24.gif", 'white', 'black',false)
 	. afficher_liste_debut_tableau()
 	. $tranches
-	. afficher_liste($largeurs, $table, $styles)
+	. afficher_liste($largeurs, $t, $styles)
 	. afficher_liste_fin_tableau()
 	. "</div>\n";
 
-}
-
-// http://doc.spip.org/@afficher_articles_trad
-function afficher_articles_trad($tmp_var, $id_ajax, $titre_table,
-				$requete, $afficher_visites = false,
-$afficher_auteurs= true,  $obligatoire = false, $afficher_cadre = true, $afficher_descriptif = true) {
-
-	global $connect_id_auteur, $connect_statut, $dir_lang;
-	global $options, $spip_lang_left, $spip_lang_right;
-
-	if (!$requete['FROM']) $requete['FROM']=  'spip_articles AS articles';
-
-	$langues_site = explode(',', $GLOBALS['meta']['langues_multilingue']);
-	$activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
-	$afficher_visites = ($afficher_visites AND $connect_statut == "0minirezo" AND $activer_statistiques != "non");
-
-	// Preciser la requete (alleger les requetes)
-	if (!$requete['SELECT']) {
-		$requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.id_trad, articles.lang";
-	}
-	
-	if ($options == "avancees")  $ajout_col = 1;
-	else $ajout_col = 0;
-	
-	$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '')));
-	if (! ($obligatoire OR ($cpt = $cpt['n']))) return '';
-	if ($requete['LIMIT']) $cpt = min($requete['LIMIT'], $cpt);
-
-	$nb_aff = floor(1.5 * _TRANCHES);
-	$deb_aff = intval(_request($tmp_var));
-
-	if ($cpt > $nb_aff) {
-		$nb_aff = (_TRANCHES); 
-		$tranches = afficher_tranches_requete($cpt,  4, $tmp_var, generer_url_ecrire('memoriser', "id_ajax_fonc=$id_ajax&trad=1"), $nb_aff);
-	} else 	$tranches = '';
-
-	$result = spip_query("SELECT " . $requete['SELECT'] . " FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '') . ($requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '') . " LIMIT " . ($deb_aff >= 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999")));
-
-	$table = array();
-	while ($row = spip_fetch_array($result)) {
-		$table[]=afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $langues_site);
-	}
-	spip_free_result($result);
-
-	$largeurs = array(11, 24, '', '1');
-	$styles = array('', 'arial1', 'arial1', '');
-
-	$res = afficher_article_logo_trad($titre_table, $tranches, $largeurs, $table, $styles, $tmp_var, $id_ajax, 0);
-	
-	return $res;
+	return ajax_action_greffe($tmp_var,$res);
 }
 
 // http://doc.spip.org/@afficher_articles_trad_boucle
-function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $langues_site)
+function afficher_articles_trad_boucle($row)
 {
 	global $dir_lang,  $spip_lang_right;
 
@@ -883,7 +812,6 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $
 	$id_trad = $row['id_trad'];
 	$lang = $row['lang'];
 
-
 	// La petite puce de changement de statut
 	$vals[] = puce_statut_article($id_article, $statut, $id_rubrique);
 
@@ -892,20 +820,32 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $
 	$langues_art = "";
 	$dates_art = "";
 	$l = "";
+
 	$res_trad = spip_query("SELECT id_article, lang, date_modif  FROM spip_articles WHERE id_trad = $id_trad AND id_trad > 0");
+
 	while ($row_trad = spip_fetch_array($res_trad)) {
+
 		$id_article_trad = $row_trad["id_article"];
 		$lang_trad = $row_trad["lang"];
 		$date_trad = $row_trad["date_modif"];
-		
 		$dates_art[$lang_trad] = $date_trad;
 		$langues_art[$lang_trad] = $id_article_trad;
 		if ($id_article_trad == $id_trad) $date_ref = $date;
 	}
 
-	reset($langues_site);
+
+	// faudrait sortir ces invariants de boucle
+
+	if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') {
+			$afficher_langue = true;
+			$langue_defaut = isset($GLOBALS['langue_rubrique'])
+			  ? $GLOBALS['meta']['langue_site']
+			  : $GLOBALS['langue_rubrique'];
+	}
+
 	$span_lang = false;
-	while (list(,$k) = each($langues_site)) {
+
+	foreach(explode(',', $GLOBALS['meta']['langues_multilingue']) as $k){
 		if ($langues_art[$k]) {
 			if ($langues_art[$k] == $id_trad) {
 				$span_lang = "<a href='" . generer_url_ecrire("articles","id_article=".$langues_art[$k]) . "'><span class='lang_base'>$k</span></a>";
@@ -938,6 +878,7 @@ function afficher_articles_trad_boucle($row, $afficher_langue, $langue_defaut, $
 	if ($id_article == $id_trad) $titre = "<b>$titre</b>";
 			
 	$s .= typo($titre);
+
 	if ($afficher_langue AND $lang != $langue_defaut)
 		$s .= " <font size='1' color='#666666'$dir_lang>(".traduire_nom_langue($lang).")</font>";