From 4625e9178757a057976bc686f9a7e54fe1f0866d Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 6 May 2006 11:34:35 +0000
Subject: [PATCH] changer la langue vers la plus approchante (quand un article
 vient par syndiocation avec un code 'es_mx', choisir 'es' si on n'a pas le
 mexicain)

---
 ecrire/inc/lang.php | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index 91db0e023b..82f0b01742 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -79,9 +79,17 @@ function changer_langue($lang) {
 
 	$liste_langues = $all_langs.','.$GLOBALS['meta']['langues_multilingue'];
 
-	if ($lang && ereg(",$lang,", ",$liste_langues,")) {
-		$GLOBALS['spip_lang'] = $lang;
+	// Si la langue demandee n'existe pas, on essaie d'autres variantes
+	// Exemple : 'pt-br' => 'pt_br' => 'pt'
+	$lang = str_replace('-', '_', trim($lang));
+	if (!$lang)
+		return false;
+
+	if (ereg(",$lang,", ",$liste_langues,")
+	OR ($lang = preg_replace(',_.*,', '', $lang)
+	AND ereg(",$lang,", ",$liste_langues,")) {
 
+		$GLOBALS['spip_lang'] = $lang;
 		$spip_lang_rtl =   lang_dir($lang, '', '_rtl');
 		$spip_lang_left =  lang_dir($lang, 'left', 'right');
 		$spip_lang_right = lang_dir($lang, 'right', 'left');
@@ -89,9 +97,9 @@ function changer_langue($lang) {
 		$spip_dir_lang = " dir='$spip_lang_dir'";
 
 		return true;
-	}
-	else
+	} else
 		return false;
+
 }
 
 //
-- 
GitLab