Skip to content
Extraits de code Groupes Projets
Valider b6e9cf12 rédigé par Antoine Pitrou's avatar Antoine Pitrou
Parcourir les fichiers

améliorations langues

parent 899c7a5f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,6 +10,9 @@ if (file_exists("inc_connect.php3")) { ...@@ -10,6 +10,9 @@ if (file_exists("inc_connect.php3")) {
include_ecrire ("inc_texte.php3"); include_ecrire ("inc_texte.php3");
include_ecrire ("inc_filtres.php3"); include_ecrire ("inc_filtres.php3");
include_ecrire ("inc_lang.php3"); include_ecrire ("inc_lang.php3");
utiliser_langue_visiteur();
?> ?>
<HTML> <HTML>
<head> <head>
......
...@@ -8,6 +8,7 @@ if (file_exists($flag_ecrire ? "inc_connect.php3" : "ecrire/inc_connect.php3")) ...@@ -8,6 +8,7 @@ if (file_exists($flag_ecrire ? "inc_connect.php3" : "ecrire/inc_connect.php3"))
else $aide_statut = 'admin'; else $aide_statut = 'admin';
include_ecrire("inc_lang.php3"); include_ecrire("inc_lang.php3");
utiliser_langue_visiteur();
?> ?>
<HTML> <HTML>
......
...@@ -17,9 +17,9 @@ include_ecrire("inc_filtres.php3"); ...@@ -17,9 +17,9 @@ include_ecrire("inc_filtres.php3");
include_ecrire("inc_urls.php3"); include_ecrire("inc_urls.php3");
include_ecrire("inc_layer.php3"); include_ecrire("inc_layer.php3");
if (!file_exists("inc_meta_cache.php3")) ecrire_metas(); if (!file_exists("inc_meta_cache.php3")) ecrire_metas();
utiliser_langue_visiteur();
// //
// Preferences de presentation // Preferences de presentation
...@@ -41,6 +41,8 @@ if ($set_lang) { ...@@ -41,6 +41,8 @@ if ($set_lang) {
if (changer_langue($set_lang)) { if (changer_langue($set_lang)) {
$prefs['spip_lang'] = $set_lang; $prefs['spip_lang'] = $set_lang;
$prefs_mod = true; $prefs_mod = true;
// Poser un cookie, pour les pages n'ayant pas acces aux meta
spip_setcookie('spip_lang', $set_lang, time() + 365 * 24 * 3600);
} }
} }
if ($securite == 'normal' || $securite == 'strict') { if ($securite == 'normal' || $securite == 'strict') {
...@@ -53,7 +55,8 @@ if ($prefs_mod) { ...@@ -53,7 +55,8 @@ if ($prefs_mod) {
spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = $connect_id_auteur"); spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = $connect_id_auteur");
} }
if ($set_ecran) { // on pose un cookie long car ce reglage depend plus du navigateur que de l'utilisateur if ($set_ecran) {
// Poser un cookie, car ce reglage depend plus du navigateur que de l'utilisateur
spip_setcookie('spip_ecran', $set_ecran, time() + 365 * 24 * 3600); spip_setcookie('spip_ecran', $set_ecran, time() + 365 * 24 * 3600);
$spip_ecran = $set_ecran; $spip_ecran = $set_ecran;
} }
......
...@@ -18,7 +18,7 @@ function charger_langue($lang) { ...@@ -18,7 +18,7 @@ function charger_langue($lang) {
// //
function changer_langue($lang) { function changer_langue($lang) {
global $all_langs; global $all_langs;
if (ereg(",$lang,", ",$all_langs,")) { if ($lang && ereg(",$lang,", ",$all_langs,")) {
$GLOBALS['spip_lang'] = $lang; $GLOBALS['spip_lang'] = $lang;
return true; return true;
} }
...@@ -29,16 +29,18 @@ function changer_langue($lang) { ...@@ -29,16 +29,18 @@ function changer_langue($lang) {
// Regler la langue courante selon les infos envoyees par le brouteur // Regler la langue courante selon les infos envoyees par le brouteur
// //
function regler_langue_navigateur() { function regler_langue_navigateur() {
global $HTTP_SERVER_VARS; global $HTTP_SERVER_VARS, $HTTP_COOKIE_VARS;
$accept_langs = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
if (!$langues_proposees = lire_meta('langues_proposees')) if ($cookie_lang = $HTTP_COOKIE_VARS['spip_lang']) {
$langues_proposees = $GLOBALS['all_langs']; if (changer_langue($cookie_lang)) return $cookie_lang;
}
$accept_langs = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
if (is_array($accept_langs)) { if (is_array($accept_langs)) {
while(list(, $s) = each($accept_langs)) { while(list(, $s) = each($accept_langs)) {
if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) { if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) {
$lang = strtolower($r[1]); $lang = strtolower($r[1]);
if (ereg(",$lang,", ",$langues_proposees,") && changer_langue($lang)) return $lang; if (changer_langue($lang)) return $lang;
} }
} }
} }
...@@ -67,36 +69,45 @@ function traduire_chaine($text, $args) { ...@@ -67,36 +69,45 @@ function traduire_chaine($text, $args) {
return $text; return $text;
} }
function traduire_nom_langue($lang) { function traduire_nom_langue($lang) {
$retour = _T("langue_".$lang); //$retour = _T("langue_".$lang);
include_ecrire("inc_liste_lang.php3");
if (strlen($retour) == 0) { $retour = $GLOBALS['codes_langues'][$lang];
include_ecrire("inc_liste_lang.php3"); if (!$retour) $retour = $lang;
$retour = $GLOBALS['codes_langues'][$lang];
}
if (strlen($retour) == 0) {
$retour = $lang;
}
return $retour; return $retour;
} }
// //
// Initialisation // Selection de langue haut niveau
// //
$GLOBALS['langues_ok'] = 'fr,en,es'; function utiliser_langue_visiteur() {
changer_langue('fr');
$GLOBALS['all_langs'] = lire_meta('sauver_langues_ok'); if (!regler_langue_navigateur())
if (strlen($GLOBALS['all_langs']) == 0) $GLOBALS['all_langs'] = $GLOBALS['langues_ok']; changer_langue(lire_meta('langue_site'));
if ($GLOBALS['prefs']['spip_lang'])
changer_langue($GLOBALS['prefs']['spip_lang']);
}
$GLOBALS['spip_lang'] = 'fr'; function utiliser_langue_site() {
if (!regler_langue_navigateur()) changer_langue('fr');
changer_langue(lire_meta('langue_site')); changer_langue(lire_meta('langue_site'));
if ($GLOBALS['prefs']['spip_lang']) }
changer_langue($GLOBALS['prefs']['spip_lang']);
//
// Initialisation
//
function init_langues() {
global $all_langs;
$d = opendir($GLOBALS['flag_ecrire'] ? "lang" : "ecrire/lang");
while ($f = readdir($d)) {
if (ereg('^spip_([a-z]{2,3})\.php3?$', $f, $regs))
$all_langs[] = $regs[1];
}
closedir($d);
$all_langs = join(',', $all_langs);
}
init_langues();
utiliser_langue_site();
?> ?>
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
if (defined("_ECRIRE_INC_PRESENTATION")) return; if (defined("_ECRIRE_INC_PRESENTATION")) return;
define("_ECRIRE_INC_PRESENTATION", "1"); define("_ECRIRE_INC_PRESENTATION", "1");
include_ecrire("inc_lang.php3");
utiliser_langue_visiteur();
// //
// Aide // Aide
// //
...@@ -1529,53 +1532,28 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr ...@@ -1529,53 +1532,28 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr
// //
// choix de la langue // choix de la langue
// //
if (strpos(lire_meta('langues_proposees'), ',')) { if ($GLOBALS['all_langs']) {
//echo "<td align='center'><font face='arial,helvetica,sans-serif' size=2><img src='img_pack/langues-24.gif' align='center'>";
echo "<td> </td>"; echo "<td> </td>";
echo "<td align='center'>"; echo "<td align='center'>";
$lien = $clean_link; $lien = $clean_link;
$lien->addVar('changer_var', 'oui'); // Bidon, pour forcer point d'interrogation $lien->addVar('changer_var', 'oui'); // Bidon, pour forcer point d'interrogation
echo "<form action='".$lien->getUrl()."' method='get' style='margin:0px; padding:0px;'>"; echo "<form action='".$lien->getUrl()."' method='get' style='margin:0px; padding:0px;'>";
echo "\n<select name='set_lang' class='verdana1' style='background-color: $couleur_foncee; color: white;' onChange=\"document.location.href='". $lien->getUrl() ."&set_lang='+this.options[this.selectedIndex].value\">\n"; echo "\n<select name='set_lang' class='verdana1' style='background-color: $couleur_foncee; color: white;' onChange=\"document.location.href='". $lien->getUrl() ."&set_lang='+this.options[this.selectedIndex].value\">\n";
$langues = explode(',', lire_meta('langues_proposees')); $langues = explode(',', $GLOBALS['all_langs']);
while (list(,$l) = each ($langues)) { while (list(,$l) = each ($langues)) {
if ($l == $GLOBALS['spip_lang']) $selected = "selected"; if ($l == $GLOBALS['spip_lang']) $selected = "selected";
else $selected = ""; else $selected = "";
echo "<option value='$l' $selected style='background-image: url(lang/drap_$l.gif); background-repeat: no-repeat; background-position: 3px 1px; padding-left: 20px;'>".traduire_nom_langue($l)."</option>\n"; echo "<option value='$l' $selected style='background-image: url(lang/drap_$l.gif); background-repeat: no-repeat; background-position: 3px 1px; padding-left: 20px;'>".traduire_nom_langue($l)."</option>\n";
}
echo "</select>\n";
echo "<noscript><INPUT TYPE='submit' NAME='Valider' VALUE='>>' class='verdana1' style='background-color: $couleur_foncee; color: white; height: 19px;'></noscript>";
echo "</form>";
echo "</td>";
/* echo "<td align='center'><font face='arial,helvetica,sans-serif' size=2>";
$langues = explode(',', lire_meta('langues_proposees'));
while (list(,$langue) = each ($langues)) {
if (file_exists("lang/drap_$langue.gif")) $icone = "<img src='lang/drap_$langue.gif' border='0'>";
else $icone = "<font size=1 color='white'>".majuscules("$langue")."</font>";
$lien = $clean_link;
$lien->addVar('set_lang', $langue);
if ($langue != $GLOBALS['spip_lang']) {
//echo "<span class='fondgris' color='white' onMouseOver=\"changeclass(this,'fondgrison2')\" onMouseOut=\"changeclass(this,'fondgris')\">";
echo "<a href='". $lien->getUrl() ."' title='"._T("langue_$langue")."'>$icone</a>";
//echo "</span>";
}
else {
echo "<b>$icone</b>";
//echo " <font color='#ffffff'>[$langue]</font>";
}
echo "&nbsp;";
} }
echo "</font></td>"; echo "</select>\n";
*/ echo "<noscript><INPUT TYPE='submit' NAME='Valider' VALUE='>>' class='verdana1' style='background-color: $couleur_foncee; color: white; height: 19px;'></noscript>";
} echo "</form>";
// fin langue [a placer ailleurs] echo "</td>";
}
// choix de la couleur // choix de la couleur
echo "<td align='right'>"; echo "<td align='right'>";
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter