Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Pages : 1
Permettre aux visiteurs non inscrits de choisir la langue de l'interface.
Au dessous de « Vous n'êtes pas identifié. » apparaît la liste des langues disponibles sauf celle qui est définie dans $pun_user['language'].
Exemple :
Si German, French et English sont disponibles et que la langue par défaut est French, il sera afffiché :
Un cookie nommé $cookie_name.'_lang' est alors crée pour une durée d'un an
Fichiers affectés : include/config.php, include/functions.php, lang/(langues)/misc.php, misc.php, header.php
BdD affectée : NON
Ouvrir include/config.php
Ajouter à la fin :
define('NOM_DOMAINE', 'votredomaine.tld'); # sans les http://Ouvrir include/functions.php
Trouver (dans la function set_default_user) :
global $db, $db_type, $pun_user, $pun_config;Remplacer par :
global $db, $db_type, $pun_user, $pun_config, $cookie_name;Trouver (dans la function set_default_user) :
$pun_user['language'] = $pun_config['o_default_lang'];
$pun_user['style'] = $pun_config['o_default_style'];Remplacer par :
if (isset($_COOKIE[$cookie_name.'_lang']) && file_exists(PUN_ROOT.'lang/'.$_COOKIE[$cookie_name.'_lang'].'/common.php'))
$pun_user['language'] = $_COOKIE[$cookie_name.'_lang'];
else
$pun_user['language'] = $pun_config['o_default_lang'];
$pun_user['style'] = $pun_config['o_default_style'];Ouvrir lang/(langues)/misc.php
Trouver :
$lang_misc = array(Ajouter après :
// Choix de la langue
'Lang redirect' => 'La langue sera mise à jour sur la prochaine page.',ou
// Language setting
'Lang redirect' => 'The language will be update on the next page.',Ouvrir misc.php
Trouver (les 2 dernières lignes) :
else
message($lang_common['Bad request']);Ajouter avant :
else if (isset($_GET['lang']) && $pun_user['is_guest']))
{
if (file_exists(PUN_ROOT.'lang/'.$_GET['lang'].'/common.php'))
{
setcookie($cookie_name.'_lang', $_GET['lang'], time()+3600*24*365, $cookie_path, $cookie_domain, $cookie_secure, true);
}
else
message($lang_common['Bad request']);
if (strpos($_SERVER['HTTP_REFERER'], NOM_DOMAINE) == TRUE)
redirect($_SERVER['HTTP_REFERER'], $lang_misc['Lang redirect']);
else
redirect(PUN_ROOT, $lang_misc['Lang redirect']);
}Ouvrir header.php
Trouver :
$tpl_temp = '<div id="brdwelcome" class="inbox">'."\n\t\t\t".'<p>'.$lang_common['Not logged in']. '</p>'."\n\t\t".'</div>';Remplacer par :
$tpl_temp = '<div id="brdwelcome" class="inbox">'."\n\t\t\t".'<p>'.$lang_common['Not logged in']. '<br />';
$tpl_temp .= 'Language: ';
$langue = scandir(PUN_ROOT.'lang');
foreach($langue as $k =>$v)
{
if(is_dir(PUN_ROOT.'lang/'.$v) && $v != $pun_user['language'] && $v != '.' & $v != '..') $tpl_temp .= '<a href="'.PUN_ROOT.'misc.php?lang='.$v.'">'.$v.'</a> ';
}
$tpl_temp .= '</p>'."\n\t\t".'</div>';C'est la plus grosse modif que je fais et que je mets à disposition, j'espère n'avoir rien oublié. En tout cas, chez moi ça marche du tonnerre.
... même si vous serez pas nombreux à l'utiliser 
Dernière modification par cramj (27-02-2010 13:02:53)
Hors ligne
vraiment très bonne idée !
mais j'avoue ne pas l'utiliser tout de suite 
Hors ligne
et bien franchement si !
je cherche en ce moment a modifier l'interface en fonction de l'ip ou de la version de mes sites (fr ou en) donc oui cela m'interesse 
edith: le premier fichier config.php est à la racine du forum chez moi pas dans le repertoire include.
edith2: ton message de bienvenue reste en français après le changement de langue.
Dernière modification par bodeideicamp (29-03-2010 10:11:47)
Hors ligne
Salut,
Le config.php est bien à la racine. C'est une erreur de ma part (premier post édité)
Pour la langue du mail de bienvenue :
Si le visiteur choisi une langue avant de s'inscrire, le mail lui sera envoyé dans la langue choisie. Sinon, c'est la langue par défaut du forum.
Le choix du menu déroulant sur la page register n'a aucune incidence sur le mail envoyé, et n'en a jamais eu.
C'est le pun_user (le o_default_lang dans la BdD si pas de cookie crée, sinon la valeur du cookie) qui est pris en compte.
Le choix avec ce menu met seulement la valeur dans la table pun_user à l'insertion du nouvel utilisateur, et sera prise en compte à sa 1ère visite.
Tu m'avais mis le doute, j'ai vérifié et ça fonctionne comme voulu. 
Hors ligne
Salut,
Le config.php est bien à la racine. C'est une erreur de ma part (premier post édité)
Pour la langue du mail de bienvenue :
Si le visiteur choisi une langue avant de s'inscrire, le mail lui sera envoyé dans la langue choisie. Sinon, c'est la langue par défaut du forum.Le choix du menu déroulant sur la page register n'a aucune incidence sur le mail envoyé, et n'en a jamais eu.
C'est le pun_user (le o_default_lang dans la BdD si pas de cookie crée, sinon la valeur du cookie) qui est pris en compte.
Le choix avec ce menu met seulement la valeur dans la table pun_user à l'insertion du nouvel utilisateur, et sera prise en compte à sa 1ère visite.Tu m'avais mis le doute, j'ai vérifié et ça fonctionne comme voulu.
Un conseil, pour la détection automatique par IP ou lang du user agent, laisse toujours le choix au visiteur.
Si je suis en vacances en Angleterre, ne me force pas à voir ton site en anglais s'il existe une version française 
Et si un espagnol visite ton site, quelle langue vas tu lui imposer ?
Dernière modification par cramj (29-03-2010 19:59:45)
Hors ligne
Un conseil, pour la détection automatique par IP ou lang du user agent, laisse toujours le choix au visiteur.
Si je suis en vacances en Angleterre, ne me force pas à voir ton site en anglais s'il existe une version française
Et si un espagnol visite ton site, quelle langue vas tu lui imposer ?
C'est pourquoi ce genre de chose est de moins en moins utilisé... 
Le "choix au visteur" doit être DOMINANT dans la réflexion.
Il faut donc privilégier les solutions dans ce sens, et malheureusement fluxbb n'est pas conçu dans ce sens (le mode "Invité" est unique, la différienciation selon la langue n'est pas prévue).
La différenciation du cookie est une bonne voie à creuser (avec un formulaire EXPLICITE, cf. "choix du visiteur"), la modif de config.php est à proscrire (cela vaut d'ailleurs pour TOUTES les mods..).
Hors ligne
Il faudra en faire un mod pour la 1.4.X ca =P
super pratique
[HS]UrT Powaaaaa[/HS]
Hors ligne
Merci je viens de tester ton script exactement ce que je veux, avec quelque modif on peu mètre une image a la place de la langue affiché.. exactement ce que je voulai faire
merci....
Cordialement Akira
Dernière modification par akira_87 (28-07-2010 14:56:30)
function j_ai_besoin() {
if (ça existe) j'utilise;
if (ça existe mais c'est incomplet) j'améliore et je partage;
if (ça n'existe pas) je développe et je partage;
if (je réclame) exit;
Return "code amélioré" or "developpeur satisfait" or die;}
Hors ligne
Pages : 1