[PHP] Internationalisation, meilleure technique pour un petit site?

Internationalisation, meilleure technique pour un petit site? [PHP] - PHP - Programmation

Marsh Posté le 13-10-2003 à 10:19:04    

Quelle est selon vous la meilleure methode pour creer un site avec une interface et un contenu dispo en plusieurs langues? Je pensais stocker toutes mes chaines de caracteres dans des fichiers puis ensuite inclure le fichier correspondant a la langue choisie. En fait je n'aurais aucun texte en clair dans mon code, seulement des variables.
 
Qu'en pensez vous?

Reply

Marsh Posté le 13-10-2003 à 10:19:04   

Reply

Marsh Posté le 13-10-2003 à 10:29:18    

Pas dans des fichiers, mais une base, ce sera à la fois plus rapide et plus évolutif.
 
Sinon, c'est en effet ce qu'il y a de mieu.
 
Tu peux aussi passer par des templates XML, mais il vaut mieu que le site soit statique dans ce cas, car un fichier XML est assez chiant à mettre à jour comparé à une base de données.

Reply

Marsh Posté le 13-10-2003 à 10:37:05    

Moi ce que j'ai fait pour l'interface (pas le contenu) c'est d'appeler un fichier php selon la langue. dans celui-ci, des define() pour chaque bout de texte. C'est mieux des constantes que des variables.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 13-10-2003 à 10:46:49    

Citation :

Pas dans des fichiers, mais une base, ce sera à la fois plus rapide et plus évolutif.
 
Sinon, c'est en effet ce qu'il y a de mieu.
 
Tu peux aussi passer par des templates XML, mais il vaut mieu que le site soit statique dans ce cas, car un fichier XML est assez chiant à mettre à jour comparé à une base de données.


 
Je pensais a des fichiers car j'ai tres peu de contenu textuel. Je ne pense pas que le fait de mettre ça dans une BD change vraiment les perfs (un include d'un petit fichier doit etre plus rapide qu'une connection a la BD + query) et pour ce qui est du coté evolutif, c'est tres pratique et facile a utiliser (un fichier pour chaque langue).
 

Citation :

Moi ce que j'ai fait pour l'interface (pas le contenu) c'est d'appeler un fichier php selon la langue. dans celui-ci, des define() pour chaque bout de texte. C'est mieux des constantes que des variables.


 
Oui, c'est surement mieux de mettre ça dans des constantes (pour le texte de l'interface).
 
EDIT : en fait je vais pourvoir me debrouiller pour que mon contenu soit "compatible" avec n'importe quelle langue comme ça je n'ai que l'interface a gerer.


Message édité par impulse le 13-10-2003 à 10:48:48
Reply

Marsh Posté le 13-10-2003 à 10:51:29    

impulse a écrit :

Citation :

Pas dans des fichiers, mais une base, ce sera à la fois plus rapide et plus évolutif.
 
Sinon, c'est en effet ce qu'il y a de mieu.
 
Tu peux aussi passer par des templates XML, mais il vaut mieu que le site soit statique dans ce cas, car un fichier XML est assez chiant à mettre à jour comparé à une base de données.


 
Je pensais a des fichiers car j'ai tres peu de contenu textuel. Je ne pense pas que le fait de mettre ça dans une BD change vraiment les perfs (un include d'un petit fichier doit etre plus rapide qu'une connection a la BD + query) et pour ce qui est du coté evolutif, c'est tres pratique et facile a utiliser (un fichier pour chaque langue).
 

Citation :

Moi ce que j'ai fait pour l'interface (pas le contenu) c'est d'appeler un fichier php selon la langue. dans celui-ci, des define() pour chaque bout de texte. C'est mieux des constantes que des variables.


 
Oui, c'est surement mieux de mettre ça dans des constantes (pour le texte de l'interface).


Ca dépends en effet de trois choses :
1) La taille du site. Si t'as 10 pages avec 30 lignes à chaque fois, le fichier sera certainement une meilleure solution. Mais nous c'est ce qu'on avait choisi sur un site au boulot, et au final nos fichier font la bagatelle de 8 Mo chacun... Je te raconte pas les perfs de merde...
2) Le nombre de hits par seconde. Si le site n'est pas énormément consulté, alors la gestion avec fichier sera meilleure qu'avec base. Par contre, la montée en charge sera mois bonne. Ca dépends donc si c'est un site grandement consulté ou non.
3) Répartition des textes. Si t'as 50 pages sur le site, et que t'as que 10 pages régulièrement consultées, c'est idiot de charger systématiquement le texte des 40 pages pour rien. A ce moment, tu pars dans le découpage de tes fichiers, et ça devient la galère. De ce côté la base permet de ne charger que les textes que tu veux afficher.

Reply

Marsh Posté le 13-10-2003 à 11:39:25    

Hum... en fait y'a ce qu'il faut ds PHP pour l'internationalisation => gettext(). Je vais essayer d'utiliser cette methode, c'est fait pour apres tout. :)

Reply

Marsh Posté le 13-10-2003 à 12:01:36    

Apres un petit essai, gettext() a l'air pas mal du tout.
 
Pour ceux qui veulent essayer =>
 
tuts :
http://www.onlamp.com/pub/a/php/20 [...] tml?page=1
http://www.aota.net/forums/showthr [...] adid=10615
 
binaires pour win :
http://home.a-city.de/franco.bez/g [...] 32_en.html

Reply

Marsh Posté le 14-10-2003 à 13:37:33    

Bah ouais c bien ton truc impulse mais comment tu fais quand tu mets ton site web en ligne sur un serveur qu'est pas le tien et où tu peux pas jouer avec le php.ini ?

Reply

Marsh Posté le 14-10-2003 à 13:39:55    

Bah tu passes par un vrai hébergeur au lieu de rester chez Free qui de toute façon n'est visible que par 0.00001% des internautes 99.99999% du temps. (non, je ne suis pas Marseillais, j'aurais rajouté quelques décimales dans ce cas ;))


Message édité par MagicBuzz le 14-10-2003 à 13:40:32
Reply

Marsh Posté le 14-10-2003 à 14:32:01    

Citation :

Bah ouais c bien ton truc impulse mais comment tu fais quand tu mets ton site web en ligne sur un serveur qu'est pas le tien et où tu peux pas jouer avec le php.ini ?


 
Hum... tu essayes de charger l'extension avec dl()?
Je ne me suis jamais posé la question, c'est toujours moi qui gere le serveur web en fait donc je le configure comme je veux. :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed