begin process at 2012 05 27 20:12:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > FAIRE UN SITE MULTILINGUE (ARRAY) + COOKIE

FAIRE UN SITE MULTILINGUE (ARRAY) + COOKIE


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Débutant Date de création :13/11/2004 Date de mise à jour :13/11/2004 14:09:19 Vu :23 936

Auteur : bthivent

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

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

  • 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>
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...
@+ !


 Historique

13 novembre 2004 14:09:21 :
Mise à jour du code

 Sources du même auteur

Source avec Zip Source avec une capture FIRE-SOFT-BOARD
Source avec une capture SYSTÈME D'ARTICLES (+ HITS) AVEC MYSQL
Source avec une capture FAIRE UN ALBUM PHOTO AUTOMATIQUE, AVEC DES CATÉGORIES, SANS ...
CONNAÎTRE LA VALEUR LA PLUS FRÉQUENTE D'UN CHAMPS (MYSQL)

 Sources de la même categorie

Source avec une capture INTÉGRER À UNE BASE DE DONNÉES DES COORDONNÉES GÉOGRAPHIQUES... par slhuilli
Source avec Zip DÉCOMPOSER UN CODE PHP AVEC LA FONCTION INCLUDE par Julien39
CRÉATION D'UN SCRIPT D'AUTHENTIFICATION par phpAnonyme
Source avec Zip Source avec une capture N/X API: GOOGLE MAPS DEPUIS PHP VALID W3C par GillesWebmaster
PHP EXTRAIRE DES MAILS D'UN GROS FICHIER LOCAL OU DISTANT par cosmoswarezone1

Commentaires et avis

Commentaire de bthivent le 13/11/2004 15:16:11

Postez vos comentaires :D
Si vous recontrez une erreur, merci de me le faire savoir

Commentaire de Anthomicro le 13/11/2004 19:01:55

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"] . "<br>" . $lang["text1"] . "<br>" . $lang["text2"];
?>


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

echo $lang['welcome'],'<br />',$lang['text1'],'<br />',$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 +

Commentaire de Kevin007 le 21/12/2004 15:21:05

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

Commentaire de opingo le 03/01/2005 19:02:58

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

Commentaire de Kevin007 le 03/01/2005 20:15:01

opingo -> Bien sur :

<img src="images/header_<?php echo $_COOKIE[ 'monsite_lang' ]; ?>" alt="" />

Commentaire de opingo le 03/01/2005 20:17:24

merci bien ;)

Commentaire de Kevin007 le 03/01/2005 22:27:16

De rien :D
Mais il y a 'danger' si j'applique la méthode que j'ai "décrit" plus haut...

Commentaire de opingo le 04/01/2005 17:01:42

danger comment ça ?
c'est risqué risqué ou négligeable ?
quelle autre méthode pourrait être utilisée?

Commentaire de Kevin007 le 04/01/2005 19:11:17

Tu peux remplacer cette partie du code modifiée par Anthomicro :

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

par :

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

Voilà, je n'ai pas essayé, mais cela devrait marcher.

PS : Je n'ai pas utilisé OR comme Anthomicro par question d'habitude...
Voilà, A+

Commentaire de Kevin007 le 04/01/2005 19:15:46

PS ::::: Omigo:
N'utilise pas <img src="images/header_<?php echo $_COOKIE[ 'monsite_lang' ]; ?>" alt="" />.

Honte à moi lol :D

Mais plutôt :

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

Commentaire de tonio2004 le 03/05/2005 15:13:26

est il possible d'appliquer cette méthode à l'asp?

Commentaire de pblake le 20/04/2006 13:33:25

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 ?

Commentaire de kmimi le 14/08/2008 14:04:30

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

Commentaire de lanner le 30/09/2008 23:16:45

salut, definir une langue par defaut si l'on ne veux pas clicker il y a moyen ?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales