diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3 index 3e45715c1dbc37afd3f97e4ed919738f9e2c11d4..e234edc48316ebbcc895aea0892d2f9636bccc92 100644 --- a/inc-calcul-squel.php3 +++ b/inc-calcul-squel.php3 @@ -1090,7 +1090,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var) break; case 'LANG': - $code = "lire_meta('langue_site')"; + $code = "\$GLOBALS['spip_lang']"; break; case 'LANG_LEFT': @@ -1788,7 +1788,6 @@ function calculer_texte($texte) $fichier = $match[2]; ereg('^\\{(.*)\\}$', trim($match[3]), $params); $code .= " \$retour .= '<"."?php ';\n"; - $code .= " \$retour .= 'include_ecrire(\'inc_lang.php3\'); lang_select(lire_meta(\'langue_site\'));';\n"; $code .= " \$retour .= '\$contexte_inclus = \'\'; ';\n"; if ($params) { @@ -1799,7 +1798,15 @@ function calculer_texte($texte) if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) { $var = $args[1]; $val = $args[3]; - if ($val) + + // cas de la langue + if ($var == 'lang') { + $lang_inclus = "\\'".addslashes($val)."\\'"; + if (! $val) + $val = $lang_inclus = '$GLOBALS[spip_lang]'; + $code .= " \$retour .= '\$contexte_inclus[$var] = $val; ';\n"; + } + else if ($val) $code .= " \$retour .= '\$contexte_inclus[$var] = \'".addslashes($val)."\'; ';\n"; else $code .= " \$retour .= '\$contexte_inclus[$var] = \''.addslashes(\$contexte[$var]).'\'; ';\n"; @@ -1807,6 +1814,9 @@ function calculer_texte($texte) } } + if (!$lang_inclus) $lang_inclus = 'lire_meta(\\\'langue_site\\\')'; + $code .= " \$retour .= 'include_ecrire(\'inc_lang.php3\'); lang_select($lang_inclus);';\n"; + // inclure en priorite dans le dossier_squelettes if ($dossier_squelettes) { $code .= " \$retour .= ' diff --git a/inc-calcul.php3 b/inc-calcul.php3 index 2f87c7c8e7993c5bf4e041e8f90171b3672e605b..8952eee589046f47816cc6972c4c6f43e585fae1 100644 --- a/inc-calcul.php3 +++ b/inc-calcul.php3 @@ -419,7 +419,7 @@ function chercher_squelette_hierarchie($fond, $id_rubrique, $dossier='') { } } -function chercher_squelette($fond, $id_rubrique) { +function chercher_squelette($fond, $id_rubrique, $lang='') { global $dossier_squelettes; // prendre en compte le bon repertoire (pas grave si on a deux / dans l'arborescence) @@ -428,11 +428,22 @@ function chercher_squelette($fond, $id_rubrique) { // On selectionne, dans l'ordre : // fond=10.html, fond-10.html, fond-<rubriques parentes>.html, fond.html puis fond-dist.html if (($id_rubrique > 0) AND (@file_exists("$dossier$fond=$id_rubrique.html"))) { - return "$dossier$fond=$id_rubrique"; + $squel = "$dossier$fond=$id_rubrique"; } else { - return chercher_squelette_hierarchie($fond, $id_rubrique, $dossier); // recursif le long de la hierarchie + // recursif le long de la hierarchie + $squel = chercher_squelette_hierarchie($fond, $id_rubrique, $dossier); } + + + // affiner par langue + if ($lang == '') + $lang = lire_meta('langue_site'); + + if (@file_exists("$squel.$lang.html")) + $squel = "$squel.$lang"; + + return $squel; } @@ -476,7 +487,7 @@ function calculer_page_globale($fond) { $contexte = ''; $contexte_defaut = array('id_parent', 'id_rubrique', 'id_article', 'id_auteur', 'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article', - 'id_mot', 'id_groupe', 'id_document', 'lang'); + 'id_mot', 'id_groupe', 'id_document'); reset($contexte_defaut); while (list(, $val) = each($contexte_defaut)) { if ($GLOBALS[$val]) { @@ -488,6 +499,10 @@ function calculer_page_globale($fond) { else $contexte['date'] = $contexte['date_redac'] = date("Y-m-d H:i:s"); + if (eregi("[a-z_]+",$GLOBALS['lang'], $regs) AND (substr(",".$regs[0].",", "-,".lire_meta('langues_utilisees').","))) { + $contexte['lang'] = $regs[0]; + lang_select($regs[0]); + } // Analyser les URLs personnalisees (inc-urls-...) recuperer_parametres_url($fond, $fichier_requete); @@ -524,15 +539,12 @@ function calculer_page_globale($fond) { else { $id_rubrique_fond = 0; } + // selectionner la langue & affiner le squelette if ($contexte['lang']) $lang = $contexte['lang']; // si inc-urls veut fixer la langue - - $fond = chercher_squelette($fond, $id_rubrique_fond); - - // selectionner la langue & affiner le squelette lang_select($lang); - if (@file_exists("$fond.$lang.html")) - $fond = "$fond.$lang"; + + $fond = chercher_squelette($fond, $id_rubrique_fond, $lang); // Special stats et boutons admin reset($contexte_defaut); diff --git a/inc-public-global.php3 b/inc-public-global.php3 index 755246ccbe73ae32b42d967e6a4db1b3c3f2c049..ba5a624e2e10b8681bed27ec26d409a3ca619330 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -25,7 +25,8 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") { $fichier_requete = $fond; if (is_array($contexte_inclus)) { reset($contexte_inclus); - while(list($key, $val) = each($contexte_inclus)) $fichier_requete .= '&'.$key.'='.$val; + while(list($key, $val) = each($contexte_inclus)) + $fichier_requete .= '&'.$key.'='.$val; } $fichier_cache = generer_nom_fichier_cache($fichier_requete); $chemin_cache = "CACHE/$fichier_cache"; @@ -35,7 +36,8 @@ function inclure_fichier($fond, $delais, $contexte_inclus = "") { if (!$use_cache) { include_local("inc-calcul.php3"); $timer_a = explode(" ", microtime()); - $fond = chercher_squelette($fond, $contexte_inclus['id_rubrique']); + + $fond = chercher_squelette($fond, $contexte_inclus['id_rubrique'], $contexte_inclus['lang']); $page = calculer_page($fond, $contexte_inclus); $timer_b = explode(" ", microtime()); if ($page) {