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