diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php
index cd7e3e2e34b39a20237700102659392fbfa9a4c4..4638a20e2322748c0dc45f1503f5577e68d6760d 100644
--- a/ecrire/exec/articles_edit.php
+++ b/ecrire/exec/articles_edit.php
@@ -261,7 +261,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 // http://doc.spip.org/@exec_articles_edit_dist
 function exec_articles_edit_dist()
 {
-	$id_article =_request('id_article');
+	$id_article = _request('id_article');
 	$id_rubrique = _request('id_rubrique');
 	$lier_trad = intval(_request('lier_trad'));
 	$new = _request('new');
diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php
index 48f1cdda7c7da9fa67cb3d9d257d2566db583f1e..d1ef252c1298a8b724f19ef802bda4b1f7be0cfc 100644
--- a/ecrire/inc/article_select.php
+++ b/ecrire/inc/article_select.php
@@ -12,9 +12,14 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+// Recupere les donnees d'un article pour composer un formulaire d'edition
+// (utilise par exec/article_edit)
+// id_article = numero d'article existant
+// id_rubrique = ou veut-on l'installer (pas obligatoire)
+// lier_trad = l'associer a l'article numero $lier_trad
+// new=oui = article a creer si on valide le formulaire
 // http://doc.spip.org/@article_select
-function article_select($id_article, $id_rubrique, $lier_trad, $new)
-{
+function article_select($id_article, $id_rubrique, $lier_trad, $new) {
   global $connect_id_auteur, $spip_lang; 
   $id_article = intval($id_article);
   $id_rubrique =  intval($id_rubrique);
@@ -47,49 +52,16 @@ function article_select($id_article, $id_rubrique, $lier_trad, $new)
  	}
 }
 else if ($new=='oui') {
-	if ($lier_trad) {
-		// Pas de langue choisie par defaut
-		$changer_lang = '';
+	// Nouvel article : titre par defaut
+	$row['titre'] = filtrer_entites(_T('info_nouvel_article'));
+	$row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
+	$row['id_rubrique'] = $id_rubrique;
 
-		// Recuperer les donnees de la traduction
-		$result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad");
-	
-		if ($row = spip_fetch_array($result)) {
-			$row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
+	// Si c'est une demande de nouvelle traduction, on procede autrement
+	if ($lier_trad)
+		$row = article_select_trad($lier_trad);
 
-		}
-		$langues_autorisees = $GLOBALS['meta']['langues_multilingue'];
-		
-		// Regler la langue, si possible
-		if (ereg(",$spip_lang,", ",$langues_autorisees,")) {
-			if ($GLOBALS['meta']['multi_articles'] == 'oui') {
-				// Si le menu de langues est autorise sur les articles,
-				// on peut changer la langue quelle que soit la rubrique
-				$changer_lang = $spip_lang;
-			}
-			else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
-				// Chercher la rubrique la plus adaptee pour accueillir l'article
-				if ($GLOBALS['meta']['multi_secteurs'] == 'oui') 
-					$id_parent = 0;
-				else {
-					$row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
-
-					$id_parent = $row_rub['id_parent'];
-				}
-				$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent"));
-				if ($row_rub) {
-					$id_rubrique = $row['id_secteur'] = $row['id_rubrique'] = $row_rub['id_rubrique'];
-					$changer_lang = 'herit';
-				}
-			}
-		}
-	}
-	else {
-		// Nouvel article : titre par defaut
-		$row['titre'] = filtrer_entites(_T('info_nouvel_article'));
-		$row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
-		$row['id_rubrique'] = $id_rubrique;
-	}
+	// recuperer le secteur, pour affecter les bons champs extras
 	if (!$row['id_secteur']) {
 		$row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
 		$row['id_secteur'] = $row_rub['id_secteur'];
@@ -110,4 +82,44 @@ else if ($new=='oui') {
 	return $row;
 }
 
+//
+// Si un article est demande en creation (new=oui) avec un lien de trad,
+// on initialise les donnees de maniere specifique
+//
+function article_select_trad($lier_trad) {
+	// Recuperer les donnees de l'article original
+	$result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad");
+	if ($row = spip_fetch_array($result)) {
+		$row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
+	}
+
+	// Regler la langue, si possible, sur celle du redacteur
+	// Cela implique souvent de choisir une rubrique ou un secteur
+	if (in_array($GLOBALS['spip_lang'],
+	explode(',', $GLOBALS['meta']['langues_multilingue']))) {
+		// Si le menu de langues est autorise sur les articles,
+		// on peut changer la langue quelle que soit la rubrique
+		// donc on reste dans la meme rubrique
+		if ($GLOBALS['meta']['multi_articles'] == 'oui') {
+			$row['id_rubrique'] = $row['id_rubrique']; # explicite :-)
+		}
+		else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
+			// Sinon, chercher la rubrique la plus adaptee pour
+			// accueillir l'article dans la langue du traducteur
+			if ($GLOBALS['meta']['multi_secteurs'] == 'oui') {
+				$id_parent = 0;
+			} else {
+				$row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
+
+				$id_parent = $row_rub['id_parent'];
+			}
+			$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent"));
+			if ($row_rub)
+				$row['id_rubrique'] = $row_rub['id_rubrique'];
+		}
+	}
+
+	return $row;
+}
+
 ?>