Créer un site en plusieurs langues

Discussion dans 'Web, design' créé par Carambar, 9 Septembre 2006.

Statut de la discussion:
Fermée.
  1. Offline
    Carambar He once forgot how to cry
    Salut,

    On viens de me demander de mettre en place un site avec plusieurs langues. Quel serais la manière la plus simple de gérer ca de sorte que le choix de langue est conservé ?
    Carambar, 9 Septembre 2006
    #1
  2. Offline
    Ahava Revenant
    Je fais ça comme ca :

    dans un dossier langages, un fichier contient par exemple fr.php, en.php , sp.php

    dedans, c'est juste une déclaration des variables de langue :

    Code:
    $langue['bonjour] = 'bonjour' ;
    etc.
    Au chargement de chaque page, j'inclus le fichier de langue selon un attribut contenu dans la table des users (mis en session quoi), via un truc du genre :

    Code:
    include('./langages/'.$user->getLangue().'.php');


    et dans toute la page j'utilise le tableau $langue[], qui contiendra la bonne chaine selon la langue de l'user...



    et le tour est joué...


    par contre je sais pas si c'est le top systeme, y en a surement d'autres.... J'attends comme toi avec impatience la réponse d'autres pour voir ça :p
    Ahava, 9 Septembre 2006
    #2
  3. Offline
    Leaf pentoboules (h)
    Un cookie pour que le choix de la langue soit conservé :]
    Leaf, 9 Septembre 2006
    #3
  4. Offline
    FoX SpeEd Touriste
    +1 car comme cela, même les personnes non loggé peuvent choisir leur language
    FoX SpeEd, 10 Septembre 2006
    #4
  5. Offline
    Shrekju ex membre
    Ce n'est pas ce qu'il demandait mais c'est mieux d'utiliser des constantes..
    Tu peux également définir les 'locales' à utiliser.


    Le cookie et s'il y a une base de données avec les différents utilisateur c'est bien aussi. Le cookie est propre au pc sur lequel il est enregistré. Si l'utilisateur visite le site depuis un autre pc, il aura droit au langage par défaut. Si les utilisateurs sont stockés dans une table, pour le confort on peut rajouter un champs langue. Des que l'utilisateur est loggé, la langue sera celle qu'il a choisi, peu importe le pc. On peut meme créer le cookie dès le login, lorsque l'utilisateur reviendra sur le site via ce pc il sera deja dans la langue souhaitée avant son login.
    Shrekju, 10 Septembre 2006
    #5
  6. Offline
    FoX SpeEd Touriste
    faut-il encore savoir si le site est utilisé avec un système de loggin ou non sinon ca sert à rien
    FoX SpeEd, 10 Septembre 2006
    #6
  7. Offline
    Carambar He once forgot how to cry
    A ce que je sache, il n'y a pas de gestion login à mettre en place. Il s'agirais surtout d'un site de présentation d'activités.
    Carambar, 10 Septembre 2006
    #7
  8. Offline
    FoX SpeEd Touriste
    alors par exemple sur ta page index tu met des ptits drapeau ou ce que tu veut pour qu'il choisisent une langue et quand tu clique sur l'image il te renvait sur cette meme page index avec dans l'url en parametre la langue "index.php?lg=fr"
    Ensuite en tout debut de la page avant tout le code html et tout echo possible tu met le code qui envoi le cookies un tit exemple qui est peut etre pas top mais qui marche très bien

    Code:
    //envoi cookies langue
    if ($_GET["lg"])
    {
    	if ($_GET["lg"] != $_COOKIE["lg"])
    	{
    		setcookie("lg", $_GET["lg"], time()+3600*24*365);
    	}
    }
    
    //include fichier de lange
    if ($_COOKIE["lang"])
    {
    	if ($_COOKIE["lang"] == "fr")
    	{
    		include ("config/fr.php");
    	}
    	elseif ($_COOKIE["lang"] == "es")
    	{
    		include ("config/es.php");
    	}
            //et ainsi de suite...
    }
    else
    {
    	include ("config/fr.php"); //fichier a inclure par defaut
    }
    
    FoX SpeEd, 10 Septembre 2006
    #8
  9. Offline
    Ahava Revenant
    J'ai pas compris ta remarque. De plus, je t'assure que mon systeme fonctionne très bien ! Pour les user non loggués, c'est la langue du navigateur qui est choisie, si anglais, sinon c'est le français par défaut...

    Que veux-tu dire par locales et constantes ?
    Ahava, 10 Septembre 2006
    #9
  10. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    Tu utilises un tableau de chaines, alors qu'il sera plus efficace de définir des constantes

    Par contre, comment fais-tu pour chopper la langue du navigateur ?
    Jereck, 10 Septembre 2006
    #10
  11. Offline
    Carambar He once forgot how to cry
  12. Offline
    Ahava Revenant
    Comment définir des constantes, et en quoi c'est plus simple ?

    Voici ce que j'utilise pour détecter la langue de l'user :

    Code:
    function detectLangue()
    {
    	// detection de la langue de l'utilisateur sur 2 caracteres
    	$langDetect = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    	// selon la langue, affectation de celle ci.
    	switch($langDetect){
    		// si la langue detectée est l'anglais
    		case "en":
    			$aRet = "en";
    		break;
    		// sinon, la langue par défaut est le français
    		default:
    			$aRet = "fr";
    	}
    	// Destruction de la langue détectée, n'est plus nécessaire
    	unset ($langDetect);
    	// retourne sur 2 caracteres soit la langue détectée,
    	// soit la langue par défaut
    	return $aRet ;
    }
    Ahava, 10 Septembre 2006
    #12
  13. Offline
    SkYlEsS Kawai
    Voilà bien un topic intéressant ! :-9
    SkYlEsS, 10 Septembre 2006
    #13
  14. Offline
    Shrekju ex membre
    Les constantes.

    Pquoi les utiliser ? Comme leur nom l'indique bien, leur valeur est constante contrairement à la variable. Tout au long de l'éxécution du script, la traduction que tu stocke dans la variable ne sera pas modifiée, autant la stocker dans une constante pour une question d'efficacité et de rapidité.
    Shrekju, 11 Septembre 2006
    #14
  15. Offline
    Ahava Revenant
    Je sais ce qu'est une constante :pfiou:


    Bah j'ai besoin de ça en variable quand même, vu que parfois dans un script ce n'est plus la langue du membre qui est utilisée, mais celle du membre auquel est envoyé un message automatique selon certaines actions ;)
    Ahava, 12 Septembre 2006
    #15
  16. Offline
    Shrekju ex membre
    Probablement une erreur dans la logique de programmation alors..
    Shrekju, 12 Septembre 2006
    #16
  17. Offline
    Ahava Revenant
    Euh... J'en ai besoin ainsi, je vois pas en quoi c'est une erreur de programmation ;);)
    Ahava, 13 Septembre 2006
    #17
Statut de la discussion:
Fermée.