diff --git a/ecrire/inc_lang.php3 b/ecrire/inc_lang.php3 index c751a7d0f91096b7aef75eb69193ce90e2b6e55f..5ae9a8e0d4d6a82c6371872c097d7c1c37393a09 100644 --- a/ecrire/inc_lang.php3 +++ b/ecrire/inc_lang.php3 @@ -9,8 +9,24 @@ define("_ECRIRE_INC_LANG", "1"); // // Charger un fichier langue // -function charger_langue($lang) { - include_ecrire ("lang/spip_$lang.php3"); +function charger_langue($lang, $module='spip') { + global $dir_ecrire; + + $fichier_lang = "lang/".$module."_".$lang.".php3"; + if (file_exists($dir_ecrire.$fichier_lang)) { + include_ecrire ($fichier_lang); + } else { + // si le fichier de langue du module n'existe pas, on se rabat sur + // le francais, qui *par definition* doit exister, et on copie le + // tableau 'fr' dans la var liee a la langue + include_ecrire ("lang/${module}_fr.php3"); + $GLOBALS["i18n__".$module.'_'.$lang] = $GLOBALS["i18n__".$module.'_'.'fr']; + } + + // surcharge perso + if (file_exists($dir_ecrire.'lang/perso.php3')) { + include_ecrire('lang/perso.php3'); + } } // @@ -65,8 +81,16 @@ function regler_langue_navigateur() { // function traduire_chaine($code, $args) { global $spip_lang; - $var = "i18n_$spip_lang"; - if (!$GLOBALS[$var]) charger_langue($spip_lang); + + if (ereg("^([a-z]+):(.*)$", $code, $regs)) { + $module = $regs[1]; + $code = $regs[2]; + $var = "i18n__".$module."_".$spip_lang; + } else { + $module = 'spip'; + $var = "i18n_".$spip_lang; + } + if (!$GLOBALS[$var]) charger_langue($spip_lang, $module); $text = $GLOBALS[$var][$code]; if (!is_array($args)) return $text;