diff --git a/ecrire/inc_base.php3 b/ecrire/inc_base.php3
index ed75e5ac4408452ef9977ba4519b240c1f6d5e76..67c6b945cecef92d4b8bd9ffd9d35279b1b3d0f3 100644
--- a/ecrire/inc_base.php3
+++ b/ecrire/inc_base.php3
@@ -44,6 +44,7 @@ function creer_base() {
 		PRIMARY KEY (id_article),
 		KEY id_rubrique (id_rubrique),
 		KEY id_secteur (id_secteur),
+		KEY lang (lang),
 		KEY statut (statut, date))";
 	$result = spip_query($query);
 
@@ -73,6 +74,7 @@ function creer_base() {
 		PRIMARY KEY (id_auteur),
 		KEY login (login),
 		KEY statut (statut),
+		KEY lang (lang),
 		KEY en_ligne (en_ligne))";
 	$result = spip_query($query);
 
@@ -149,6 +151,7 @@ function creer_base() {
 		lang VARCHAR(10) DEFAULT '' NOT NULL,
 		extra longblob NULL,
 		PRIMARY KEY (id_rubrique),
+		KEY lang (lang),
 		KEY id_parent (id_parent))";
 	$result = spip_query($query);
 
@@ -1295,6 +1298,13 @@ function maj_base() {
 		maj_version (1.703);
 	}
 
+	if ($version_installee < 1.704) {
+		spip_query("ALTER TABLE spip_articles ADD INDEX lang (lang)");
+		spip_query("ALTER TABLE spip_auteurs ADD INDEX lang (lang)");
+		spip_query("ALTER TABLE spip_rubriques ADD INDEX lang (lang)");
+		maj_version (1.704);
+	}
+
 }
 
 ?>
diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 375c230114c2bb3fb293114c33538e62c476bdcc..0b07e2753dc0472f973bebbf35b2cf4ac01e01b6 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -444,6 +444,7 @@ function extra ($letexte,$champ) {
 // <body[ dir="(#LANG|lang_rtl)"]> pour l'ecriture droite->gauche
 function lang_rtl ($lang) {
 	include_ecrire('inc_lang.php3');
+	$lang = lang_supprimer_point($lang);
 	if ($lang=='fa' OR $lang=='ar')
 		return 'rtl';
 }
@@ -453,7 +454,7 @@ function lang_select ($lang='') {
 	global $pile_langues, $spip_lang;
 	include_ecrire('inc_lang.php3');
 	array_push($pile_langues, $spip_lang);
-	changer_langue($lang);
+	changer_langue(lang_supprimer_point($lang));
 }
 
 // revenir a la langue precedente
@@ -463,9 +464,4 @@ function lang_dselect ($rien='') {
 	changer_langue(array_pop($pile_langues));
 }
 
-// nettoyer les langues affectees automatiquement (cf. calculer_langues_rubriques)
-function lang_supprimer_point ($langue) {
-	return ereg_replace('^\.', '', $langue);
-}
-
 ?>
diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index c8538541fc3718be1f5e7db83bd3b4bf50e3f056..fd430af4402dee4534622f3c646e8d2f1d74ee00 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -101,6 +101,7 @@ function traduire_chaine($code, $args) {
 }
 
 function traduire_nom_langue($lang) {
+	$lang = lang_supprimer_point ($lang);
 	$codes_langues = array(
 	'aa' => "Afar",
 	'ab' => "Abkhazian",
@@ -259,11 +260,13 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '') {
 	if ($default == '')
 		$default = $GLOBALS['spip_lang'];
 	else if ($default == '--') {
-		$premier_option = "<option value='--'>--</option>\n";
+		$parenthese_o = '(';
+		$parenthese_f = ')';
+		$default = lire_meta('langue_site');
 	} else if (substr($default,0,1) == '.') {
 		$parenthese_o = '(';
 		$parenthese_f = ')';
-		$default = substr($default,1);
+		$default = lang_supprimer_point($default);
 	}
 
 	$langues = explode(',', $GLOBALS['all_langs']);
@@ -349,6 +352,11 @@ function init_langues() {
 	}
 }
 
+// nettoyer les langues affectees automatiquement (cf. calculer_langues_rubriques)
+function lang_supprimer_point ($langue) {
+	return ereg_replace('^\.', '', $langue);
+}
+
 init_langues();
 utiliser_langue_site();
 
diff --git a/ecrire/inc_rubriques.php3 b/ecrire/inc_rubriques.php3
index 87bf7b0667aebfb9cf724e4dd5028e2174f336cf..35d59bf03a9c90fdcfeef85185bbf5e904b12dec 100644
--- a/ecrire/inc_rubriques.php3
+++ b/ecrire/inc_rubriques.php3
@@ -169,7 +169,7 @@ function calculer_langues_rubriques_etape() {
 	while ($row = spip_fetch_array($s)) {
 		$lang = addslashes(lang_supprimer_point($row['lang']));
 		$id_rubrique = $row['id_rubrique'];
-		spip_log ("rubrique $id_rubrique = .$lang");
+		spip_debug ("rubrique $id_rubrique = .$lang");
 		$t = spip_query ("UPDATE spip_rubriques SET lang='.$lang' WHERE id_rubrique=$id_rubrique");
 	}
 
@@ -189,7 +189,7 @@ function calculer_langues_rubriques() {
 	while ($row = spip_fetch_array($s)) {
 		$lang = addslashes(lang_supprimer_point($row['lang']));
 		$id_article = $row['id_article'];
-		spip_log ("article $id_article = .$lang");
+		spip_debug ("article $id_article = .$lang");
 		spip_query ("UPDATE spip_articles SET lang='.$lang' WHERE id_article=$id_article");
 	}
 	
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 78c8676c1f891c21ba7e9ec40558069e03a5904c..e48f118181d36c8e8645ac45d0a3aa19a55f99e9 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -149,10 +149,10 @@ if ($flag_ecrire) {
 // (utilise pour les modifs de la base de donnees)
 
 // version de la base
-$spip_version = 1.703;
+$spip_version = 1.704;
 
 // version de spip
-$spip_version_affichee = "1.7a1 CVS";
+$spip_version_affichee = "1.7a2 CVS";
 
 // version de spip / tag cvs
 if (ereg('Name: v(.*) ','$Name$', $regs)) $spip_version_affichee = $regs[1];