diff --git a/ecrire/action/instituer_langue_objet.php b/ecrire/action/instituer_langue_objet.php
index 6dd8a328f4e9f32119eaa3b66efe80001cb3a294..76b12f7ceeb9f2c98c0bc8e9f18e60576f348606 100644
--- a/ecrire/action/instituer_langue_objet.php
+++ b/ecrire/action/instituer_langue_objet.php
@@ -27,16 +27,20 @@ if (!defined('_ECRIRE_INC_VERSION')) {
  * @param int $id
  * @param int $id_rubrique
  * @param string $changer_lang
+ * @param bool $langue_choisie : la table à modifier dispose-t-elle d'un champ 'langue_choisie'
  * @return string
  */
-function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang) {
+function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang, $langue_choisie = true) {
 	if ($changer_lang) {
 		$table_objet_sql = table_objet_sql($objet);
 		$id_table_objet = id_table_objet($objet);
-
+		
 		if ($changer_lang != "herit") {
-			sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'),
-				"$id_table_objet=" . intval($id));
+			$champs = array('lang' => $changer_lang);
+			if ($langue_choisie) {
+				$champs['langue_choisie'] = 'oui';
+			}
+			sql_updateq($table_objet_sql, $champs, "$id_table_objet=" . intval($id));
 			include_spip('inc/rubriques');
 			if ($table_objet_sql == 'spip_rubriques') {
 				calculer_langues_rubriques();
@@ -48,8 +52,11 @@ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_
 			if (!$langue_parent) {
 				$langue_parent = $GLOBALS['meta']['langue_site'];
 			}
-			sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'),
-				"$id_table_objet=" . intval($id));
+			$champs = array('lang' => $langue_parent);
+			if ($langue_choisie) {
+				$champs['langue_choisie'] = 'non';
+			}
+			sql_updateq($table_objet_sql, $champs, "$id_table_objet=" . intval($id));
 			$changer_lang = $langue_parent;
 			if ($table_objet_sql == 'spip_rubriques') {
 				include_spip('inc/rubriques');
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 51d7dfb0fb819ae6957609b5ebbebad6b9b589e0..ae368fe0aad6906a6984ef71a1e4efdcb6120528 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -202,7 +202,7 @@ function objet_modifier_champs($objet, $id_objet, $options, $c = null, $serveur
 					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
 				}
 				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
-				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang);
+				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, isset($desc['langue_choisie']));
 			}
 			// on laisse 'lang' dans $champs,
 			// ca permet de passer dans le pipeline post_edition et de journaliser