diff --git a/.gitattributes b/.gitattributes
index bac3198da6eb0958e5aa16cbc1195c660a3d703d..40d06ea0f40f35003883e367d8c803a1ab05df18 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -411,9 +411,13 @@ prive/formulaires/configurer_identite.html -text
 prive/formulaires/configurer_identite.php -text
 prive/formulaires/configurer_langage.html -text
 prive/formulaires/configurer_langage.php -text
+prive/formulaires/configurer_langue.html -text
+prive/formulaires/configurer_langue.php -text
 prive/formulaires/configurer_metas.php -text
 prive/formulaires/configurer_preferences.html -text
 prive/formulaires/configurer_preferences.php -text
+prive/formulaires/configurer_transcodeur.html -text
+prive/formulaires/configurer_transcodeur.php -text
 prive/formulaires/editer_article.html -text
 prive/formulaires/editer_article.php -text
 prive/formulaires/editer_auteur.html -text
@@ -741,6 +745,7 @@ prive/squelettes/contenu/page-charte.html -text
 prive/squelettes/contenu/page-configurer.html -text
 prive/squelettes/contenu/page-configurer_identite.html -text
 prive/squelettes/contenu/page-configurer_langage.html -text
+prive/squelettes/contenu/page-configurer_langue.html -text
 prive/squelettes/contenu/page-configurer_preferences.html -text
 prive/squelettes/extra/dist.html -text
 prive/squelettes/head/dist.html -text
diff --git a/prive/formulaires/configurer_langue.html b/prive/formulaires/configurer_langue.html
new file mode 100644
index 0000000000000000000000000000000000000000..45e4836c5ea7999e018d72ddbc592326c23f359d
--- /dev/null
+++ b/prive/formulaires/configurer_langue.html
@@ -0,0 +1,30 @@
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
+<h3 class='titrem'><img src="#CHEMIN_IMAGE{langue-24.png}" class="cadre-icone" /><:info_langue_principale:>&nbsp;:&nbsp;#ENV{_langue_site}</h3>
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+	[(#ENV{editable})
+	<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+		[(#REM) declarer les hidden qui declencheront le service du formulaire
+		parametre : url d'action ]
+		#ACTION_FORMULAIRE{#ENV{action}}
+	  <ul>
+			<li>
+				<div class="explication">
+				<:texte_selection_langue_principale|inserer_attribut{class,spip}:>
+				</div>
+			</li>
+	  	#SET{name,changer_langue_site}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+	    <li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+	    	<label for="#GET{name}"><:info_langue_principale:></label>
+				[<span class='erreur_message'>(#GET{erreurs})</span>]
+				[<select name="changer_langue_site" id="changer_langue_site">
+				(#ENV*{_langues})
+				</select>]
+	    </li>
+	  </ul>
+	  [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+	  <!--extra-->
+	  <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
+	</div></form>
+	]
+</div>
\ No newline at end of file
diff --git a/prive/formulaires/configurer_langue.php b/prive/formulaires/configurer_langue.php
new file mode 100644
index 0000000000000000000000000000000000000000..5d48f9b7f57b1caa837a8d7cee3b5e1f1c12465a
--- /dev/null
+++ b/prive/formulaires/configurer_langue.php
@@ -0,0 +1,60 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2010                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function formulaires_configurer_langue_charger_dist(){
+	$valeurs = array();
+
+	include_spip('inc/lang');
+	$l_site = $GLOBALS['meta']['langue_site'];
+	$langue_site = traduire_nom_langue($l_site);
+
+	$langues = explode(",",$GLOBALS['meta']['langues_proposees']);
+	if (!in_array($l_site, $langues))
+	 $langues[] = $l_site;
+	sort($langues);
+
+	$res = "";
+	foreach ($langues as $l) {
+		$res .= "<option value='$l'"
+			. ($l==$l_site ? " selected='selected'":"")
+			.">".traduire_nom_langue($l)."</option>\n";
+	}
+
+	$valeurs = array(
+		'_langues' => $res,
+		'_langue_site' => $langue_site,
+		'changer_langue_site' => '',
+	);
+
+	return $valeurs;
+}
+
+
+function formulaires_configurer_langue_traiter_dist(){
+	$res = array('editable'=>true);
+
+	if ($lang = _request('changer_langue_site')) {
+		include_spip('inc/lang');
+		// verif que la langue demandee est licite
+		if (changer_langue($lang)) {
+			ecrire_meta('langue_site', $lang);
+			$res['message_ok'] = _T('config_info_enregistree');
+		}
+		// le test a defait ca:
+		utiliser_langue_visiteur();
+	}
+	if (!$res['message_ok'])
+		$res['message_erreur'] = _L('erreur');
+	return $res;
+}
diff --git a/prive/formulaires/configurer_transcodeur.html b/prive/formulaires/configurer_transcodeur.html
new file mode 100644
index 0000000000000000000000000000000000000000..eed6e9307bc8e452a5e754872f45eeeaa69977c2
--- /dev/null
+++ b/prive/formulaires/configurer_transcodeur.html
@@ -0,0 +1,36 @@
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
+<h3 class='titrem'><:info_jeu_caractere:></h3>
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+	<p><:texte_jeu_caractere:></p>
+	[(#ENV{editable})
+	<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+		[(#REM) declarer les hidden qui declencheront le service du formulaire
+		parametre : url d'action ]
+		#ACTION_FORMULAIRE{#ENV{action}}
+	  <ul>
+			<li>
+				<div class="explication">
+					<p><:texte_jeu_caractere_3:></p>
+					<div style='text-align: center'><b><tt>#ENV{charset}</tt></b></div>
+					<p><:texte_jeu_caractere_4:></p>
+				</div>
+			</li>
+	  	#SET{name,charset}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+	    <li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+	    	<label for="#GET{name}"><:info_jeu_caractere:></label>[
+				<span class='erreur_message'>(#GET{erreurs})</span>
+				]<input type="text" class="text" name="#GET{name}" id="#GET{name}" value="#ENV*{#GET{name}}" />
+	    </li>
+			[(#ENV{charset}|=={utf-8}|non|et{#GET{erreurs}|non})
+			<li>
+				<p class="explication"><:texte_jeu_caractere_conversion{url=#URL_ECRIRE{convert_utf8}}:></p>
+			</li>
+			]
+	  </ul>
+	  [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+	  <!--extra-->
+	  <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
+	</div></form>
+	]
+</div>
\ No newline at end of file
diff --git a/prive/formulaires/configurer_transcodeur.php b/prive/formulaires/configurer_transcodeur.php
new file mode 100644
index 0000000000000000000000000000000000000000..fe091306eb51946f67d5875e61f5813d1b2e09f5
--- /dev/null
+++ b/prive/formulaires/configurer_transcodeur.php
@@ -0,0 +1,41 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2010                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function formulaires_configurer_transcodeur_charger_dist(){
+	$valeurs = array(
+		'charset' => $GLOBALS['meta']["charset"],
+	);
+
+	return $valeurs;
+}
+
+function formulaires_configurer_transcodeur_verifier_dist(){
+	include_spip('inc/charsets');
+	
+	$erreurs = array();
+	if (!$charset=_request('charset'))
+		$erreurs['charset'] = _T('info_obligatoire');
+	elseif ($charset!='utf-8' AND !load_charset($charset))
+		$erreurs['charset'] = _T('utf8_convert_erreur_orig',array('charset'=>$charset));
+
+	return $erreurs;
+}
+
+
+function formulaires_configurer_transcodeur_traiter_dist(){
+	$res = array('editable'=>true);
+	ecrire_meta('charset', _request('charset'));
+	$res['message_ok'] = _T('config_info_enregistree');
+	return $res;
+}
\ No newline at end of file
diff --git a/prive/squelettes/contenu/page-configurer_langue.html b/prive/squelettes/contenu/page-configurer_langue.html
new file mode 100644
index 0000000000000000000000000000000000000000..c2f9ff117a04620fa657e244617bb421776cb2d4
--- /dev/null
+++ b/prive/squelettes/contenu/page-configurer_langue.html
@@ -0,0 +1,6 @@
+<div class="ajax">
+	#FORMULAIRE_CONFIGURER_LANGUE
+</div>
+<div class="ajax">
+	#FORMULAIRE_CONFIGURER_TRANSCODEUR
+</div>
\ No newline at end of file