diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php index 91db0e023bd0470a2fe054242f2ca587e541c5c2..82f0b01742eab8c9922c75ef54405341531f6528 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; + } //