From 84bd6df78639e4ca59ec3e61d6bf12329cc7ce62 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Tue, 11 May 2004 22:10:25 +0000
Subject: [PATCH] =?UTF-8?q?des=20modifs=20assez=20cons=C3=A9quentes=20sur?=
 =?UTF-8?q?=20le=20multilang=20de=20l'espace=20public=20;=20-=20on=20revie?=
 =?UTF-8?q?nt=20aux=20bases=20de=20SPIP=20:=20un=20URL=20=3D=20un=20fichie?=
 =?UTF-8?q?r=20cache=20-=20notation=20plus=20simple=20#MENU=5FLANG=20et=20?=
 =?UTF-8?q?#MENU=5FLANG=5FECRIRE=20-=20une=20variable=20de=20personnalisat?=
 =?UTF-8?q?ion=20"$forcer=5Flang"=20pour=20un=20"saut=20automatique"=20=20?=
 =?UTF-8?q?=20vers=20l'URL=20&lang=3Dxxxx=20(cas=20typique=20:=20la=20page?=
 =?UTF-8?q?=20de=20login)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backend-dist.html       | 56 ++++++-----------------------------------
 ecrire/inc_lang.php3    | 36 +++++++++++++++++++++++---
 ecrire/inc_version.php3 |  2 +-
 inc-calcul-squel.php3   | 37 ++++++++++++++++-----------
 inc-calcul.php3         | 31 +++++++++++++----------
 inc-champ-squel.php3    |  2 +-
 inc-public-global.php3  | 56 +++++++++++------------------------------
 login-dist.html         |  2 +-
 spip_cookie.php3        |  3 +++
 spip_login.php3         |  2 +-
 spip_pass.php3          |  1 +
 11 files changed, 104 insertions(+), 124 deletions(-)

diff --git a/backend-dist.html b/backend-dist.html
index 31962eb156..569c71c23d 100644
--- a/backend-dist.html
+++ b/backend-dist.html
@@ -1,4 +1,3 @@
-<?php echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.'>'; ?>
 <rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
 
 <channel>
@@ -14,71 +13,32 @@
 		<description></description>
 	</image>
 
-<!-- d'abord les articles specifiques a une langue - syntaxe backend.php3?lang=xx -->
-
-	<BOUCLE_langue(ARTICLES){lang}{par date}{inverse}{0,10}>
-		<item>
-		<title>[(#TITRE|texte_backend)]</title>
-		<link>#URL_SITE_SPIP/#URL_ARTICLE</link>
-		<date>#DATE</date>
-			<description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend)]</description>
-			<author><BOUCLE_aut_lang(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut_lang></author>
-			<dc:date>[(#DATE|date_iso)]</dc:date>
-			<dc:format>text/html</dc:format>
-			<dc:language>#LANG</dc:language>
-			<dc:creator><BOUCLE_aut_langb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut_langb></dc:creator>
-		</item>
-	</BOUCLE_langue>
-
-<!-- sinon, les articles specifiques a une rubrique - syntaxe backend.php3?id_rubrique=123 -->
-
-<BOUCLE_rub(RUBRIQUES){id_rubrique}>
-	<BOUCLE1(ARTICLES){branche}{par date}{inverse}{0,10}>
-		<item>
-			<title>[(#TITRE|texte_backend)]</title>
-			<link>#URL_SITE_SPIP/#URL_ARTICLE</link>
-			<date>#DATE</date>
-			<description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend)]</description>
-			<author><BOUCLE_aut1(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut1></author>
-			<dc:date>[(#DATE|date_iso)]</dc:date>
-			<dc:format>text/html</dc:format>
-			<dc:language>#LANG</dc:language>
-			<dc:creator><BOUCLE_aut1b(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut1b></dc:creator>
-		</item>
-	</BOUCLE1>
-</BOUCLE_rub>
-
-<!-- en dernier recours, tous les articles du site - syntaxe backend.php3 -->
-
-	<BOUCLE2(ARTICLES){tout}{par date}{inverse}{0,10}{unique}>
+	<BOUCLE_10recents(ARTICLES){lang ?}{branche ?}{par date}{inverse}{0,10}{unique}>
 		<item>
 		<title>[(#TITRE|texte_backend)]</title>
 		<link>#URL_SITE_SPIP/#URL_ARTICLE</link>
 		<date>#DATE</date>
 		<description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend)]</description>
-		<author><BOUCLE_aut2(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut2></author>
+		<author><BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteurs></author>
 		<dc:date>[(#DATE|date_iso)]</dc:date>
 		<dc:format>text/html</dc:format>
 		<dc:language>#LANG</dc:language>
-		<dc:creator><BOUCLE_aut2b(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut2b></dc:creator>
+		<dc:creator><BOUCLE_auteursb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteursb></dc:creator>
 		</item>
-	</BOUCLE2>
-	<BOUCLE3(ARTICLES){tout}{par date}{inverse}{age<3}{unique}>
+	</BOUCLE_10recents>
+	<BOUCLE_tres_recents(ARTICLES){lang ?}{branche ?}{par date}{inverse}{age<3}{unique}>
 		<item>
 		<title>[(#TITRE|texte_backend)]</title>
 		<link>#URL_SITE_SPIP/#URL_ARTICLE</link>
 		<date>#DATE</date>
 		<description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend)]</description>
-		<author><BOUCLE_aut3(auteurs){id_article}{","}>[(#NOM|texte_backend)]</BOUCLE_aut3></author>
+		<author><BOUCLE_auteurs_t(AUTEURS){id_article}{","}>[(#NOM|texte_backend)]</BOUCLE_auteurs_t></author>
 		<dc:date>[(#DATE|date_iso)]</dc:date>
 		<dc:format>text/html</dc:format>
 		<dc:language>#LANG</dc:language>
-		<dc:creator><BOUCLE_aut3b(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_aut3b></dc:creator>
+		<dc:creator><BOUCLE_auteurs_tb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteurs_tb></dc:creator>
 		</item>
-	</BOUCLE3>
-
-<//B_rub>
-<//B_langue>
+	</BOUCLE_tres_recents>
 
 </channel>
 
diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index a7a21dbc70..7a6b8db4b7 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -398,9 +398,7 @@ function lang_dselect ($rien='') {
 // - 'changer_lang' = langue de l'article, espace prive
 // 
 function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '') {
-	global $couleur_foncee, $couleur_claire, $flag_ecrire, $connect_id_auteur, $multilang;
-
-	if (!$flag_ecrire AND !$multilang AND ($nom_select == 'var_lang' OR $nom_select == 'var_lang_ecrire')) return;
+	global $couleur_foncee, $couleur_claire, $flag_ecrire, $connect_id_auteur;
 
 	if ($default == '')
 		$default = $GLOBALS['spip_lang'];
@@ -471,6 +469,38 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her
 }
 
 
+
+//
+// Cette fonction est appelee depuis inc-public-global si on a installe
+// la variable de personnalisation $forcer_lang ; elle renvoie le brouteur
+// si necessaire vers l'URL xxxx?lang=ll
+//
+function verifier_lang_url() {
+	global $HTTP_GET_VARS, $HTTP_COOKIE_VARS, $spip_lang, $clean_link;
+
+	// quelle langue est demandee ?
+	$lang_demandee = lire_meta('langue_site');
+	if ($HTTP_COOKIE_VARS['spip_lang_ecrire']) $lang_demandee = $HTTP_COOKIE_VARS['spip_lang_ecrire'];
+	if ($HTTP_COOKIE_VARS['spip_lang']) $lang_demandee = $HTTP_COOKIE_VARS['spip_lang'];
+	if ($HTTP_GET_VARS['lang']) $lang_demandee = $HTTP_GET_VARS['lang'];
+
+	// Verifier que la langue demandee existe
+	include_ecrire('inc_lang.php3');
+	lang_select($lang_demandee);
+	$lang_demandee = $spip_lang;
+
+	// Renvoyer si besoin
+	if (!($HTTP_GET_VARS['lang']<>'' AND $lang_demandee == $HTTP_GET_VARS['lang'])
+	AND !($HTTP_GET_VARS['lang']=='' AND $lang_demandee == lire_meta('langue_site')))
+	{
+		$destination = $clean_link;
+		$destination->addvar('lang', $lang_demandee);
+		@header("Location: ".$destination->getUrl());
+		exit;
+	}
+}
+
+
 //
 // Selection de langue haut niveau
 //
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index c214c9935a..24adc6c3ce 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -176,7 +176,7 @@ if ($flag_ecrire) {
 $spip_version = 1.732;
 
 // version de spip
-$spip_version_affichee = "1.7.2 pr1";
+$spip_version_affichee = "1.7.2 pr3";
 
 // version de spip / tag cvs
 if (ereg('Name: v(.*) ','$Name$', $regs)) $spip_version_affichee = $regs[1];
diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3
index fbf20794a9..65a3b56408 100644
--- a/inc-calcul-squel.php3
+++ b/inc-calcul-squel.php3
@@ -339,19 +339,22 @@ function parser_boucle($texte, $id_parent) {
 					else if ($param == 'racine') {
 						$req_where[] = "$table.id_parent=0";
 					}
-					else if ($param == 'branche') {
-						$req_where[] = "$table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\")";
+					else if (ereg("^branche *(\??)", $param, $regs)) {
+						if (!$regs[1])
+							$req_where[] = "$table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\")";
+						else
+							$req_where[] = "('\$id_rubrique'='' OR $table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\"))";
  					}
 
 					// Restriction de valeurs (implicite ou explicite)
-					else if (ereg('^([a-zA-Z_]+) *((!?)(<=?|>=?|==?) *"?([^<>=!"]*))?"?$', $param, $match)) {
+					else if (ereg('^([a-zA-Z_]+) *(\??) *((!?)(<=?|>=?|==?|\?) *"?([^<>=!"?]*))?"?$', $param, $match)) {
 						// Variable comparee
 						$col = $match[1];
 						$col_table = $table;
 
 						// Valeur de comparaison
-						if ($match[2])
-							$val = $match[5];
+						if ($match[3])
+							$val = $match[6];
 						else {
 							$val = $match[1];
 							// Si id_parent, comparer l'id_parent avec l'id_objet de la boucle superieure
@@ -363,6 +366,9 @@ function parser_boucle($texte, $id_parent) {
 							$val = '$'.$val;
 						}
 
+						// operateur optionnel {lang?}
+						$ou_rien = ($match[2]) ? "'$val'='' OR " : '';
+
 						// Traitement general des relations externes
 						if ($s = $tables_relations[$type][$col]) {
 							$col_table = "rel_$type";
@@ -463,8 +469,8 @@ function parser_boucle($texte, $id_parent) {
 							$plat = true;
 
 						// Operateur de comparaison
-						if ($match[4]) {
-							$op = $match[4];
+						if ($match[5]) {
+							$op = $match[5];
 							if ($op == '==') $op = ' REGEXP ';
 						}
 						else {
@@ -472,8 +478,9 @@ function parser_boucle($texte, $id_parent) {
 						}
 
 						if ($col_table) $col_table .= '.';
-						$where = "$col_table$col$op'".addslashes($val)."'";
-						if ($match[3] == '!') $where = "NOT ($where)";
+						$where = "($ou_rien$col_table$col$op'".addslashes($val)."')";
+
+						if ($match[4] == '!') $where = "NOT ($where)";
 						$req_where[] = $where;
 					}
 
@@ -586,11 +593,11 @@ function parser_boucle($texte, $id_parent) {
 		if ($type == 'hierarchie')
 			$requete = $req_limit;
 		else if ($req_select) {
-			$requete = 'SELECT '.join(',', $req_select).' FROM '.join(',', $req_from);
-			if ($req_where) $requete .= ' WHERE '.join(' AND ', $req_where);
+			$requete = 'SELECT '.join(',', $req_select)." FROM ".join(',', $req_from);
+			if ($req_where) $requete .= " WHERE ".join(" AND ", $req_where);
 			$requete .= $req_group;
 			$requete .= $req_order;
-			if ($req_limit) $requete .= ' LIMIT '.$req_limit;
+			if ($req_limit) $requete .= " LIMIT ".$req_limit;
 		}
 		$result->type_requete = $type;
 		$result->requete = $requete;
@@ -1243,7 +1250,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 		}
 		$id_on_off = $GLOBALS['tables_doublons'][$boucles[$id_boucle]->type_requete];
 		if ($id_on_off) 
-			$code = "(\$GLOBALS['$id_on_off'] == \$contexte['$id_on_off']) ? '$on' : '$off'";
+			$code = "(\$GLOBALS[contexte_inclus]['$id_on_off'] == \$contexte['$id_on_off']) ? '$on' : '$off'";
 		else 
 			$code = "'$off'";
 		break;
@@ -1320,7 +1327,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 
 	//
 	// Formulaire de changement de langue
-	case 'FORMULAIRE_LANG':
+	case 'MENU_LANG':
 		$milieu = '
 		$'.$nom_var.' = "<"."?php
 			include_ecrire(\"inc_lang.php3\");
@@ -1333,7 +1340,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 
 	//
 	// Formulaire de changement de langue / page de login
-	case 'FORMULAIRE_LANG_ECRIRE':
+	case 'MENU_LANG_ECRIRE':
 		$milieu = '
 		$'.$nom_var.' = "<"."?php
 			include_ecrire(\"inc_lang.php3\");
diff --git a/inc-calcul.php3 b/inc-calcul.php3
index f0fdbe0dcd..d230a8da8f 100644
--- a/inc-calcul.php3
+++ b/inc-calcul.php3
@@ -439,7 +439,7 @@ function calculer_page($fond, $contexte) {
 
 
 function calculer_page_globale($fond) {
-	global $contexte;
+	global $contexte, $contexte_inclus;
 	global $fichier_requete;
 	global $id_rubrique_fond;
 
@@ -459,19 +459,24 @@ function calculer_page_globale($fond) {
 	else
 		$contexte['date'] = $contexte['date_redac'] = date("Y-m-d H:i:s");
 
-	if (eregi("[a-z_]+",$GLOBALS['lang'], $regs) AND (substr(",".$regs[0].",", "-,".lire_meta('langues_utilisees').","))) {
-		$contexte['lang'] = $regs[0];
-		lang_select($regs[0]);
-	}
+	if ($GLOBALS['lang'])
+		$contexte['lang'] = $GLOBALS['lang'];
+
+	$contexte_inclus = $contexte; // Par souci d'homogeneite (utile pour #EXPOSER)
 
 	// Analyser les URLs personnalisees (inc-urls-...)
 	recuperer_parametres_url($fond, $fichier_requete);
 	$lang = lire_meta('langue_site');
 
-	// Calcul de la rubrique associee a la requete
-	// (selection de squelette specifique)
-
-	if ($id_rubrique = $contexte['id_rubrique']) {
+	//
+	// Affiner le choix du squelette :
+	// calcul de la rubrique associee a la requete
+	// + selection de la langue
+	//
+	if ($contexte['lang']) {
+		$lang = $contexte['lang'];	// l'URL peut fixer lang=xx, mais inc-urls peut aussi agir sur $contexte[lang]
+	}
+	else if ($id_rubrique = $contexte['id_rubrique']) {
 		$id_rubrique_fond = $id_rubrique;
 		if ($row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique='$id_rubrique'")))
 			if ($row['lang']) $lang = $row['lang'];
@@ -499,14 +504,14 @@ function calculer_page_globale($fond) {
 	else {
 		$id_rubrique_fond = 0;
 	}
-	// selectionner la langue & affiner le squelette
-	if ($contexte['lang'])
-		$lang = $contexte['lang'];	// si inc-urls veut fixer la langue
 	lang_select($lang);
 
-	$fond = chercher_squelette($fond, $id_rubrique_fond, $lang);
+	$fond = chercher_squelette($fond, $id_rubrique_fond, $spip_lang);
+
 
+	//
 	// Special stats et boutons admin
+	//
 	reset($contexte_defaut);
 	while (list($key, $val) = each($contexte_defaut)) {
 		if ($contexte[$val]) {
diff --git a/inc-champ-squel.php3 b/inc-champ-squel.php3
index f9a7543133..bd67d9dea6 100755
--- a/inc-champ-squel.php3
+++ b/inc-champ-squel.php3
@@ -92,7 +92,7 @@ function init_champs_squel() {
 		'TAILLE', 'EXTENSION', 'DEBUT_SURLIGNE', 'FIN_SURLIGNE',
 		'TYPE_DOCUMENT', 'EXTENSION_DOCUMENT', 'FORMULAIRE_ADMIN',
 		'LOGIN_PRIVE', 'LOGIN_PUBLIC', 'URL_LOGOUT', 'PUCE', 'EXTRA',
-		'ON_OFF', 'EXPOSER', 'FORMULAIRE_LANG', 'FORMULAIRE_LANG_ECRIRE'
+		'ON_OFF', 'EXPOSER', 'MENU_LANG', 'MENU_LANG_ECRIRE'
 	);
 	reset($c);
 	while (list(, $val) = each($c)) {
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 96e6967ce4..8c8e3af2ac 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -17,35 +17,6 @@ if (!isset($delais))
 	$t0 = $t1;
 }*/
 
-//
-// Gestion de la langue du visiteur
-//
-function chercher_langue_squelette ($fichier_cache, $contexte='') {
-	global $lang, $multilang, $spip_lang;
-
-	// multilingue visiteur
-	if ($contexte['lang'])
-		$lang_squel = $contexte['lang'];
-	else if ($multilang) {
-		include_ecrire('inc_lang.php3');
-		utiliser_langue_visiteur();
-		$contexte['lang'] = $lang_squel = $spip_lang;
-	}
-	else if ($lang)
-		$contexte['lang'] = $lang_squel = $lang;
-
-	if ($lang_squel)
-		$fichier_cache .= "-$lang_squel";
-
-	return array($fichier_cache, $lang_squel, $contexte);
-}
-
-// securite
-if ($lang) {
-	if (!ereg("^[a-z_]+$", $lang)) unset($lang);
-	if (!ereg(",$lang,", ",".lire_meta('langues_utilisees').",")) unset($lang);
-}
-
 
 //
 // Inclusions de squelettes
@@ -60,9 +31,6 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") {
 			$fichier_requete .= '&'.$key.'='.$val;
 	}
 	$fichier_cache = generer_nom_fichier_cache($fichier_requete);
-
-	list($fichier_cache, $lang_squel, $contexte_inclus) = chercher_langue_squelette ($fichier_cache, $contexte_inclus);
-
 	$chemin_cache = "CACHE/$fichier_cache";
 	$use_cache = utiliser_cache($chemin_cache, $delais);
 
@@ -70,7 +38,7 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") {
 		include_local("inc-calcul.php3");
 		$timer_a = explode(" ", microtime());
 
-		$fond = chercher_squelette($fond, $contexte_inclus['id_rubrique'], $lang_squel);
+		$fond = chercher_squelette($fond, $contexte_inclus['id_rubrique'], $contexte_inclus['lang']);
 		$page = calculer_page($fond, $contexte_inclus);
 		$timer_b = explode(" ", microtime());
 		if ($page) {
@@ -94,23 +62,29 @@ if ($HTTP_COOKIE_VARS['spip_session'] OR ($PHP_AUTH_USER AND !$ignore_auth_http)
 }
 
 
+//
+// Gestion de la langue dans l'URL
+//
+if ($forcer_lang) {
+	include_ecrire('inc_lang.php3');
+	verifier_lang_url();
+}
+if ($lang = $HTTP_GET_VARS['lang']) {
+	include_ecrire('inc_lang.php3');
+	lang_select($lang);	
+}
+
+
 //
 // Gestion du cache et calcul de la page
 //
 
-// nom du fichier cache
+// Nom du fichier cache
 $fichier_requete = $REQUEST_URI;
 $fichier_requete = strtr($fichier_requete, '?', '&');
 $fichier_requete = eregi_replace('&(submit|valider|PHPSESSID|(var_[^=&]*)|recalcul)=[^&]*', '', $fichier_requete);
 
 $fichier_cache = generer_nom_fichier_cache($fichier_requete);
-
-list ($fichier_cache, $lang_squel) = chercher_langue_squelette($fichier_cache, $contexte);
-
-if ($multilang AND !$lang) $lang = $lang_squel;
-if ($multilang) $spip_lang = $lang;
-$menu_lang = $spip_lang;
-
 $chemin_cache = "CACHE/$fichier_cache";
 
 $use_cache = utiliser_cache($chemin_cache, $delais);
diff --git a/login-dist.html b/login-dist.html
index 30e7e7a10b..3f19a8ae2c 100644
--- a/login-dist.html
+++ b/login-dist.html
@@ -11,7 +11,7 @@
 <div align="center">
 <h3 class="spip">#NOM_SITE_SPIP<br>
 <small><:login_acces_prive:></small></h3>
-<div align="#LANG_RIGHT">#FORMULAIRE_LANG_ECRIRE</div>
+<div align="#LANG_RIGHT">#MENU_LANG_ECRIRE</div>
 </div>
 #LOGIN_PRIVE
 </td></tr></table></center>
diff --git a/spip_cookie.php3 b/spip_cookie.php3
index 2abfc0e7d6..78f9fa5af1 100644
--- a/spip_cookie.php3
+++ b/spip_cookie.php3
@@ -204,6 +204,9 @@ if ($var_lang_ecrire) {
 				ajouter_session($auteur_session, $spip_session);	// enregistrer dans le fichier de session
 			}
 		}
+
+		$cible->delvar('lang');
+		$cible->addvar('lang', $var_lang_ecrire);
 	}
 }
 
diff --git a/spip_login.php3 b/spip_login.php3
index 2ee02503e4..ac053a10d9 100644
--- a/spip_login.php3
+++ b/spip_login.php3
@@ -3,7 +3,7 @@ $fond = "login";
 $delais = 3600;
 $flag_dynamique = true;
 $flag_preserver = true;
-$multilang=true;
+$forcer_lang = true;
 
 include ("inc-public.php3");
 
diff --git a/spip_pass.php3 b/spip_pass.php3
index 8a77801ff4..7f17fc6fb3 100644
--- a/spip_pass.php3
+++ b/spip_pass.php3
@@ -14,6 +14,7 @@ include_ecrire ("inc_acces.php3");
 include_local("inc-formulaires.php3");
 
 utiliser_langue_site();
+utiliser_langue_visiteur();
 
 $inscriptions_ecrire = (lire_meta("accepter_inscriptions") == "oui") ;
 unset($erreur);
-- 
GitLab