From 4190d45633774dd78a4814e96fc78bcb2d21235d Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 3 May 2007 21:21:56 +0000 Subject: [PATCH] =?UTF-8?q?M=C3=A9nage=20dans=20les=20langues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bug qui faisait qu'à l'install la langue du visiteur n'était pas prise en compte; * bug sur le changement de langue dans l'espace privé qui n'était pas mémorisé dans le fichier de session; * migration dans vielles_def des globales all_langs et langue_site, qui doublonnait avec des metas. --- ecrire/action/configurer.php | 1 - ecrire/action/test_dirs.php | 5 ++-- ecrire/balise/menu_lang_ecrire.php | 3 +- ecrire/configuration/langue.php | 3 +- ecrire/configuration/locuteur.php | 2 +- ecrire/configuration/transcodeur.php | 1 - ecrire/exec/install.php | 8 ++--- ecrire/inc/commencer_page.php | 2 +- ecrire/inc/config.php | 8 ++--- ecrire/inc/lang.php | 45 +++++++++++++++------------- ecrire/inc/utils.php | 16 ++-------- ecrire/inc/vieilles_defs.php | 5 +++- ecrire/index.php | 2 +- ecrire/install/etape_.php | 1 + 14 files changed, 46 insertions(+), 56 deletions(-) diff --git a/ecrire/action/configurer.php b/ecrire/action/configurer.php index fb9d7d4900..e54fdcd30d 100644 --- a/ecrire/action/configurer.php +++ b/ecrire/action/configurer.php @@ -17,7 +17,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // on traite a part seulement le cas du proxy car c'est indispensable // (message d'erreur eventuel a afficher) -include_spip('inc/lang'); include_spip('inc/config'); // http://doc.spip.org/@action_configurer_dist diff --git a/ecrire/action/test_dirs.php b/ecrire/action/test_dirs.php index 0d2cf47df4..99fa338dd4 100644 --- a/ecrire/action/test_dirs.php +++ b/ecrire/action/test_dirs.php @@ -16,6 +16,7 @@ if (defined("_TEST_DIRS")) return; define("_TEST_DIRS", "1"); include_spip('inc/minipres'); +#include_spip('inc/headers'); // fait dans inc/public utiliser_langue_visiteur(); // @@ -133,9 +134,9 @@ function action_test_dirs_dist() } else { if (!_FILE_CONNECT) - header("Location: " . generer_url_ecrire("install", "etape=1&chmod=".$chmod, true)); + redirige_par_entete(generer_url_ecrire("install", "etape=1&chmod=".$chmod, true)); else - header("Location: " . _DIR_RESTREINT_ABS); + redirige_par_entete(_DIR_RESTREINT_ABS); } } ?> diff --git a/ecrire/balise/menu_lang_ecrire.php b/ecrire/balise/menu_lang_ecrire.php index 6cdb74f047..5f630de55c 100644 --- a/ecrire/balise/menu_lang_ecrire.php +++ b/ecrire/balise/menu_lang_ecrire.php @@ -25,9 +25,8 @@ function balise_MENU_LANG_ECRIRE ($p) { // s'il n'y a qu'une langue proposee eviter definitivement la balise ?php // http://doc.spip.org/@balise_MENU_LANG_ECRIRE_stat function balise_MENU_LANG_ECRIRE_stat ($args, $filtres) { - global $all_langs; include_spip('inc/lang'); - if (strpos($all_langs,',') === false) return ''; + if (strpos($GLOBALS['meta']['langues_proposees'],',') === false) return ''; return $filtres ? $filtres : $args; } diff --git a/ecrire/configuration/langue.php b/ecrire/configuration/langue.php index 0d17206752..1bfdfd28e4 100644 --- a/ecrire/configuration/langue.php +++ b/ecrire/configuration/langue.php @@ -16,7 +16,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // Configuration i18n // -include_spip('inc/lang'); include_spip('inc/presentation'); function configuration_langue_dist() @@ -26,7 +25,7 @@ function configuration_langue_dist() $res = "<option value='$l_site' selected='selected'>$langue_site</option>\n"; - foreach (split(",",$GLOBALS['all_langs']) as $l) { + foreach (split(",",$GLOBALS['meta']['langues_proposees']) as $l) { if ($l <> $l_site) $res .= "<option value='$l'>".traduire_nom_langue($l)."</option>\n"; } diff --git a/ecrire/configuration/locuteur.php b/ecrire/configuration/locuteur.php index 9f4d2c7307..515a83220e 100644 --- a/ecrire/configuration/locuteur.php +++ b/ecrire/configuration/locuteur.php @@ -23,7 +23,7 @@ function configuration_locuteur_dist() $langues = $GLOBALS['codes_langues']; $cesure = floor((count($langues) + 1) / 2); - $langues_installees = explode(',', $GLOBALS['all_langs']); + $langues_installees = explode(',', $GLOBALS['meta']['langues_proposees']); $langues_autorisees = explode(',', $GLOBALS['meta']['langues_multilingue']); while (list(,$l) = each ($langues_installees)) { diff --git a/ecrire/configuration/transcodeur.php b/ecrire/configuration/transcodeur.php index c7234de494..f9efc3b69f 100644 --- a/ecrire/configuration/transcodeur.php +++ b/ecrire/configuration/transcodeur.php @@ -12,7 +12,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/lang'); include_spip('inc/presentation'); function configuration_transcodeur_dist() diff --git a/ecrire/exec/install.php b/ecrire/exec/install.php index 7884a55476..f1e497f260 100644 --- a/ecrire/exec/install.php +++ b/ecrire/exec/install.php @@ -26,13 +26,11 @@ function exec_install_dist() } else { // On va supprimer les eventuelles vieilles valeurs de meta, - // mais il faut relancer init_langues pour savoir quelles - // sont les langues disponibles pour l'installation + // mais du coup on perd le boulout qui vient d'etre fait par init_langues + // qu'il faut donc relancer (pour langue_site et langues_proposees) @unlink(_FILE_META); - unset($GLOBALS['meta']); - include_spip('inc/lang'); // contient du code en ligne + $GLOBALS['meta'] = array(); init_langues(); - include_spip('base/create'); include_spip('base/db_mysql'); diff --git a/ecrire/inc/commencer_page.php b/ecrire/inc/commencer_page.php index 3d5a0a01b4..3a1cecdc8a 100644 --- a/ecrire/inc/commencer_page.php +++ b/ecrire/inc/commencer_page.php @@ -157,7 +157,7 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique=' . "</div></li>"; // choix de la langue - if ($GLOBALS['all_langs']) { + if ($GLOBALS['meta']['langues_proposees']) { $res .= "<li id='bandeau_couleur5' class='bandeau_couleur'><div class='menu-item'>" . menu_langues('var_lang_ecrire') . "</div></li>"; diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php index 12eef713b0..3fbb483e5b 100644 --- a/ecrire/inc/config.php +++ b/ecrire/inc/config.php @@ -16,12 +16,10 @@ include_spip('inc/meta'); // // Appliquer les valeurs par defaut pour les options non initialisees +// (pour les langues c'est fait) // // http://doc.spip.org/@init_config function init_config() { - // langue par defaut du site = langue d'installation (cookie spip_lang) sinon francais - if (!$lang = $GLOBALS['spip_lang']) - $lang = 'fr'; $liste_meta = array( 'nom_site' => _T('info_mon_site_spip'), @@ -70,13 +68,10 @@ function init_config() { 'creer_htpasswd' => 'non', 'creer_htaccess' => 'non', - 'langue_site' => $lang, - 'multi_articles' => 'non', 'multi_rubriques' => 'non', 'multi_secteurs' => 'non', 'gerer_trad' => 'non', - 'langues_multilingue' => $GLOBALS['all_langs'] ); while (list($nom, $valeur) = each($liste_meta)) { if (!$GLOBALS['meta'][$nom]) { @@ -293,6 +288,7 @@ function appliquer_modifs_config() { // langue_site : la globale est mangee par inc_version if ($lang = $GLOBALS['changer_langue_site']) { $lang2 = $GLOBALS['spip_lang']; + include_spip('inc/lang'); if (changer_langue($lang)) { ecrire_meta('langue_site', $lang); changer_langue($lang2); diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php index e222fdd2e9..52f5cda353 100644 --- a/ecrire/inc/lang.php +++ b/ecrire/inc/lang.php @@ -19,9 +19,10 @@ include_spip('inc/actions'); // // http://doc.spip.org/@changer_langue function changer_langue($lang) { - global $all_langs, $spip_lang_rtl, $spip_lang_right, $spip_lang_left; + global $spip_lang_rtl, $spip_lang_right, $spip_lang_left; - $liste_langues = ',' . $all_langs.','.@$GLOBALS['meta']['langues_multilingue'] . ','; + $liste_langues = ',' . @$GLOBALS['meta']['langues_proposees'] + . ',' . @$GLOBALS['meta']['langues_multilingue'] . ','; // Si la langue demandee n'existe pas, on essaie d'autres variantes // Exemple : 'pt-br' => 'pt_br' => 'pt' @@ -289,38 +290,42 @@ function repertoire_lang($module='spip', $lang='fr') { } // -// Initialisation +// Initialisation de +// - la meta langues proposees (qui ne change pas) +// - la globale spip_lang: langue courante (qui peut changer) // // http://doc.spip.org/@init_langues function init_langues() { - global $all_langs, $langue_site, $lang_dir; + global $spip_lang; + + // liste des langues dans les meta, sauf a l'install $all_langs = @$GLOBALS['meta']['langues_proposees']; - $lang_dir = ''; - $toutes_langs = Array(); - if (!$all_langs || !$langue_site || !_DIR_RESTREINT) { + $tout = array(); + if (!$all_langs || !isset($GLOBALS['meta']['langue_site']) || !_DIR_RESTREINT) { if (!$d = @opendir(repertoire_lang())) return; while (($f = readdir($d)) !== false) { if (preg_match(',^spip_([a-z_]+)\.php[3]?$,', $f, $regs)) - $toutes_langs[] = $regs[1]; + $tout[] = $regs[1]; } closedir($d); - sort($toutes_langs); - $all_langs2 = join(',', $toutes_langs); + sort($tout); + if (!isset($GLOBALS['meta']['langue_site'])) { +// Initialisation : le francais si dispo, sinon la premiere langue trouvee + $spip_lang = $GLOBALS['meta']['langue_site'] = + (strpos(',fr,',",$all_langs,")!==false) + ? 'fr' : $tout[0]; + ecrire_meta('langue_site', $spip_lang); + } + $tout = join(',', $tout); // Si les langues n'ont pas change, ne rien faire - if ($all_langs2 != $all_langs) { + if ($tout != $all_langs) { include_spip('inc/meta'); - $all_langs = $all_langs2; - if (!$langue_site) { - // Initialisation : le francais par defaut, sinon la premiere langue trouvee - if (strpos(',fr,',",$all_langs,")!==false) $langue_site = 'fr'; - else list(, $langue_site) = each($toutes_langs); - ecrire_meta('langue_site', $langue_site); - } - ecrire_meta('langues_proposees', $all_langs); - ecrire_metas(); + $GLOBALS['meta']['langues_proposees'] = $tout; + ecrire_meta('langues_proposees', $tout); } + ecrire_metas(); } } diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index f28b83a7ff..64fd6c253f 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1268,22 +1268,12 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { include_spip('inc/acces'); renouvelle_alea(); } + // s'il y a un cookie ou PHP_AUTH, initialiser auteur_session + verifier_visiteur(); } - // La meta est indefinie a la premiere installation - $GLOBALS['langue_site'] = @$GLOBALS['meta']['langue_site']; - - // Langue principale du site - - if (!isset($GLOBALS['langue_site'])) include_spip('inc/lang'); - $GLOBALS['spip_lang'] = $GLOBALS['langue_site']; - - // Verifier le visiteur - if (_FILE_CONNECT) verifier_visiteur(); - # nombre de pixels maxi pour calcul de la vignette avec gd define('_IMG_GD_MAX_PIXELS', isset($GLOBALS['meta']['max_taille_vignettes'])?$GLOBALS['meta']['max_taille_vignettes']:0); - } // Annuler les magic quotes \' sur GET POST COOKIE et GLOBALS ; @@ -1331,7 +1321,7 @@ function verifier_visiteur() { // selectionne la langue donnee en argument et memorise la courante // ou restaure l'ancienne si appel sans argument // On pourrait economiser l'empilement en cas de non changemnt -// et lui faire retour False pour prevenir l'appelant +// et lui faire retourner False pour prevenir l'appelant // Le noyau de Spip sait le faire, mais pour assurer la compatibilite // cette fonction retourne toujours non False diff --git a/ecrire/inc/vieilles_defs.php b/ecrire/inc/vieilles_defs.php index 66329831c4..7da2b5f632 100644 --- a/ecrire/inc/vieilles_defs.php +++ b/ecrire/inc/vieilles_defs.php @@ -244,9 +244,12 @@ function lang_dselect () { // toujours disponible pour PHP > 4.0.1 $GLOBALS['flag_revisions'] = function_exists("gzcompress"); -// eviter de planter les plugins qui le testent +// toujours a cette valeur a present $GLOBALS['options'] = 'avancees'; +// synonyme plus jamais utile +$GLOBALS['langue_site'] = $GLOBALS['meta']['langue_site']; +$GLOBALS['all_langs'] = @$GLOBALS['meta']['langues_proposees']; // http://doc.spip.org/@generer_url_post_ecrire function generer_url_post_ecrire($script, $args='', $name='', $ancre='', $onchange='') { spip_log("generer_url_post_ecrire utiliser generer_form_ecrire"); diff --git a/ecrire/index.php b/ecrire/index.php index 04eafd7546..7da696081f 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -94,7 +94,7 @@ if (isset($_COOKIE['spip_lang_ecrire'])) { else { if (($spip_lang_ecrire <> $GLOBALS['auteur_session']['lang']) AND changer_langue($spip_lang_ecrire)) { spip_query("UPDATE spip_auteurs SET lang = " . _q($spip_lang_ecrire) . " WHERE id_auteur = " . intval($GLOBALS['auteur_session']['id_auteur'])); - $GLOBALS['auteur_session']['lang'] = $var_lang_ecrire; + $GLOBALS['auteur_session']['lang'] = $spip_lang_ecrire; $session = charger_fonction('session', 'inc'); $session($GLOBALS['auteur_session']); } diff --git a/ecrire/install/etape_.php b/ecrire/install/etape_.php index 4c2a0c7f4d..294ff94d84 100644 --- a/ecrire/install/etape_.php +++ b/ecrire/install/etape_.php @@ -18,6 +18,7 @@ function install_etape__dist() global $spip_lang_right; include_spip('inc/headers'); + utiliser_langue_visiteur(); $menu_langues = menu_langues('var_lang_ecrire'); if (!$menu_langues) { redirige_par_entete(generer_test_dirs()); -- GitLab