diff --git a/ecrire/balise/menu_lang_ecrire.php b/ecrire/balise/menu_lang_ecrire.php
index 099795e794c3b19bc3aa7b0b7a693c6deda216a1..05d8a48f6798f1560f71e9d8d740d2c972c5e3c4 100644
--- a/ecrire/balise/menu_lang_ecrire.php
+++ b/ecrire/balise/menu_lang_ecrire.php
@@ -50,14 +50,12 @@ function menu_lang_pour_tous($nom, $default) {
 		return '';
 
 	$cible = str_replace('&', '&', parametre_url(self( /* racine */ true), 'lang' , '')); # lien a partir de /
-	$postcomplet = generer_url_action('cookie', 'url='.rawurlencode($cible), true);
+	$post = parametre_url(generer_url_action('cookie'), 'url', $cible, '&');
 
 	return array('formulaire_menu_lang',
 		3600,
 		array('nom' => $nom,
 			'url' => $post,
-			'cible' => $cible,
-			'retour' => $postcomplet,
 			'langues' => $opt
 		)
 	);
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 3c6d721264a5c75c0758ebcac12aad2d0fca4f52..0c0bd6b0b452be5ebc8b6d54f4fc91093763734b 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2623,8 +2623,8 @@ function form_hidden($action) {
 	$hidden = '';
 	if (false !== ($p = strpos($action, '?')))
 		foreach(preg_split('/&(amp;)?/',substr($action,$p+1)) as $c) {
-			$hidden .= "\n<input name='" . 
-				str_replace('=', "' value='", $c) .
+			$hidden .= "\n<input name='" .
+				entites_html(rawurldecode(str_replace('=', "' value='", $c))) .
 				"' type='hidden' />";
 	}
 	return $hidden;
diff --git a/formulaires/formulaire_menu_lang.html b/formulaires/formulaire_menu_lang.html
index 93a7f75be7a11fab2b2fd7fa4be3498d363d6cf1..1335b13cc87aab74fb2d66c2fcd67edfceaaae02 100644
--- a/formulaires/formulaire_menu_lang.html
+++ b/formulaires/formulaire_menu_lang.html
@@ -1,13 +1,10 @@
-<form	action='[(#ENV{url})]'
-	method='post'
-	style='margin:0px; padding:0px;'>
-<div>[
-	<input type='hidden' name='url' value='(#ENV{cible})' />
-]	<select	name='[(#ENV{nom})]' 
-		class='forml'
-		style='vertical-align: top; max-height: 24px; margin-bottom: 5px; width: 120px;'
-		onchange="document.location.href='[(#ENV{retour})]&amp;[(#ENV{nom})]='+this.options[this.selectedIndex].value">
-		[(#ENV*{langues})]
+<form action='#ENV{url}' method='post' style='margin:0px; padding:0px;'>
+<div>
+	[(#ENV{url}|form_hidden)]
+	<select name='#ENV{nom}' class='forml'
+	style='vertical-align:top; max-height:24px; margin-bottom:5px; width:120px;'
+onchange="document.location.href='#ENV{url}&amp;#ENV{nom}='+this.options[this.selectedIndex].value">
+	#ENV*{langues}
 	</select>
 	<noscript>
 		<div style='display:inline;'><input type='submit' value='&gt;&gt;' class='spip_bouton' /></div>