huberdine
Messages postés158Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention17 juin 2010 14 nov. 2006 à 11:49
La méthode que j'utilise passe par des base de données :
Tous les textes sont stockées dans des tables.
J'ai par exemple une table 'fr', une table 'en' ....
Chaque table contient au moins deux colonnes : une colonne id et une colonne texte.
et je fais en sorte qu'un texte ayant un id x dans la table 'en' soit la traduction du texte ayant l'id x dans la table 'fr'.
La requête pour aller chercher un texte donné est le même quel que soit la langue (sauf le nom de la table bien entendu).
Je stocke la langue choisie dans une varaible de session.
Exemple : je veux le texte (quelque soit la langue) ayant l'id 10 :
<?php
$requete = "SELECT texte FROM ".$_SESSION['langue']." WHERE id = '10' ";
?>
Pour changer de langue :
Ja fais un lien comme suit :
[?langue=en En] | [?langue=en Fr]
Et je récupère la langue comme suit :
<?php
if(isset($_GET['langue']))
{
// Pour éviter une injection SQL
switch($_GET['langue'])
{
case "en" :
$SESSION['langue']="en";
break;
// Le français est la langue par défaut
default:
$SESSION['langue']="fr";
break;
}
}
?>
bien entendu, il ne faut pas avoir oubilé de démarrer sa session et d'enregistrer la varaible de session 'langue'
huberdine
Messages postés158Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention17 juin 2010 14 nov. 2006 à 19:30
Tu ne vas pas mettre celà dans un seul champ texte mais dans 3 : un par langue.
Pour ce qui est du rendu du site final, c'est mon poste précédent.
Pour ce qui est de l'interface de gestion de ton site :
- soit tu fais une interface par langue (c'est du copier/coller en changeant juste le nom de ta table)
- soit pour chaque texte, tu fais trois champ texte (un par langue) et tu alimentes tes trois tables en même temps.
Je pense que la première des deux solutions est la plus facile.
seyvapul
Messages postés39Date d'inscriptionvendredi 15 juillet 2005StatutMembreDernière intervention 4 juin 2017 4 déc. 2006 à 00:57
Perso je suis en train de faire un site et je dois aussi le faire en plusieurs langues.
J'utilise en fait les deux methodes.
Tous mes menus sont des images, donc pas de possibilité de traduction en dynamique, ce qui fait que j'appelle des scripts différents en fonction d'une variable :
$CONFIG['langue'] = 'fra';
Cette variable est definie par defaut en francais. (fra).
Lors de lactivation d'une session, l'utilisateur à la possibilité de changer la langue en : 'spa', 'eng', 'ger', 'ita' et 'fra'.
Suivant la valeur de cette variable, j'ai defini des chemins enregistré qui appel les bons scrpits.
switch $CONFIG['langue']
case 'fra' : include('menu_fra.php');break;
case 'eng' : include('menu_eng.php');break;
...
Mais aussi l'aide en ligne du site etant contextuelle, elle fait apparaitre des messages adaptés et là j'utilise les bases de données, mais avec une seule table.
de même suivant la valeur de la variable ,je fais un switch case pour afficher les bon texte en appelant le bon champs de la table.
huberline, ta methode est sympa mais comment fait un visiteur non enregistré pour changer la langue et pouvoir comprendre le formulaire d'inscrition ? Ou alors j'ai zappé un truc, c'est possible car je debute aussi. :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
huberdine
Messages postés158Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention17 juin 2010 4 déc. 2006 à 10:00
En fait, tu n'as pas besoin d'avoir un système de login pour gérer des sessions :
Sur ta page d'accueil tu démarre systématiquement une session (session_start()) : les visiteurs disposent donc, le temps de leur visite, d'une session (même s'i ce n'est pas visible pour lui).
Ainsi tu as la possibilité de savoir en permanance la langue choisie.