Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UNE GESTION MULTILINGUE COMPLETE


Information sur la source

Catégorie :Astuces Classé sous : multilingue, langue, cookie, defaut, anglais Niveau : Débutant Date de création : 16/01/2008 Date de mise à jour : 19/01/2008 06:33:21 Vu : 7 857

Note :
2 / 10 - par 1 personne
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Une quarantaine de lignes de codes que j'ai crée à partir d'une page blanche en exactement 30 minutes. Ces lignes sont d'une grande utilité pour tout site multilingue. Ils permettent de gérer les langues du sites (plusieurs) en même temps de 3 manières :
1. Par cookie
2. Par langue préférée du navigateur du client
3. Par langue par défaut si aucune des deux précédentes n'est mentionnée.

Bien entendu, ce script vous donne comme résultat un echo ""; il suffit de le remplacer par votre include de fichier langue ou bien redirection (header:location) vers sous domaine.

J'attends vos commentaires et améliorations.
N'hésitez pas à poser des questions.

ps: lougha veut dire langue en arabe :)
ps2: les commentaires sont en anglais pour un meilleur référencement du code.
 

Source

  • <?php
  • /**
  • * @author Taher ALAMI
  • * @copyright 2008
  • */
  • /** IF THE USER CLICKS ON ANY LANGUAGE WE WILL WRITE IT ON A COOKIE */
  • if ($_GET["lang"]) {
  • SetCookie("lougha",$_GET["lang"]);
  • if ($_GET["lang"]=="en") {
  • echo ("en par cookie");
  • } elseif ($_GET["lang"]=="fr") {
  • echo ("fr par cookie");
  • }
  • } else {
  • /** ELSE IF LANGUAGE ALREADY CHOOSEN AND SAVED ON THE COOKIE */
  • if ($_COOKIE["lougha"]=="en")
  • {
  • // include("lang_en.php");
  • echo ("en déjà choisi");
  • }
  • else if ($_COOKIE["lougha"]=="fr")
  • {
  • // include("lang_fr.php");
  • echo ("fr déjà choisi");
  • } else {
  • /** IF LANGUAGE IS NOT YET CHOOSEN USE THE PREFERED LANGUAGE OF USER BROWSER */
  • $langs=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
  • $navlang=$langs[0];
  • if($navlang == "en") {
  • // include("includes/en.php");
  • echo ("en");
  • } else if($navlang == "fr") {
  • // include("includes/fr.php");
  • echo ("fr");
  • } else {
  • /** IF NOT FOUND USE THE DEFAUT LANGUAGE : USUALY ENGLISH */
  • // include("includes/en.php");
  • echo ("default");
  • }
  • }
  • }
  • ?>
  • <center>
  • <a href="?lang=en">ENGLISH</a> | <a href="?lang=fr">FRANCAIS</a>
  • </center>
<?php

/**
 * @author Taher ALAMI
 * @copyright 2008
 */
/** IF THE USER CLICKS ON ANY LANGUAGE WE WILL WRITE IT ON A COOKIE */
if ($_GET["lang"]) {
SetCookie("lougha",$_GET["lang"]);
if ($_GET["lang"]=="en") {
	echo ("en par cookie");
	} elseif ($_GET["lang"]=="fr") {
	echo ("fr par cookie");
	} 
	} else {
/** ELSE IF LANGUAGE ALREADY CHOOSEN AND SAVED ON THE COOKIE */
	if ($_COOKIE["lougha"]=="en")
	{
//		include("lang_en.php");
		echo ("en déjà choisi");
	}
	else if ($_COOKIE["lougha"]=="fr")
	{
//		include("lang_fr.php");
		echo ("fr déjà choisi");
	} 	else 	{
/** IF LANGUAGE IS NOT YET CHOOSEN USE THE PREFERED LANGUAGE OF USER BROWSER */
			$langs=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
			$navlang=$langs[0];
			    if($navlang == "en") {
			//		include("includes/en.php");
					echo ("en");
				} else if($navlang == "fr") {
			//		include("includes/fr.php");
					echo ("fr");
				} else {
/** IF NOT FOUND USE THE DEFAUT LANGUAGE : USUALY ENGLISH */
			//		include("includes/en.php");
					echo ("default");
				}
	} 
}
?>
<center>
<a href="?lang=en">ENGLISH</a> | <a href="?lang=fr">FRANCAIS</a>
</center>

Conclusion

Lignes de code par Taher ALAMI (STAR)
Dieu bénisse Internet.
 

Historique

16 janvier 2008 03:10:41 :
Correction Orthographe !
19 janvier 2008 06:33:21 :
- Passage du code à débutant au lieu d'initié - Remplacement de $HTTP_COOKIE_VARS par $_COOKIE - Remplacement de else if par elseif - Changement du titre, ancien (LA NOUVELLE GESTION MULTILINGUE COMPLETE 2008) par nouveau (UNE GESTION MULTILINGUE COMPLETE) Merci pour les remarques de codefalse, malik7934, coucou747 et neigedhiver.

Commentaires et avis

signaler à un administrateur
Commentaire de codefalse le 16/01/2008 07:37:22 administrateur CS

$HTTP_COOKIE_VARS ?????
Tu sais que ca n'existe plus depuis .... ouah ... longtemps !
L'heure est maintenant à $_COOKIE, $_SERVER, $_GET, $_POST, etc.
Pour un gestionnaire de langue, je te conseillerai plus de prendre note sur la classe de Malalam () car le problème là (enfin après ca dépend de la conception du site), c'est que tu doit avoir n différent sites pour n langues, alors que tu pourrais n'avoir qu'un site, avec le contenu qui change en fonction de la langue (encore une fois, je fait référence à Malalam).

Maintenant ce n'est qu'un choix comme un autre :)

http://www.phpcs.com/codes/PHP5-LOC-CLASSE-BACKOFFICE-INTERNATIONALISATION_44592.aspx

signaler à un administrateur
Commentaire de malik7934 le 16/01/2008 09:06:31

Salut,

Quelques remarques:
- utilise $_COOKIE plutôt que $HTTP_COOKIE_VARS
- pour la récupération du navigateur il te faut un substring de 2 caractères car certaine fois il y a plus de 2 caractères (comme en-us, fr-fr, ...)
- ce n'est pas une "nouvelle gestion de langue 2008", le principe de regarder le GET puis le cookie puis le browser est archi-ancien et archi-connu
- ce n'est en tous cas pas initié

signaler à un administrateur
Commentaire de coucou747 le 16/01/2008 09:25:41

si tu pouvais passer ca en debutant... enfin ca ne vaut pas du tout initie, t'as juste quelques if et quelques include, en plus, c'est mal code comme les deux precedents commentaires le montrent

signaler à un administrateur
Commentaire de neigedhiver le 17/01/2008 23:27:24 2/10

Salut,

+1 aux commentaires précédents.

De plus, je suis surpris que Coucou747 n'ai pas relevé les imbrications de if... J'ai l'impression qu'ells sont mal codées, elles aussi.
J'ai souvenir que elseif est différent de else if, et que le premier est bien plus performant que le second, car ne créant pas de nouveau bloc if. else if revient à faire else { if {, alors que elseif continue le bloc avec une nouvelle condition. Bref.
On peut tout à fait coder un site multilingue en 30 minutes avec autant de lignes que toi, mais sans nécessairement avoir autant de sites qu'on a de traductions. En fait, aucun mérite à ça, surtout avec un code comme ça. Si encore y'avait des classes super chiadées en PHP5, mais là, c'est du PHP3, ça n'a rien d'extraordinaire.
En fait, y'a plus de mérite à coder une classe toute bête en 3 mois mais super optimisée, flexible, ouverte, tout ça tout ça, que produire en 30 minutes en code PHP3 comme ça...

signaler à un administrateur
Commentaire de scriptino le 19/01/2008 06:35:18

Je vous remercie tous pour vos commentaires :)
Titre modifié
Niveau modifié
$_COOKIE corrigé
elseif corrigé

Merci encore !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

SITE MULTILINGUE...Je suis à la dérive !!! [ par kenny18 ] salut,Dans le cadre d'un test, je dois cr&#233;er un site multilingue. J'ai modifi&#233; &#224; ma sauce le script retrouv&#233; sur phpdebutant.org. Un site à la langue donnée [ par rich25200 ] bonjour,J'aimerai savoir comment on fait pour que lorsqu'un francais se connecte a un site internet celui ci se met automatiquement en francais et si pb avec le multilangue [ par morpheus262 ] Salut,pour une fois c'est &nbsp;moi qui ai un probleme avec mon code, erreur assez bizard car j ai deja utilis&#233; ce principe et ca marche tres bie Cookie et multilangue [ par morpheus262 ] Salut,bon la je ne comprend plus j ai tout test&#233;, et pas moyen de lire la valeur du cookie Help me. voila mon code.fichier send_lang.php (c la qu Prob de connexion auto en php avec cookie ! [ par destiny ] Salut all :)Voila le code, en gros qd le membre se connecte sa cr&#233;e un cookie, si il quitte le si et reveins sans avoir vider son cache sa le rec Remplir des champs par defaut grace à une checkbox !? [ par PlayerMania ] Bonjour,Afin de pouvoir mettre en place une version de d&#233;monstration rapide de mon formulaire. Etant donn&#233;e que ce formulaire tient sur 2 pa Requête Multitable [ par ripoux ] Bonjour,J'ai un soucis au niveau des requ&#234;tes multitable en MySQL...Voila ce que j'aimerais faire:J'ai une table de "question" et un table de "r& pb avec mis à jour d bouton d'option + check [ par chardene_amour_de_freddy ] Bonjour, Je suis nouvelle sur le forum et je sui tt aussi novice en php.Je veins aupr&#232;s de mes confr&#232;res et consoeurs developpeur demander d probleme avec les cookies!!!!! aie aie aie [ par benjinancy ] Bonjour, Je suis un peu novice sur l'envoi de cookies avec php... Je souhaite faire un petit panier, qui va envoyer le num&#233;ros des articles dans formulaire / cookie [ par jojo545 ] J'ai une page formulaire.html qui contient &#231;a :&lt;form action="mapage1.php"&nbsp; method="post"&gt;&lt;p&gt;&lt;input type="text" name="identifi


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.