Faire un site multilingue (array) + cookie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 208 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

bthivent
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2 -
Postez vos comentaires :D
Si vous recontrez une erreur, merci de me le faire savoir
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut :-)

Bon bah on va rabacher les mêmes commentaires, à savoir ceci :

<?
?>

On met TOUJOURS <?php pour des raisons de portabilité, c'est mieux.

Ensuite les

$lang array("welcome"> "Bienvenue",
"text1" => "Mon texte 1",
"text2" => "Mon texte 2",
);

inutile de mettre tout entre doubles quotes, les simples suffisent :

$lang array('welcome'> 'Bienvenue',
'text1' => 'Mon texte 1',
'text2' => 'Mon texte 2'
);


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


Bon bah même chose :
<?php
include 'lang_fr.php';

echo $lang['welcome'],'
',$lang['text1'],'
',$lang['text2'];

?>

Ensuite

<?
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");
}
?>

à remplacer par

<?php
if(!isset($_GET['lang']) OR empty($_GET['lang']))
{
echo 'Erreur, aucune langue n\'a été choisie...';
}
else
{
setcookie('monsite_lang',$_GET['lang']);
header('Location: accueil.php');
}
?>

Je pense avoir tout dit...

a +
cs_Kevin007
Messages postés
40
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 octobre 2006
-
Il serait bon de rajouter un contrôle pour voir si le fichier existe, non ?
Car si je fais : choix_lang.php?lang=np, ça va enregistrer un cookie avec np comme langue et inclure un fichier qui n'existe pas...
opingo
Messages postés
5
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
4 janvier 2005
-
Bonsoir à tous et merci pour ata source que j'ai réussi à faire fonctionner, ça roule.

J'ai une question, ou plutôt une suggestion ( teintée d'espoir que tu la suive et fasse une petite évolution dans ton code afin de le compléter ) :

Est-il possible également de procéder au chargement d'une image par un autre afin de traduire aussi les graphiques du site comme les boutons ?

@+ et bonne année
cs_Kevin007
Messages postés
40
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 octobre 2006
-
opingo -> Bien sur :

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