Créer un site en plusieurs langues

Statut
N'est pas ouverte pour d'autres réponses.

Carambar

Elite
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é ?
 

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

Leaf

pentoboules (h)
Un cookie pour que le choix de la langue soit conservé :]
 

FoX SpeEd

Touriste
Leaf a dit:
Un cookie pour que le choix de la langue soit conservé :]
+1 car comme cela, même les personnes non loggé peuvent choisir leur language
 
S

Shrekju

ex membre
Ahava a dit:
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 ^^
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.
 

FoX SpeEd

Touriste
Shrekju a dit:
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.
faut-il encore savoir si le site est utilisé avec un système de loggin ou non sinon ca sert à rien
 
1er
OP
Carambar

Carambar

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

FoX SpeEd

Touriste
Carambar a dit:
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.
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
}
 

Ahava

Revenant
Shrekju a dit:
Ce n'est pas ce qu'il demandait mais c'est mieux d'utiliser des constantes..
Tu peux également définir les 'locales' à utiliser.
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 ?
 

Jereck

Α & Ω
Staff
Ahava a dit:
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 ?
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 ?
 

Ahava

Revenant
Jereck a dit:
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 ?
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 ;
}
 

SkYlEsS

Elite
Voilà bien un topic intéressant ! :-9
 
S

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

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 ;)
 
S

Shrekju

ex membre
Ahava a dit:
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 ;)
Probablement une erreur dans la logique de programmation alors..
 

Ahava

Revenant
Shrekju a dit:
Probablement une erreur dans la logique de programmation alors..
Euh... J'en ai besoin ainsi, je vois pas en quoi c'est une erreur de programmation ;);)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut