L'important est de savoir la langue du surfeur. Du genre :
- Sur ta page d'accueil, un drapeau pour chaque pays qui envoient sur page.php?langue=XXX ;
- Un cookie déposé contenant la langue, on récupère ça par $lang=$HTTP_COOKIES_VARS["cookielangue"];
- L'utilisateur se loggue et la langue est stockée dans ta base de données...
Le code de la langue sera par exemple FRA pour français, ENU pour anglais, ESP pour espagnol.
Il te faut 2 fichiers pour réaliser un petit lexique qui assure la traduction de ton site...
dico.php -
dicofonction.php -
Exemple
dico.php
C'est le fichier qui contient le vocabulaire. Il se présente sous la forme suivante :
<? $MOT_FRA='Le mot en français'; $MOT_ENU='Le mot en anglais';
$BIENVENUE_FRA='Bienvenue'; $BIENVENUE_ENU='Welcome';
$NON_TROUVE_FRA='Non trouvé(e)'; $NON_TROUVE_ENU='Not found';
$UTILISATEUR_FRA='Utilisateur : '; $UTILISATEUR_ENU='User: '; ?>
|
Son fonctionnement est très simple : on met $ suivi du terme à définir (BIENVENUE par exemple), suivi d'un underscore '_', suivie du code de la langue. Ensuite, on met la traduction.
Il te sera très facile de rajouter une autre langue en écrivant $BIENVENUE_ESP='Bienvenida';
Fais attention aux apostrophes ! Il faut mettre des backslashes '\' devant, ou alors écrire la chaîne entourée de doubles quotes '"'.... les règles habituelles des langages C et dérivés...
Question d'esthétique pure, en français, on met un espace entre les ponctuations et signes doubles (deux-points, point-virgule, guillements « et », point d'interrogation et d'exclamation), mais pas pour les double quotes. On ne met pas d'espaces entre les mots et les symboles simples (point, virgule, parenthèses...).
En anglais, on ne met pas d'espaces entre les mots et les signes doubles. C'est pour ça que j'ai mis "Utilisateur : " et "User: ".
Je ne connais pas les règles espagnoles ou allemandes...
dicofonction.php
Le fichier dicofonction.php doit être inclus au début de chaque page du site.
<? // RECUPERATION DE LA LANGUE // cela dépend du fonctionnement du site // - requête SQL dans la base de données // - cookie : $l = $HTTP_COOKIES_VARS["cookielangue"]; // - paramètre : $l = $HTTP_GET_VARS["langue"]; // Bien faire gaffe aux majuscules, FRA, ENU... et pas fra, enu define('LANG',$l);
function dico($mot) { // Charge le dictionnaire require("includes/dico.php");
// Si la variable a été définie, la retourner... if (${$mot."_".LANG}) return htmlentities(${$mot."_".LANG});
// Si on ajoute la langue ESP mais qu'un mot n'est pas traduit, // on met la langue par défaut, ici "ENU"... if (${$mot."_ENU"}) return htmlentities(${$mot."_ENU"});
return "BIG_BAD_ERROR"; // si ça arrive, ça veut dire que le mot n'a pas bien été écrit // soit dans le script qui appelle, soit dans le dico.php :( } ?>
|
Ainsi, au lieu de coder "en dur" dans tes pages :
if lang=='FRA' echo 'le mot en français';
if lang=='ENU' echo 'le mot en anglais';
il est plus simple d'appeler echo dico("MOT"); et la mise à jour de la traduction est fastoche, non ?
Un exemple concret
Avec les fichiers ci-dessus... :
<? include("dicofonction.php"); // Message de bienvenue echo dico("BIENVENUE")." !"; // Si c'est en français, ça affiche "Bienvenue !" // Si c'est en anglais, ça affiche "Welcome !" // Si c'est en créole, ça affiche "Welcome !" parce que la langue par défaut // est l'anglais et le créole n'a pas été traduit.
// Message erreur en cours de développement (à corriger!!) echo dico("BIENENUE")." !"; // J'ai volontairement enlevé le V, faute de frappe... // Quelque soit la langue, ça affiche "BIG_BAD_ERROR !" ?>
|
Compris ? C'est simple non ?
Donc, conclu, Have A Good Translation ;-)) !