diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 5d42fbd791f1d88bf8aa4b1344a2c1ce8e18c50a..0e733af1a63fc6993c8ad70fb6f2044c12be35d1 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -771,7 +771,6 @@ function generer_url_entite($id='', $entite='', $args='', $ancre='', $public=NUL
 	return '';
 }
 
-// http://doc.spip.org/@generer_url_entite_absolue
 function generer_url_entite_absolue($id='', $entite='', $args='', $ancre='', $connect=NULL)
 {
 	if (!$connect) $connect = true;
@@ -1462,18 +1461,23 @@ function recuperer_fond($fond, $contexte=array(), $options = array(), $connect='
 	if (isset($contexte['fond']))
 		$fond = $contexte['fond'];
 
-	// Si on a inclus sans fixer le critere de lang, on prend la langue courante
-	if (!isset($contexte['lang']))
-		$contexte['lang'] = $GLOBALS['spip_lang'];
-
-	if ($contexte['lang'] != $GLOBALS['meta']['langue_site']) {
-		$lang_select = lang_select($contexte['lang']);
-	} else $lang_select ='';
+	$lang_select = '';
+	if (!isset($options['etoile']) OR !$options['etoile']){
+		// Si on a inclus sans fixer le critere de lang, on prend la langue courante
+		if (!isset($contexte['lang']))
+			$contexte['lang'] = $GLOBALS['spip_lang'];
+	
+		if ($contexte['lang'] != $GLOBALS['meta']['langue_site']) {
+			$lang_select = lang_select($contexte['lang']);
+		}
+	}
 
 	@$GLOBALS['_INC_PUBLIC']++;
 
 	foreach(is_array($fond) ? $fond : array($fond) as $f){
 		$page = evaluer_fond($f, $contexte, $connect);
+		if (isset($options['ajax'])AND $options['ajax'])
+			$page['texte'] = encoder_contexte_ajax($contexte,'',$page['texte']);
 		if (isset($options['raw']) AND $options['raw'])
 			$pages[] = $page;
 		else
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index ab2140a9deedc39cda61773b1071ece9e8771bd7..c4b3034ee3b2057b4ef15bd09f4bbca411518755 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -820,7 +820,6 @@ function balise_CONFIG_dist($p) {
 		return balise_ENV_dist($p, '$GLOBALS["meta"]');
 }
 
-// http://doc.spip.org/@balise_CONNECT_dist
 function balise_CONNECT_dist($p) {
 	$p->code = '($connect ? $connect : NULL)';
 	$p->interdire_scripts = false;
@@ -1070,15 +1069,12 @@ function balise_INCLURE_dist($p) {
 
 		$_connect = _q(!$id_boucle ? '' : $p->boucles[$id_boucle]->sql_serveur);
 
-		$page = $p->etoile
-		  ? "evaluer_fond('', \$l = $_l, $_connect)"
-		  : "recuperer_fond('',\$l =  $_l, array(), $_connect)";
-
-		$retour = !isset($_contexte['ajax']) ? 
-		  "\$p" :
-		  'encoder_contexte_ajax($l,"",$p)';
-
-		$p->code = "(!(\$p = $page) ? '' :\n\t$retour)";
+		$_options = array();
+		if (isset($_contexte['ajax'])) $_options[] = "'ajax'=>true";
+		if ($p->etoile) $_options[] = "'etoile'=>true";
+		$_options = "array(" . join(',',$_options) . ")";
+		
+		$p->code = "recuperer_fond('',\$l =  $_l, $_options, $_connect)";
 
 	} else {
 		$n = interprete_argument_balise(1,$p);
@@ -1145,13 +1141,11 @@ function balise_MODELE_dist($p) {
 
 	$connect = $p->boucles[$p->id_boucle]->sql_serveur;
 
-	$page = "\$p = recuperer_fond('modeles/$nom', \$l = array(".join(',', $_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']), array('trim'=>true, 'modele'=>true), " . _q($connect) . ")";
-
-	$retour = !isset($_contexte['ajax']) ? 
-		  '$p' :
-		  'encoder_contexte_ajax($l,"",$p)';
+	$page = "\$p = recuperer_fond('modeles/$nom', \$l = array(".join(',', $_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']), array('trim'=>true, 'modele'=>true"
+	. (isset($_contexte['ajax'])?", 'ajax'=>true":'')
+	. "), " . _q($connect) . ")";
 
-	$p->code = "(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' : (!($page) ? '' :\n\t$retour))";
+	$p->code = "(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' : $page)";
 
 	$p->interdire_scripts = false; // securite assuree par le squelette