Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1047 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Site bilingue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Site bilingue

n°1508502
oualad
Posté le 30-01-2007 à 09:44:46  profilanswer
 

Bonjour,
il y a quelques mois j'ai terminé un site en lague française. Mon client me recontacte afin de refondre le même site mais en anglais.
Le site sera donc bilingue.
 
Après de nombreuses recherches, je ne trouve pas la meilleure technique à suivre.
Dois-je creer une redirection automatique en utilisant la var php: $_SERVER["HTTP_ACCEPT_LANGUAGE"]
ou alors du javascript avec le risque que cela ne fonctionne pas si le javascritp est désactivé.
De plus, je ne suis pas fort chaud pour une page d'accueil nue avec comme seule option le choix de la langue.
Voici donc ce que je pensais:
dans la page index, au début se trouverait un script php detectant la langue du navigateur. En fonction de la valeur retournée, la page s'affichera en fonction de la langue.
Mais là où je me pose des questions, c'est quant à mes meta tags.
Puisque les mots clés differeront en fonction de la langue.
 
Toutes les pages seront bien entendu stockées dans une BD Mysql.
 
Voilà, j'aimerais vos avis ou suggestions quant à la technique des sites multilingues.
Je n'utilise pas SPIP, ni Xoops, ni autre. Mes codes sont fait avec BBEdit.
 
Merci bien.


---------------
Un forum étant un lieu d'échange, j'accepte les MP uniquement pour les rendez-vous coquins - Imac PPC G3 350Mhz Mac OS X 10.3.9
mood
Publicité
Posté le 30-01-2007 à 09:44:46  profilanswer
 

n°1508503
nycius
Ich liebe dich !
Posté le 30-01-2007 à 09:47:40  profilanswer
 

Tu as une traduction des deux sites ?
 
Tu stockes toutes les traductions en Base (contenu, meta, title, etc)
Ensuite sur ton index tu detectes la langue de l'internaute, tu poses un cookie $lang et tu selectionnes le texte et tu selectionnes dans la BDD le texte que tu dois afficher en fonction de la langue $lang

n°1508506
oualad
Posté le 30-01-2007 à 09:53:31  profilanswer
 

nycius a écrit :

Tu as une traduction des deux sites ?
 
Tu stockes toutes les traductions en Base (contenu, meta, title, etc)
Ensuite sur ton index tu detectes la langue de l'internaute, tu poses un cookie $lang et tu selectionnes le texte et tu selectionnes dans la BDD le texte que tu dois afficher en fonction de la langue $lang


OK merci bien.
J'ai effectivement les traductions.
Parce que certains utilisent des sessions etc... et je me sentais un peu perdu surtout apres avoir lu ceci
 
Je vais donc me lancer dans ta technique à la quelle j'avais pensé.
L'url se presentera donc:
www.lesite.com/fr/index.php?page=page1
 
Si d'autres avis, je suis prenant.
 
Merci


---------------
Un forum étant un lieu d'échange, j'accepte les MP uniquement pour les rendez-vous coquins - Imac PPC G3 350Mhz Mac OS X 10.3.9
n°1508508
nycius
Ich liebe dich !
Posté le 30-01-2007 à 09:55:40  profilanswer
 

Tu n'es pas obligé d'avoir www.lesite.com/fr/index.php?page=page1  
 
Tu peux tres bien avoir www.lesite.com/index.php?page=page1  
POur ca justement tu stockes le "fr" en cookie ou session dès l'arrivée de l'internaute
ensuite tu regardes en fonction de ce cookie et pas du FR dans l'url
 
tu vois ?

n°1508509
oualad
Posté le 30-01-2007 à 09:58:38  profilanswer
 

YES! :bounce:  
je viens de comprendre.
Ca va m'aider à comprendre le lien que j'ai placé dans le post précedent.
Effectivement, j'avais oublié ces fameux cookies.
 
Merci bien à toi  :hello:


---------------
Un forum étant un lieu d'échange, j'accepte les MP uniquement pour les rendez-vous coquins - Imac PPC G3 350Mhz Mac OS X 10.3.9
n°1508513
nycius
Ich liebe dich !
Posté le 30-01-2007 à 10:03:28  profilanswer
 
n°1508645
oualad
Posté le 30-01-2007 à 15:38:25  profilanswer
 

Hic  :pt1cable:  
Après avoir reverifier la hierarchie du site (que je n'avais plus touché depuis longtemps), je me suis rendu compte que le site était hierarchisé de la manière suivante:
 
-index.php
              -dossier pages
              -dossier images
              -dossier admin
              -etc
 
La page index est en français dans le sens où celle ci comportant des paragraphes avec titre e <hn> écrit dans le fichier et non géré via BD.
Si je dois me taper à tout remettre dans une BD avec titres compris, cela va me faire perdre du temps dans le va et vient inutile serveur/client.
 
Alors, puis-je mettre par défaut ma page index en fr et sauter directement dans le dossier en si le navigateur n'est pas en français. Car je n'ai d'autres choix que de créer un dossier en et un dossier fr. A l'époque, je n'avais pas tenu compte (on ne me 'avait pas dit) que le site serait bilingue.
 
Une idée?
 
Merci
 
 


---------------
Un forum étant un lieu d'échange, j'accepte les MP uniquement pour les rendez-vous coquins - Imac PPC G3 350Mhz Mac OS X 10.3.9
n°1508664
omega2
Posté le 30-01-2007 à 15:58:02  profilanswer
 

oualad > Rajoute un "dossier langue" avec un sous dossier ou un fichier par langue (en fonction des besoins du site)
Ca t'éviteras de faire bosser la base de donnée pour ça.

n°1509016
nycius
Ich liebe dich !
Posté le 31-01-2007 à 11:37:32  profilanswer
 

+1 fais ca en fichier texte
tu crées un lang_fr.txt, lang_uk.txt, etc
 
ensuite dedans tu fais  
$LANG25 = 'qsdqsfqfqs';
 
et tu appeles celui ci  dans la page que tu veux
 
 
mais quoiqu'il arrive tu devras forcémen,t repasser sur tes pages etc pour faire la chasse aux textes en dur
 
ps : si tu veux par la suite controler si il te reste des textes en durs, tu supprimes le fichier lang_fr.txt de ton dossier et tu surfes sur ton site, si tu vois des phrases etc c'est que ca cloche :)

n°1509162
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2007 à 15:10:12  profilanswer
 

plutôt utiliser l'extension php pour les fichiers langues, non?

mood
Publicité
Posté le 31-01-2007 à 15:10:12  profilanswer
 

n°1509178
omega2
Posté le 31-01-2007 à 15:20:19  profilanswer
 

rufo > C'est quoi son petit nom? C'est une extension en C (donc risque de ne pas être installé chez tout le monde) ou en simple php?

n°1509187
soju
One shot !
Posté le 31-01-2007 à 15:27:01  profilanswer
 

omega2 a écrit :

rufo > C'est quoi son petit nom? C'est une extension en C (donc risque de ne pas être installé chez tout le monde) ou en simple php?

je pense qu'il voulait dire .php au lieux de .txt
 
sinon pour la gestion l18n, gettext est fait pour ça, on l'oublie souvent

n°1509219
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2007 à 16:29:12  profilanswer
 

soju a écrit :

je pense qu'il voulait dire .php au lieux de .txt
 
sinon pour la gestion l18n, gettext est fait pour ça, on l'oublie souvent


 
oui, je parlais de .php. Mais il est aussi vrai que gettext est une bonne extension (au sens module ou lib) de PHP pour le multi-langue (bien que je ne l'ai jamais utilisé)...

n°1509248
omega2
Posté le 31-01-2007 à 17:41:08  profilanswer
 

Je n'ai pas confiance en un systéme qui stocke des traductions directement dans un fichier .php qui sera exécuté. C'est une porte ouverte à de l'injection de code si jamais une des traductions vient de l'extérieur sans avoir été vérifié à la loupe.

n°1509252
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2007 à 17:54:28  profilanswer
 

omega2 a écrit :

Je n'ai pas confiance en un systéme qui stocke des traductions directement dans un fichier .php qui sera exécuté. C'est une porte ouverte à de l'injection de code si jamais une des traductions vient de l'extérieur sans avoir été vérifié à la loupe.


 :heink:  
Tu penses à quoi?
 
Perso, moi, mes fichiers de langues, ça ressemble à ça :

Code :
  1. <?php
  2. ...
  3. $LANG_NOMPAGEWEB_ID_TRADUCTION = "...";
  4. ..
  5. ?>

Message cité 1 fois
Message édité par rufo le 31-01-2007 à 17:54:45
n°1509262
omega2
Posté le 31-01-2007 à 18:18:57  profilanswer
 

rufo a écrit :

:heink:  
Tu penses à quoi?
 
Perso, moi, mes fichiers de langues, ça ressemble à ça :

Code :
  1. <?php
  2. ...
  3. $LANG_NOMPAGEWEB_ID_TRADUCTION = "...";
  4. ..
  5. ?>


Et donc si quelqu'un t'envoie par exemple une traduction chinoise ... qui contient un bout de code contenant des requettes SQL et des conections à un serveur distant afin de récupérer les mots de passes et autres informations confidentielles? Il se passerait quoi? Moi j'appelle ça une faille de sécurité potentielle.  
 
Avec un simple fichier texte, il n'y aurait aucun risque vu que de toute maniére ca passerait comme étant des lignes mal formaté et non pas comme du code php valide et qui doit être exécuté.
 
EDIT : D'ailleur avec ton systéme même sans faire de requettes sql ou de conection à un serveur distant, il pourrait changer la valeur de certaines variables et tu pourrais trés bien te retrouver à te conecter à une base à lui et non pas à la tienne en fonction du moment où ce fichier est chargé et exécuté. En fait, avec ce genre de solution, on permet au traducteur de faire tout ce qu'il veut dans les limites du langage (donc généralement avec peu de limites) si on ne relit pas l'intégralité du fichier à chaque nouvelle version de la traduction.


Message édité par omega2 le 31-01-2007 à 18:23:09
n°1509272
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2007 à 18:39:54  profilanswer
 

avec mon système, j'ai aucune traduction qui vient d'une BD, hein! Juste des $NomVariable = "Valeur";
Alors pour hacker ça, je demande à voir...
 
ps : si j'avais vraiment voulu être rigoureux, j'aurais dû avoir des define('NomConstante', "Valeur" );

n°1509283
omega2
Posté le 31-01-2007 à 19:15:01  profilanswer
 

rufo > je parle pas du contenu normal d'un fichier de traduction mais de tout ce qui peut être rajouté dans un fichier php en plus de la traduction.
Avec un systéme de traduction comme le tiens, un traducteur externe peut faire ce qu'il veut de ton site.
 
Par exemple si je t'envois un fichier qui contient  

Code :
  1. <?php
  2. $LANG_NOMPAGEWEB_ID_TRADUCTION = "...";
  3. echo "j'ai une grosse faille dans le systéme";
  4. ?>

Tu véras bien qu'il s'affichera une certaine phrase dans ton navigateur en plus du contenu normal du site. ;)
 
C'est bien ça le risque le fait de permettre l'exécution sans controle de code php qui n'a rien à voir avec la traduction. Evidement, si tu relis tous les fichiers de traductions que tu reçois, tu ne devrait pas être emmerdé, mais un utilisateur lambda qui utilise le même systéme sur son site se fera avoir à coup sur s'il récupére un fichier de langue sur un autre site.

n°1509381
soju
One shot !
Posté le 31-01-2007 à 23:18:02  profilanswer
 

de toutes façons avec votre système, l'extension du fichier ne changera rien vu que le fichier est interprété, donc .php ou .txt c'est pareil
=> require('lang.txt') = require('lang.php')  
 
donc gettext ou parse_ini_file  :)  

n°1509483
rufo
Pas me confondre avec Lycos!
Posté le 01-02-2007 à 11:09:10  profilanswer
 

soju a écrit :

de toutes façons avec votre système, l'extension du fichier ne changera rien vu que le fichier est interprété, donc .php ou .txt c'est pareil
=> require('lang.txt') = require('lang.php')  
 
donc gettext ou parse_ini_file  :)


 
par défaut, un fichier txt n'est pas interprété par php...
 
Pour revenir sur "la faille" :
1) les traductions de mon appli, c'est moi qui les fais
2) Si pour une langue, je fais appel à une autre personne, la moindre des choses c'est de vérifier que le fichier php est correct. C'est pas dans mes habitudes d'inclure dans une appli du code source que je n'aurais pas relu ni même testé. Faudrait être malade pour faire ça... :o  

n°1509490
soju
One shot !
Posté le 01-02-2007 à 11:15:27  profilanswer
 

rufo a écrit :

par défaut, un fichier txt n'est pas interprété par php...

avec un require ou include si, fais le test tu verras

n°1509494
omega2
Posté le 01-02-2007 à 11:17:58  profilanswer
 

rufo > Tous les fichiers inclus grace à "include", "require", "include_once" et "require_once" sont interprété quelque soit leur extension.
Sinon, d'aprés ton critaire 90% de la polutation est malade vu que 90% de la population est du genre à rajouter des fichiers de langues à un logiciel sans en lire le contenu. Même si je suis comme toi, je ne peux ni oublier ces 90% de la population ni oublier le fait qu'une erreur est vite arrivé et qu'il est des situations qui sont source de grande inatention (grosse fatigue, lendemain de soirée trop arrosé, accouchement de sa femme ...)

n°1509518
rufo
Pas me confondre avec Lycos!
Posté le 01-02-2007 à 11:56:17  profilanswer
 

omega2 a écrit :

rufo > Tous les fichiers inclus grace à "include", "require", "include_once" et "require_once" sont interprété quelque soit leur extension.
Sinon, d'aprés ton critaire 90% de la polutation est malade vu que 90% de la population est du genre à rajouter des fichiers de langues à un logiciel sans en lire le contenu. Même si je suis comme toi, je ne peux ni oublier ces 90% de la population ni oublier le fait qu'une erreur est vite arrivé et qu'il est des situations qui sont source de grande inatention (grosse fatigue, lendemain de soirée trop arrosé, accouchement de sa femme ...)


 
Pour le include, je ne savais pas. Merci de l'info :jap:
 
Tu codes après l'accouchement de ta femme, toi?  :whistle:  

n°1509540
omega2
Posté le 01-02-2007 à 12:45:49  profilanswer
 

rufo a écrit :

Tu codes après l'accouchement de ta femme, toi?  :whistle:

C'est pas encore arrivé, mais je ne pense pas que j'arriverais à dormir dans les heures qui suivront. ;) Mais le truc, c'est que tu peux trés bien être entrin de coder quand ta femme (ou une voisine) t'appelle pour te dire qu'elle va accouché et là ... [:anathema]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Site bilingue

 

Sujets relatifs
nouveaux site, beaucoup de probleme... un peu d'aide serai la bienvenuAfficher des news sur son site... Module de news ?
Mon site marche plus sur IE 7 ?Administration site: CSS/PHP/Mysql,etc...
[HTML/CSS/JavaScript]Projet interface site web 3d inspiré de XGlprobleme réalisatation site web
site pas valide au w3CAide pour requêtes site de booling
Rechercher forum a integrer a mon siteMéthodologie pour faire un site bilingue ?
Plus de sujets relatifs à : Site bilingue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR