Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 27-02-2010 00:02:47

cramj
Membre

Choix de la langue pour les invités

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é :

Language: English  German

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 siffle

Dernière modification par cramj (27-02-2010 13:02:53)

Hors ligne

#2 27-02-2010 14:49:39

KzL31
Membre

Re : Choix de la langue pour les invités

vraiment très bonne idée !

mais j'avoue ne pas l'utiliser tout de suite tongue

Hors ligne

#3 29-03-2010 09:57:31

bodeideicamp
Membre

Re : Choix de la langue pour les invités

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 smile

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

#4 29-03-2010 19:55:33

cramj
Membre

Re : Choix de la langue pour les invités

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.
wink

Hors ligne

#5 29-03-2010 19:59:01

cramj
Membre

Re : Choix de la langue pour les invités

cramj a écrit :

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.
wink

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 wink
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

#6 29-03-2010 20:30:12

Mpok
Néo Admin

Re : Choix de la langue pour les invités

cramj a écrit :

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 wink
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é... wink
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

#7 15-06-2010 12:05:58

vivien
Membre

Re : Choix de la langue pour les invités

Il faudra en faire un mod pour la 1.4.X ca =P

super pratique


[HS]UrT Powaaaaa[/HS]

Hors ligne

#8 28-07-2010 05:00:13

akira_87
Membre

Re : Choix de la langue pour les invités

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

Pied de page des forums