Site multi-langues
Tuto écrit par Benji, revu en août 2004 par Molokai et Raf
|
Nous allons voir dans ce tutorial comment proposer plusieurs
langues sur un site grâce à PHP. Vous allez voir ce n'est vraiment
pas sorcier, il suffit de connaître le principe qui est assez proche
du multi-couleurs.
Principe
Nous allons utiliser un concept assez simple pour avoir plusieurs langues avec une seule
page ! (Etonnant, n'est-ce pas ?) Pour cela il faut remplacer le texte par des
variables, si vous ne comprenez pas trop pour l'instant, ne vous inquiétez
pas, vous allez vite comprendre avec la suite du cours. Nous aurons besoin de
plusieurs fichiers :
- Un fichier contenant les constantes pour chaque langue.
- Un cookie qui garde en mémoire la langue choisie par le visiteur pour la
prochaine visite.
Pré-requis
- Utilisation et définition de constantes.
- Utilisation et création de cookies.
Création
1 . Les fichiers langues
Nous allons tout d'abord créer les fichiers contenant les variables
pour chaque langue.
Remarques |
- Nous utiliserons des constantes pour le gain de temps d'exécution
du script de plus cela permet de distinguer les constantes utilisées
pour les langues des autres variables classiques du site.
- Par convention, une constante est toujours notée en majuscules
(cf doc).
|
Astuces |
- Je vous conseille pour vous y retrouver d'organiser vos fichiers
langues avec des commentaires voire de faire un fichier par page ...
- Aussi, créez un sous-répertoire 'lang/' pour y mettre
vos différents fichiers langues, avant que votre FTP ne prenne
l'allure de ma chambre ! ;o)
|
Code PHP - Exemple :
fr-lang.php |
1 |
<?php
|
2 |
|
3 | //---------------------------------------------------------
|
4 | // index.php
|
5 | //---------------------------------------------------------
|
6 |
|
7 | define('TXT_ACCUEIL_INDEX', 'Bienvenue sur PHP Débutant !');
|
8 | define('TXT_METEO', 'Il fait un soleil radieux !');
|
9 | define('TXT_CONSEIL_INDEX', 'Faites du PHP !');
|
10 |
|
11 | //---------------------------------------------------------
|
12 | // page1.php
|
13 | //---------------------------------------------------------
|
14 |
|
15 | define('TXT_ACCUEIL_PAGE1', 'Bienvenue sur la page 1 du site PHP Débutant !');
|
16 | define('TXT_CONSEIL_PAGE2', 'Installez Linux !');
|
17 |
|
18 | //---------------------------------------------------------
|
19 | // Fin
|
20 | //---------------------------------------------------------
|
21 |
|
22 | ?>
|
|
Vous me direz, quelle est l'utilité si on ne dispose que d'un fichier
langue francais pour le site ? Aucune ! Mais nous allons justement créer
un second fichier en anglais par exemple. Attention ! Les noms des constantes
doivent être identiques d'un fichier a l'autre !
Code PHP - Exemple :
en-lang.php |
1 |
<?php
|
2 |
|
3 | //---------------------------------------------------------
|
4 | // index.php
|
5 | //---------------------------------------------------------
|
6 |
|
7 |
define('TXT_ACCUEIL_INDEX', 'Welcome
on PHP Débutant !'); |
8 |
define('TXT_METEO', 'The
sun is shining !'); |
9 |
define('TXT_CONSEIL_INDEX', 'Let's
do some PHP !'); |
10 |
|
11 | //---------------------------------------------------------
|
12 | // page1.php
|
13 | //---------------------------------------------------------
|
14 |
|
15 |
define('TXT_ACCUEIL_PAGE1', 'Welcome
on PHP Débutant's first page !');
|
16 |
define('TXT_CONSEIL_PAGE2', 'Install
Linux !'); |
17 |
|
18 | //---------------------------------------------------------
|
19 | // Fin
|
20 | //---------------------------------------------------------
|
21 |
|
22 | ?>
|
|
Nous voilà avec deux fichiers langues (fr-lang.php et en-lang.php)
qui se trouvent normalement dans un repertoire langue. Je suis d'accord
vous ne pouvez pas en faire grand chose pour l'instant, mais ne vous impatientez
pas, ça vient !
2 . Script du choix de la langue
Maintenant que nous disposons des fichiers langues, il nous faut créer
un script permettant de changer de langue, de créer un cookie etc...
Je vais vous donner le code de base puis vous proposer un exercice
permettant d'ajouter une fonctionnalité au script !
Code PHP - Script de Base :
decide-lang.php |
1 |
<?php
|
2 |
|
3 |
if ($_GET['lang']=='fr') { // si la langue est 'fr' (français) on inclut
le fichier fr-lang.php |
4 |
include('lang/fr-lang.php'); |
5 |
} |
6 |
|
7 |
else if ($_GET['lang']=='en') { // si la langue est 'en' (anglais) on inclut
le fichier en-lang.php |
8 |
include('lang/en-lang.php'); |
9 |
} |
10 |
|
11 |
else { // si aucune langue n'est déclarée on inclut
le fichier fr-lang.php par défaut |
12 |
include('lang/fr-lang.php'); |
13 |
} |
14 |
|
15 |
?> |
|
Exercice 1 - Cookies * |
- Consigne: Dans cet exercice, le but et de gérer
l'envoi d'un cookie pour pouvoir mémoriser la langue choisie
par l'utilisateur.
- Indice: Pour vous aider, vous pouvez voir la doc
sur les cookies, le cours ou jetter
un coup d'oeil au tutorial sur le multi-couleur
pour avoir un exemple concret d'utilisation de cookies.
- Plus: Vous pouvez aussi essayer d'implémenter une reconnaissance
de la langue du navigateur.
- Après avoir tester vos capacités vous pouvez
allez voir la correction ici : Correction
|
3 . Intégration du choix de la langue dans les pages
Ne vous découragez pas, vous avez fait le
plus dur , il ne nous reste plus qu'à intégrer le script
dans vos pages, ce qui devrait être très facile par
rapport au début du tutorial ! ;o) Pour çela, il faut
remplacer votre texte par les constantes définies dans les
fichiers langues et intégrer le script de choix de la langue
au début de chaque page. Vos pages .php actuelles doivent
ressembler à peu près à ça :
Vos pages actuelles (html ou php)
|
Vos pages modifiées (php)
|
1 |
<html>
|
2 | <body>
|
3 | Bienvenue sur PHP Debutant
|
4 | <br>
|
5 |
Meteo du jour : Il fait
un soleil radieux ! |
6 | <br>
|
7 | Conseil du jour : Faites du PHP !
|
8 | </body>
|
9 | </html>
|
|
1 |
<?php
|
2 | require("decide-lang.php");
|
3 | ?>
|
4 | <html>
|
5 | <body>
|
6 | <?php echo TXT_ACCUEIL_INDEX; ?>
|
7 | <br>
|
8 | Meteo du jour : <?php echo TXT_METEO; ?>
|
9 | <br>
|
10 | Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?>
|
11 | </body>
|
12 | </html>
|
|
Pour accéder à vos pages vous utiliserez ce chemin:
http://www.votresite.com/page.php?lang=en (pour l'anglais) par exemple.
Si vous testez vos pages sur votre serveur, vous obtiendrez ce code
HTML :
Page générée : index.php?lang=fr
|
Page générée : index.php?lang=en
|
1 |
<html> |
2 |
<body> |
3 |
Bienvenue
sur PHP Débutant ! |
4 |
<br> |
5 |
Meteo du jour : Il
fait un soleil radieux ! |
6 |
<br> |
7 |
Conseil du jour : Faites
du PHP ! |
8 |
</body> |
9 |
</html> |
|
1 |
<html> |
2 |
<body> |
3 |
Welcome
on PHP Débutant ! |
4 |
<br> |
5 |
Meteo du jour : The
sun is shining ! |
6 |
<br> |
7 |
Conseil du jour
: Let's do some PHP ! |
8 |
</body> |
9 |
</html> |
|
Voilà c'est fini ! Vous pouvez désormais proposer plusieurs langages
à vos visiteurs sans pour autant refaire votre site en entier. Grâce
à ce cours ainsi que celui pour la création d'un site
multi-couleurs, vous pourrez satisfaire de plus en plus de visiteurs.
|
|
|