From 95236800025ceb7ce69159b4691059d350b48941 Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <pitrou@free.fr>
Date: Sun, 7 Sep 2003 16:47:12 +0000
Subject: [PATCH] bugs langues

---
 ecrire/articles.php3      |  9 ++++-----
 ecrire/inc_lang.php3      | 33 ++++++++++-----------------------
 ecrire/inc_rubriques.php3 | 23 +++++------------------
 ecrire/lang/spip_fr.php3  |  4 ++--
 ecrire/naviguer.php3      | 18 +++++++++++-------
 inc-calcul.php3           |  2 +-
 6 files changed, 33 insertions(+), 56 deletions(-)

diff --git a/ecrire/articles.php3 b/ecrire/articles.php3
index 5e3edf2caf..a569255fef 100644
--- a/ecrire/articles.php3
+++ b/ecrire/articles.php3
@@ -219,8 +219,6 @@ if ($titre && !$ajout_forum && $flag_editable) {
 		}
 	}
 
-
-
 	// afficher le nouveau titre dans la barre de fenetre
 	$titre_article = stripslashes($titre);
 
@@ -1165,12 +1163,13 @@ if ((lire_meta('multi_articles') == 'oui')
 
 	// Choix langue article
 	if (lire_meta('multi_articles') == 'oui' AND $flag_editable) {
+		$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
+		$langue_parent = $row['lang'];
+
 		if ($changer_lang) {
 			if ($changer_lang != "herit")
 				spip_query("UPDATE spip_articles SET lang='".addslashes($changer_lang)."', langue_choisie='oui' WHERE id_article=$id_article");
 			else {
-				$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
-				$langue_parent = $row['lang'];
 				spip_query("UPDATE spip_articles SET lang='".addslashes($langue_parent)."', langue_choisie='non' WHERE id_article=$id_article");
 			}
 		}
@@ -1184,7 +1183,7 @@ if ((lire_meta('multi_articles') == 'oui')
 
 		debut_cadre_enfonce();
 		echo "<center><font face='Verdana,Arial,Helvetica,sans-serif' size='2'>";
-		echo menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $herit);
+		echo menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent);
 		echo "</font></center>\n";
 		fin_cadre_enfonce();
 	}
diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3
index efa943c4a7..32af9e5b54 100644
--- a/ecrire/inc_lang.php3
+++ b/ecrire/inc_lang.php3
@@ -333,18 +333,10 @@ function lang_dselect ($rien='') {
 }
 
 
-// traduire un machin : [(#LANG|traduire{"module:code"}|sinon{"texte non traduit"})]
-/*function traduire($lang, $code) {
-	lang_select($lang);
-	$texte = _T($code);
-	lang_dselect();
-	return $texte;
-}*/
-
 //
 // Afficher un menu de selection de langue
 //
-function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit=false) {
+function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '') {
 	global $couleur_foncee;
 
 	if ($default == '')
@@ -369,21 +361,16 @@ function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $her
 	$ret .= $texte;
 	if ($nom_select == 'var_lang') $ret .= "\n<select name='$nom_select' class='verdana1' style='background-color: $couleur_foncee; color: white;' onChange=\"document.location.href='". $lien . $amp."$nom_select='+this.options[this.selectedIndex].value\">\n";
 	else $ret .= "\n<select name='$nom_select' class='fondl'>\n";
-	$ret .= $premier_option;
-
-	if ((lire_meta('multi_rubriques') == 'oui') AND ($nom_select == 'changer_lang')) {
-		if ($herit)
-			$ret .= "<option value='herit' selected>"._T('info_multi_herit')." ($default)</option>\n";
-		else
-			$ret .= "<option value='herit'>"._T('info_multi_herit')." ($default)</option>\n";
-		$default = '';
-	}
 
-	while (list(,$l) = each ($langues)) {
-		if ($l == $default)
-			$ret .= "<option value='$l' selected>$parenthese_o".traduire_nom_langue($l)."$parenthese_f</option>\n";
-		else
-			$ret .= "<option value='$l'>".traduire_nom_langue($l)."</option>\n";
+	while (list(, $l) = each ($langues)) {
+		$selected = ($l == $default) ? ' selected' : '';
+		if ($l == $herit) {
+			$selected = ($herit == $default) ? ' selected' : '';
+			$ret .= "<option style='font-style:italic' value='herit'$selected>"
+				.traduire_nom_langue($herit)." ("._T('info_multi_herit').")</option>\n";
+			if ($selected) $default = '';
+		}
+		else $ret .= "<option value='$l'$selected>".traduire_nom_langue($l)."</option>\n";
 	}
 	$ret .= "</select>\n";
 	if ($nom_select == 'var_lang') $ret .= "<noscript><INPUT TYPE='submit' NAME='Valider' VALUE='>>' class='verdana1' style='background-color: $couleur_foncee; color: white; height: 19px;'></noscript>";
diff --git a/ecrire/inc_rubriques.php3 b/ecrire/inc_rubriques.php3
index ca19d95f64..a10b6fd6af 100644
--- a/ecrire/inc_rubriques.php3
+++ b/ecrire/inc_rubriques.php3
@@ -60,18 +60,6 @@ function calculer_dates_rubriques($id_rubrique = 0, $date_parent = "0000-00-00")
 			if ($date_sites > $date_rubrique) $date_rubrique = $date_sites;
 		}
 
-/*		// recuperer l'article le plus recent syndique dans un site reference dans cette rubrique (ouf)
-		$result = spip_query("SELECT id_syndic FROM spip_syndic WHERE id_rubrique=$id_rubrique AND statut='publie'");
-		$syndic = '';
-		while ($row = spip_fetch_array($result))
-			$syndic[] = $row['id_syndic'];
-		if ($syndic) {
-			$row = spip_fetch_array (spip_query ("SELECT MAX(date) AS date_h FROM spip_syndic_articles WHERE id_syndic IN(".join(',',$syndic).") AND statut='publie'"));
-			$date_syndic_article = $row['date_h'];
-			if ($date_syndic_article > $date_rubrique) $date_rubrique = $date_syndic_article;
-		}
-*/
-
 		// articles post-dates
 		$post_dates = lire_meta("post_dates");
 		if ($post_dates != "non") {
@@ -178,11 +166,10 @@ function calculer_langues_rubriques_etape() {
 
 function calculer_langues_rubriques() {
 	// rubriques (recursivite)
-	
+
 	$langue_site = addslashes(lire_meta('langue_site'));
 	spip_query ("UPDATE spip_rubriques SET lang='$langue_site', langue_choisie='non' WHERE id_parent='0' AND langue_choisie != 'oui'");
-	
-	
+
 	while (calculer_langues_rubriques_etape());
 
 	// articles
@@ -197,7 +184,7 @@ function calculer_langues_rubriques() {
 		spip_debug ("article $id_article = .$lang");
 		spip_query ("UPDATE spip_articles SET lang='$lang', langue_choisie='non' WHERE id_article=$id_article");
 	}
-	
+
 	// breves
 	$s = spip_query ("SELECT fils.id_breve AS id_breve, mere.lang AS lang
 		FROM spip_breves AS fils, spip_rubriques AS mere
@@ -210,7 +197,7 @@ function calculer_langues_rubriques() {
 		spip_debug ("breve $id_breve = .$lang");
 		spip_query ("UPDATE spip_breves SET lang='$lang', langue_choisie='non' WHERE id_breve=$id_breve");
 	}
-	
+
 	if (lire_meta('multi_rubriques') == 'oui') {
 		// Ecrire meta liste langues utilisees dans rubriques
 		$s = spip_query ("SELECT lang FROM spip_rubriques WHERE lang != '' GROUP BY lang");
@@ -238,4 +225,4 @@ function calculer_rubriques() {
 	calculer_dates_rubriques();
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/lang/spip_fr.php3 b/ecrire/lang/spip_fr.php3
index ceca86f673..af17009bf8 100644
--- a/ecrire/lang/spip_fr.php3
+++ b/ecrire/lang/spip_fr.php3
@@ -705,9 +705,9 @@ exige d\'avoir un acc&egrave;s FTP au site Web.',
 'info_moyenne' => 'moyenne&nbsp;:',
 'info_multilinguisme' => 'Multilinguisme',
 'info_multi_articles' => 'Activer le menu de langue sur les articles&nbsp;?',
-'info_multi_cet_article' => 'Langue utilis&eacute;e dans cet article&nbsp;:',
+'info_multi_cet_article' => 'Langue de cet article&nbsp;:',
 'info_multi_cette_rubrique' => 'Langue utilis&eacute;e dans cette rubrique&nbsp;:',
-'info_multi_herit' => 'langue de la rubrique sup&eacute;rieure',
+'info_multi_herit' => 'Langue par d&eacute;faut',
 'info_multi_langues_choisies' => 'Veuillez s&eacute;lectionner ci-apr&egrave;s les langues &agrave; disposition des r&eacute;dacteurs de votre site.
 		Les langues d&eacute;j&agrave; utilis&eacute;es dans votre site (affich&eacute;es en premier) ne peuvent pas &ecirc;tre d&eacute;sactiv&eacute;es.',
 'info_multi_rubriques' => 'Activer le menu de langue sur les rubriques&nbsp;?',
diff --git a/ecrire/naviguer.php3 b/ecrire/naviguer.php3
index f3663b40b5..b4f4058694 100644
--- a/ecrire/naviguer.php3
+++ b/ecrire/naviguer.php3
@@ -376,7 +376,7 @@ if (strlen($texte) > 1) {
 //
 // Langue de la rubrique
 //
-if ($coll>0 AND (lire_meta('multi_rubriques') == 'oui') AND (lire_meta('multi_secteurs' == 'non') OR ($id_parent == 0)) AND $flag_editable) {
+if ($coll>0 AND lire_meta('multi_rubriques') == 'oui' AND (lire_meta('multi_secteurs') == 'non' OR $id_parent == 0) AND $flag_editable) {
 	if ($changer_lang) {
 		if ($changer_lang != "herit") {
 			spip_query("UPDATE spip_rubriques SET lang='".addslashes($changer_lang)."', langue_choisie='oui' WHERE id_rubrique=$coll");
@@ -395,14 +395,18 @@ if ($coll>0 AND (lire_meta('multi_rubriques') == 'oui') AND (lire_meta('multi_se
 	$row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_rubriques WHERE id_rubrique=$coll"));
 	$langue_rubrique = $row['lang'];
 	$langue_choisie_rubrique = $row['langue_choisie'];
-
-	$herit = ($langue_choisie_rubrique != 'oui');
+	if ($id_parent) {
+		$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_parent"));
+		$langue_parent = $row[0];
+	}
+	else $langue_parent = lire_meta('langue_site');
 
 	debut_cadre_enfonce("langues-24.gif");
-		echo "<center><font face='Verdana,Arial,Helvetica,sans-serif' size='2'>";
-		echo menu_langues('changer_lang', $langue_rubrique, _T('info_multi_cette_rubrique').' ', $herit);
-		echo "</font></center>\n";
-	fin_cadre_enfonce();}
+	echo "<center><font face='Verdana,Arial,Helvetica,sans-serif' size='2'>";
+	echo menu_langues('changer_lang', $langue_rubrique, _T('info_multi_cette_rubrique').' ', $langue_parent);
+	echo "</font></center>\n";
+	fin_cadre_enfonce();
+}
 
 
 fin_cadre_relief();
diff --git a/inc-calcul.php3 b/inc-calcul.php3
index 23f7bd06e0..9b89e2fbb1 100644
--- a/inc-calcul.php3
+++ b/inc-calcul.php3
@@ -519,7 +519,7 @@ function calculer_page_globale($fond) {
 	$fond = chercher_squelette($fond, $id_rubrique_fond);
 
 	// selectionner la langue & affiner le squelette
-	lang_select($lang);
+	$GLOBALS['spip_lang'] = $lang;
 	$lang = ereg_replace('^\.', '', $lang);
 	if (@file_exists("$fond.$lang.html"))
 		$fond = "$fond.$lang";
-- 
GitLab