Skip to content
Extraits de code Groupes Projets
Valider 4190d456 rédigé par esj's avatar esj
Parcourir les fichiers

Ménage dans les langues

* 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.
parent ecb6ff3e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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);
}
}
?>
......@@ -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;
}
......
......@@ -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";
}
......
......@@ -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)) {
......
......@@ -12,7 +12,6 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/lang');
include_spip('inc/presentation');
function configuration_transcodeur_dist()
......
......@@ -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');
......
......@@ -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>";
......
......@@ -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);
......
......@@ -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();
}
}
......
......@@ -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
......
......@@ -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");
......
......@@ -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']);
}
......
......@@ -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());
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter