Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2008, 15h25   #1
Membre extrêmement actif
 
Inscription : mars 2007
Messages : 726
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 726
Points : 212
Points : 212
Par défaut Site web multi langues

En cherchant un peu j'ai trouvé plusieurs solutions pour faire un site multi langues.
Certains préconisent l'emploi de fichiers php pour chaque langue dans lequel on on définit des constantes pour les zones de texte.
D'autres préconisent de faire ça avec une base de donnée. Comment mettre en oeuvre ce dernier point? Il faudrait une table "phrase" dans laquelle on stocke le texte en différente langues?

Merci de m'éclairer sur ce point.
piotrr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 11h10   #2
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Bonjour,
Ce que je ferais (mais cela n'engage que moi) : créer une table pour chaque langue utilisée, par exemple interface_fr, interface_en etc...
Comme ça, il suffit de faire une seule requête pour l'interface, et la langue peut changer dynamiquement.
Code php :
1
2
3
4
5
<?php
$query = mysql_query("SELECT * FROM interface_".$_SESSION['langage']);
//  ou utilisation de cookies 
//etc...
?>

Mais chacun aura sa vision.
C'est ensuite assez facile à maintenir via une interface d'administration.
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 18h02   #3
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
Pour avoir un peu d'experience pro dans ce domaine au niveau e-commerce nous gerons un site multilangues de la facon suivante :

Tout le texte "statique" est dans des fichiers, exemple : accueil, panier, se connecter, les cgv...

Ensuite, tout le texte d'article, ou ayant du html dans le texte est sotcke en base de données avec une table par pays/langue avec une structure identique.
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 02h48   #4
Membre extrêmement actif
 
Inscription : mars 2007
Messages : 726
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 726
Points : 212
Points : 212
Citation:
Envoyé par pimpmyride Voir le message
Ensuite, tout le texte d'article, ou ayant du html dans le texte est sotcke en base de données avec une table par pays/langue avec une structure identique.
Ca veut dire que pour n'importe quelle table je dois crée la même en toutes les langues dont j'ai envie?

merci
piotrr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 09h26   #5
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Oui, je pense aussi que c'est préférable (a partir du moment ou tu as besoin de la traduction bien sûr).

Lorsque je débutais, j'avais rajouté des champs pour chaque langue au sein de la meme table mais niveau maintenance, j'ai un peu galéré par la suite avec ce projet (a chaque fois qu'on rajoutait, supprimait une langue, c'etait pas évident de se rappeller des champs multilangues existants et ma documentation laissait à désirer).

Donc oui, une partie statique en fichier et le dynamique dans des tables dédiées pour chaque langue me semble être une bonne solution.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 09h30   #6
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Oui, c'est ça

Sur mon site, je fais exactement la même chose que Pimpmyride et je trouve que c'est très performant (il n'y a que 3 langues, c'est tout de même facile à gérer)

Pour ma part, je déconseillerais tout de même la solution de la base de donnée seule (interface + contenu) car cela devient vite lourd pour le serveur.
Je t'ai donné cette solution car j'avais cru comprendre que c'était ce que tu voulais.

Ce thread te donnera d'autres points de vue.

Bon développement
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 11h21   #7
Membre extrêmement actif
 
Inscription : mars 2007
Messages : 726
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 726
Points : 212
Points : 212
Mais avec la solution de dupliquer les tables dans lequel je dois traduire des choses je multiplie la taille de la base de données, de plus comment maintenir cela ? Car si je fais une insertion par exemple je devrai systématiquement la faire 3 fois alors (pour un site avec 3 langues)... ?

Ne puis-ja pas rajouter dans ma bdd une table "Langue" qui stocke les identifiants d'une langue puis à côté une table "se traduit" qui contient 2 clés externes: l'identifiant de la langue et l'identifiant de la table avec le champ à traduire. En plus de cela on aurait alors la traduction dans la table "se traduit".

Est - ce judicieux? Suis - je clair?

merci
piotrr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 11h37   #8
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Je ne pense pas que cela soit difficile à maintenir d'avoir une table pour chaque langue.

Code xhtml :
1
2
<label for="fr">Français</label><textarea id="fr" name="fr" cols="50" rows="10"></textarea>
<label for="en">Anglais</label><textarea id="en" name="en" cols="50" rows="10"></textarea>
Code php :
1
2
3
4
5
6
<?php
if(trim($_POST['fr']) != ''){
  mysql_query("INSERT INTO ....blablabla");
}
// et ainsi de suite.
?>
C'est sur-simplifié, bien sûr... je ne teste rien ici...
Tu peux bien entendu automatiser grâce à une table "langues" tout cela pour ne pas avoir à te taper le code à chaque fois.
C'est idem pour un update... (le mieux étant de combiner l'ensemble)

Le seul inconvénient en effet est que tu dois traduire la totalité du contenu de chaque table (à moins que tu ne fasses un message du genre "Cette page n'est pas visible dans votre langue)...
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 16h25   #9
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
la solution d'avoir une table par pays/langue te permet de ne pas forcement afficher les memes texte dans toutes les langues.

Tu peux avoir une page lien en francais qui n'existe pas en anglais. Ainsi, la structure des tables restent identiques mais en plus, ca t'evite d'avoir des enregistrements vides si tu mets tout ton texte dans une seule table.

De plus, le SELECT en bdd est beacoup plus rapide et crois moi quand tu commences a avoir pas mal de texte tu gagnes en temps processeur, ce qui n'est pas négligable
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h25.


 
 
 
 
Partenaires

Hébergement Web