diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 5a2f077b71cd5323a3c8b07e19a0b5681500e518..e2df67a2d74a538985217eec97fdcdebf89c94cc 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -455,6 +455,7 @@ function lang_select ($lang='') {
 	include_ecrire('inc_lang.php3');
 	php3_array_push($pile_langues, $spip_lang);
 	changer_langue(lang_supprimer_point($lang));
+echo $lang;
 }
 
 // revenir a la langue precedente
diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index 3e1ec3e3d4b0b0fe6486a373ac41da597a848f94..c2b2c896d827978bfbf23a29d9a045a1557ba961 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -263,13 +263,7 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her
 		$parenthese_o = '(';
 		$parenthese_f = ')';
 		$default = lire_meta('langue_site');
-	} else if (substr($default,0,1) == '.') {
-		$parenthese_o = '(';
-		$parenthese_f = ')';
-		$default = substr($default,1);
 	}
-	
-	
 
 	if ($nom_select == 'var_lang') {
 		$langues = explode(',', $GLOBALS['all_langs']);
@@ -297,9 +291,9 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her
 	
 	if (lire_meta('multi_rubriques') == "oui") {
 		if ($herit) {
-			$ret .= "<option value='herit' selected> ("._T('info_multi_herit').")</option>\n";
+			$ret .= "<option value='herit' selected>"._T('info_multi_herit')." ($default)</option>\n";
 		} else if ($nom_select == 'changer_lang') {
-			$ret .= "<option value='herit'> ("._T('info_multi_herit').")</option>\n";
+			$ret .= "<option value='herit'>"._T('info_multi_herit')." ($default)</option>\n";
 		}
 	}
 
diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 64aab495d9634344dbe1d9ae6536475a9154a25e..6af92641102b1f1d7dd5925b6f32a4ee332d58f7 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -323,15 +323,14 @@ function typo_en($letexte) {
 	return ereg_replace(" *~+ *", "&nbsp;", $letexte);
 }
 
-// Typographie generale : francaise si la langue principale du site est
-// 'cpf', 'fr' ou 'eo',
+// Typographie generale : francaise si la langue est 'cpf', 'fr' ou 'eo',
 // sinon anglaise (minimaliste)
 function typo($letexte) {
-	global $langue_site;
+	global $spip_lang;
 
 	list($letexte, $les_echap) = echappe_html($letexte, "SOURCETYPO");
 
-	if (($langue_site == 'fr') OR ($langue_site == 'eo') OR ($langue_site == 'cpf'))
+	if (($spip_lang == 'fr') OR ($spip_lang == 'eo') OR ($spip_lang == 'cpf'))
 		$letexte = typo_fr($letexte);
 	else
 		$letexte = typo_en($letexte);
diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3
index 31310054be62094a8bcb873dbc2c6d47db7d74f7..99b94d4ed18b2aee60d53edec82115580b24047c 100644
--- a/inc-calcul-squel.php3
+++ b/inc-calcul-squel.php3
@@ -34,6 +34,7 @@ class Boucle {
 	var $type_requete;
 	var $separateur;
 	var $doublons;
+	var $lang_select;
 	var $partie, $total_parties;
 }
 
@@ -269,6 +270,9 @@ function parser_boucle($texte, $id_parent) {
 						$doublons = 'oui';
 						$req_where[] = "$table.$id_objet NOT IN (\$id_doublons[$type])";
 					}
+					else if (ereg('^lang_select(=(oui|non))?$', $param, $match)) {
+						if (!$lang_select = $match[2]) $lang_select = 'oui';
+					}
 					else if (ereg('^ *"([^"]*)" *$', $param, $match)) {
 						$separateur = ereg_replace("'","\'",$match[1]);
 					}
@@ -580,6 +584,7 @@ function parser_boucle($texte, $id_parent) {
 		$result->type_requete = $type;
 		$result->requete = $requete;
 		$result->doublons = $doublons;
+		$result->lang_select = $lang_select;
 		$result->separateur = $separateur;
 	}
 
@@ -1838,6 +1843,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 	$instance->type_requete = \''.$boucle->type_requete.'\';
 	$instance->separateur = \''.$boucle->separateur.'\';
 	$instance->doublons = \''.$boucle->doublons.'\';
+	$instance->lang_select = \''.$boucle->lang_select.'\';
 	$instance->partie = \''.$boucle->partie.'\';
 	$instance->total_parties = \''.$boucle->total_parties.'\';
 
@@ -2025,6 +2031,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 		$contexte["date"] = normaliser_date($row["date"]);
 		$contexte["date_redac"] = normaliser_date($row["date_redac"]);
 		$contexte["id_trad"] = $row["id_trad"];
+		if ($lang_dselect = ($instance->lang_select != "non")) lang_select($row["lang"]);
 		$contexte["accepter_forum"] = $row["accepter_forum"];
 		if ($instance->doublons == "oui") $id_doublons["articles"] .= ",".$row["id_article"];
 		';
@@ -2036,6 +2043,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 		$contexte["id_rubrique"] = $row["id_rubrique"];
 		$contexte["id_secteur"] = $row["id_rubrique"];
 		$contexte["date"] = normaliser_date($row["date_heure"]);
+		if ($lang_dselect = ($instance->lang_select != "non")) lang_select($row["lang"]);
 		if ($instance->doublons == "oui") $id_doublons["breves"] .= ",".$row["id_breve"];
 		';
 		break;
@@ -2082,6 +2090,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 		$contexte["id_parent"] = $row["id_parent"];
 		$contexte["id_secteur"] = $row["id_secteur"];
 		$contexte["date"] = normaliser_date($row["date"]);
+		if ($lang_dselect = ($instance->lang_select != "non")) lang_select($row["lang"]);
 		if ($instance->doublons == "oui") $id_doublons["rubriques"] .= ",".$row["id_rubrique"];
 		$syn_rubrique .= ",".$row["id_rubrique"].",";
 		';
@@ -2102,6 +2111,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 	case 'auteurs':
 		$texte .= '
 		$contexte["id_auteur"] = $row["id_auteur"];
+		if ($lang_dselect = ($instance->lang_select == "oui")) lang_select($row["lang"]);
 		if ($instance->doublons == "oui") $id_doublons["auteurs"] .= ",".$row["id_auteur"];
 		';
 		break;
@@ -2139,7 +2149,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 	//
 	// Fermeture de la boucle spip_fetch_array et liberation des resultats
 	//
-
+	$texte .= "if (\$lang_dselect) lang_dselect();\n";
 	if ($flag_parties) {
 		$texte .= '
 		}