Faire un site multilingue (array) + cookie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 512 fois - Téléchargée 31 fois

Contenu du snippet

Voici comment faire simplement un site multilingue. Vous aurez besoin pour cela de créer une ou plusieurs pages...et on utilisera les tableaux (array). Ci-dessous, nous allons faire un site bilinuge, Anglais et Français. Nous allons en plus enregistrer la langue que le visiteur aura choisi dans un cookie

Source / Exemple :


Tout d'abord, nous allons créer donc deux fichiers, contenant les textes des deux langues : lang_fr.php et lang_en.php
lang_fr.php :
<?
$lang = array("welcome" => "Bienvenue",
"text1" => "Mon texte 1",
"text2" => "Mon texte 2",
);
?>

lang_en.php :
<?
$lang = array("welcome" => "Welcome",
"text1" => "My text 1",
"text2" => "My text 2",
);
?>

Très important : Il faut que les noms soit exactement les mêmes dans chaque fichiers...

Ensuite, voici par exemple votre page d'accueil, qui contiendra ces textes..

<html>
<?
include('lang_fr.php'); // include('lang_en.php') si vous voulez la langue anglaise.
echo $lang["welcome"] . "<br>" . $lang["text1"] . "<br>" . $lang["text2"];
?>
</html>

Le problème est que votre page est soit en Français, soit en Anglais. Nous allons donc demander dans une nouvelle page au visiteurs de choisir une langue, ca pourrait être la page d'accueil. Vous pouvez aussi faire la même chose dans la page principale, ou dans les pages secondaires... Par exemple :

<html>
Choisissez votre langue :<br>
<a href="choix_lang.php?lang=fr">Francais</a> ou <a href="choix_lang.php?lang=en">Anglais</a>
</html>

On dit que la page choix_lang.php est la page qui va envoyer un cookie chez le visiteur :

<?
if(!$_GET["lang"])
{
echo "Erreur, aucune langue n'a été choisie...";
}
else
{
SetCookie("monsite_lang",$_GET["lang"]); // on enregistre un cookie qui s'éffacera a la fermeture de la page. Si vous avez choisi langue française, alors $_GET["lang"] aura comme valeur "fr"...
Header( "Location: accueil.php");
}
?>

Ensuite, nous allons faire un fichier qui inclura le bon fichier de langue, selon le cookie. On pourra inclure ce fichier dans toutes les pages...
select_lang.php :

<?
if (!$HTTP_COOKIE_VARS["monsite_lang"])
{
include("lang_fr.php"): // si pas de cookie pour include la langue, on inclue une langue par défuat, le français par exemple.
}
else
{
$lang = $HTTP_COOKIE_VARS["monsite_lang"];
include("lang_" . $lang . ".php");
}
?>

Donc le code de la page d'accueil sera :

<html>
<?
include("select_lang.php");
echo $lang["welcome"] . "<br>" . $lang["text1"] . "<br>" . $lang["text2"];
?>
</html>

Conclusion :


Voilà, si il y a des problèmes (il risque d'en avoir, je n'ai pas vérifié...) dites-le moi dans les commentaires...
@+ !

A voir également

Ajouter un commentaire

Commentaires

cs_lanner
Messages postés
131
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
8 avril 2015

salut, definir une langue par defaut si l'on ne veux pas clicker il y a moyen ?
kmimi
Messages postés
1
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
14 août 2008

Merci pour ce code et ses corrigés, qui marche très bien.
est-il possible de ne pas avoir 2 pages:page=fr et page=en
mais le chargement se fait sur le même page c'est à dire index
merci
pblake
Messages postés
2
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
20 avril 2006

quel est le code qui permet de conserver la langue choisie par exemple sur la page d'accueil sur toutes les autres pages d'un site ?
tonio2004
Messages postés
1
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005

est il possible d'appliquer cette méthode à l'asp?
cs_Kevin007
Messages postés
40
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 octobre 2006

PS ::::: Omigo:
N'utilise pas " alt="" />.

Honte à moi lol :D

Mais plutôt :

<?php
$language = ( isset ( $_COOKIE[ 'monsite_lang' ] ) ) ? $_COOKIE[ 'monsite_lang' ] : 'default_language';
?>
" alt="" />

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.