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

  FORUM HardWare.fr
  Programmation
  PHP

  Méthodologie pour faire un site bilingue ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Méthodologie pour faire un site bilingue ?

n°1147177
nero27
Posté le 11-07-2005 à 22:15:38  profilanswer
 

Bonjour à tous !
 
Je travaille pour un site internet de jeu et nous voudrions rendre le site bilingue (Français/Anglais).
 
Personnellement, je pensais mettre les pages actuelles du site (en Français) dans un dossier "fr" et ensuite traduire page par page et les stocker dans un dossier "en". Ensuite, j'utiliserais une variable de session pour stocker la langue à utiliser et rediriger vers le dossier concerné.
 
Avez-vous une méthode plus simple/efficace pour réaliser ceci ?

mood
Publicité
Posté le 11-07-2005 à 22:15:38  profilanswer
 

n°1147225
bl@p_psx
Admin G15-france
Posté le 11-07-2005 à 22:36:57  profilanswer
 

ne pas utiliser de texte dans le code ...
creer 2 fichiers de traductions contenant les expressions, dans des variables globale, et, en fonction de ta variable de session, faire un include du fichier de langue concerner ...
 
exemple :
francais.php
define("TEXTE_BIENVENUE" , "Bienvenue blablabla" );
 
anglais.php
define("TEXTE_BIENVENUE" , "Welcome blablabla" );
 
et pour l'affichage :
 
echo "<div>".TEXTE_BIENVENUE."</div>";
 
voilà !
 
@+
 
ps: ya pleins d'autre facon de faire, celle là permet entre autre se separer completement les textes du code ... et de pouvoir facilement ajouter de nouvelle langue


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
n°1147369
Profil sup​primé
Posté le 12-07-2005 à 01:25:01  answer
 

C'est la méthode la plus connue, mais à force on se perd dans son code j'pense...

n°1147377
Tempus_Fug​it
tempinou
Posté le 12-07-2005 à 03:41:06  profilanswer
 

Au début je fesais aussi comme ca.
Mais par la suite j'ai eu le besoin d'utiliser le systeme des templates pour séparer code et affichage (afin de faciliter la coopération avec designer) donc j'ai agit ainsi:
(C'est un template fait maison hein, amuse toi bien si tu veux modifier un truc style smarty, enfin bref)
Dans mon template j'ai l'affichage donc

Code :
  1. <body><p>[txt=fr:Bienvenue][txt=en:Welcome] !</p></body>


Et lorsque je parse mon template, grace a ma variable de session langue, je vire tout les [txt=etc qui sont pas du type [txt=fr:etc (dans le cas ou la langue choisie est FR). L'avantage c'est que tu peux ajouter pas mal de langue, mais ca alourdit pas mal les pages. Cependant je trouve ca mieu que d'avoir un dossier fr/ pour les templates et un autre en/ et un autre es/ Et que lorsqu'on veut modifier un ptit truc de la structure xhtml il faille modifier la page dans les trois dossiers :s
 
Bon ptet ca t'aidera pas lol mais ptet a d'autres si... Je fesais rien la donc bon, j'ai tapé la discut.
D'ailleurs si quelqu'un a une autre méthode pour gérer le multilingue avec des templates ce serai cool :p

n°1147379
jagstang
Pa Capona ಠ_ಠ
Posté le 12-07-2005 à 04:17:07  profilanswer
 

bl@p_psx a écrit :

ne pas utiliser de texte dans le code ...
creer 2 fichiers de traductions contenant les expressions, dans des variables globale, et, en fonction de ta variable de session, faire un include du fichier de langue concerner ...


 
+1
 
voici un petit bout de script que j'ai sous la main. A corriger avec $_GET c'est un vieux fichier. Ainsi tu n'es pas obligé de passer dans chaque lien la langue
 
lang.php

Code :
  1. <?
  2. session_start();
  3. if (!isset($l))
  4. {
  5. if (!isset($_SESSION["lang"]))
  6.  $_SESSION["lang"] = "fr" ;
  7. }
  8. else
  9. $_SESSION["lang"] = $l ;
  10. switch($_SESSION["lang"])
  11. {
  12. case "fr" :
  13. $_SESSION["lang"] = "fr";
  14. include ("francais.php" ) ;
  15. break ;
  16. case "de" :
  17. $_SESSION["lang"] = "de";
  18. include ("deutsch.php" ) ;
  19. break ;
  20. case "it" :
  21. $_SESSION["lang"] = "it";
  22. include ("italiano.php" ) ;
  23. break ;
  24. default :
  25. $_SESSION["lang"] = "fr";
  26. include ("francais.php" ) ;
  27. }
  28. ?>


 
italiano.php

Code :
  1. <?
  2. DEFINE('TITRE',"Benvenuto", true) ;
  3. ?>


Message édité par jagstang le 12-07-2005 à 04:19:36

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1147398
sielfried
Posté le 12-07-2005 à 08:26:28  profilanswer
 

jagstang a écrit :


Code :
  1. switch($_SESSION["lang"])
  2. {
  3. case "fr" :
  4. $_SESSION["lang"] = "fr";



 
 [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1147428
afbilou
pouet your life
Posté le 12-07-2005 à 09:15:47  profilanswer
 

Un ptit peu redondant en effet :p

n°1147442
nero27
Posté le 12-07-2005 à 09:33:58  profilanswer
 

Merci Jagstang pour ton exemple, ça m'a bien aidé :jap:
Je commence ça et je vous tiens au courant ;)

n°1147566
cinocks
Posté le 12-07-2005 à 11:06:33  profilanswer
 

smarty est bien pour ca, car tu peux faire plusieurs version de tes templates. Et lors de l'appel, preciser celle que tu veux par parametre. Il suffit à la racine du script de definir  la langue, et d'appeler les templates avec ce parametre.
Ensuite, il suffit de dupliquer les templates pour chaque langue.


---------------
MZP est de retour
n°1147629
nero27
Posté le 12-07-2005 à 11:30:26  profilanswer
 

J'ai pas trop compris [:paysan]  
Je vais paraitre idiot, mais c'est quoi que vous appelez des templates ?

mood
Publicité
Posté le 12-07-2005 à 11:30:26  profilanswer
 

n°1147642
cinocks
Posté le 12-07-2005 à 11:39:41  profilanswer
 

En gros, tu vas separer ton code PHP de ton code HTML. le template est un moule/modele HTML (pour l'exemple) dans lequel tu as des zones de variables. Ces zones peuvent etre substituée par une valeur/contenu.  
 
Dans ton code PHP, tu vas uniquement preparer les données qui vont substituer les zones variables du template. Puis faire un appel de celui-ci.
 
Par l'exemple:
 

Code :
  1. <?php
  2. // indique au moteur que la variable toto sera substituée par le contenu coucou
  3. $montemplate->assign('toto', 'coucou');
  4. $montemplate->Draw('template.tpl');
  5. ?>
  6. {* Le code du template *}
  7. <p>
  8. <b>Hello {$toto}</b>
  9. </p>
  10. {* fin du template *}
  11. Et dans le HTML généré tu auras
  12. <p>
  13. <b>Hello coucou</b>
  14. </p>


Message édité par cinocks le 12-07-2005 à 11:43:40

---------------
MZP est de retour
n°1147643
sircam
I Like Trains
Posté le 12-07-2005 à 11:41:15  profilanswer
 

Citation :


Code :
  1. <body><p>[txt=fr:Bienvenue][txt=en:Welcome] !</p></body>




Peu pratique si le texte devient un peu plus long et si on dépasse 2 langues.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1147705
nero27
Posté le 12-07-2005 à 12:09:37  profilanswer
 

cinocks a écrit :

En gros, tu vas separer ton code PHP de ton code HTML. le template est un moule/modele HTML (pour l'exemple) dans lequel tu as des zones de variables. Ces zones peuvent etre substituée par une valeur/contenu.  
 
Dans ton code PHP, tu vas uniquement preparer les données qui vont substituer les zones variables du template. Puis faire un appel de celui-ci.
 
Par l'exemple:
 

Code :
  1. [...]



Ok, Merci beaucoup pour l'explication :jap:
 
Sinon, j'ai testé ceci :
 
un fichier "francais.php" :

Code :
  1. <?
  2. define(LIVREDOR,"Livre d'or",false);
  3. ?>


 
Puis dans index.php :

Code :
  1. <?
  2. .
  3. include("francais.php" );
  4. .
  5. .
  6. .
  7. echo LIVREDOR;
  8. .
  9. .
  10. .
  11. ?>


 
Quand je charge la page, voilà ce que j'obtiens :

Citation :

Notice: Use of undefined constant LIVREDOR - assumed 'LIVREDOR' in c:\program files\easyphp1-8\www\monchval\francais.php on line 2


Ca veut dire quoi au juste ?


Message édité par nero27 le 12-07-2005 à 12:10:13
n°1147708
FlorentG
Posté le 12-07-2005 à 12:10:57  profilanswer
 

define('POUET', 'tagada');


T'as oublié les quotes ;)

n°1147709
cinocks
Posté le 12-07-2005 à 12:11:43  profilanswer
 

nero27 a écrit :

Ok, Merci beaucoup pour l'explication :jap:
 
Sinon, j'ai testé ceci :
 
un fichier "francais.php" :

Code :
  1. <?
  2. define(LIVREDOR,"Livre d'or",false);
  3. ?>


 
Puis dans index.php :

Code :
  1. <?
  2. .
  3. include("francais.php" );
  4. .
  5. .
  6. .
  7. echo LIVREDOR;
  8. .
  9. .
  10. .
  11. ?>


 
Quand je charge la page, voilà ce que j'obtiens :

Citation :

Notice: Use of undefined constant LIVREDOR - assumed 'LIVREDOR' in c:\program files\easyphp1-8\www\monchval\francais.php on line 2


Ca veut dire quoi au juste ?


 
'LIVREDOR' et pas LIVREDOR je pense.


---------------
MZP est de retour
n°1147710
nero27
Posté le 12-07-2005 à 12:12:31  profilanswer
 

Ah ok, merci :)

n°1147741
bl@p_psx
Admin G15-france
Posté le 12-07-2005 à 12:42:00  profilanswer
 
n°1147802
nero27
Posté le 12-07-2005 à 13:39:02  profilanswer
 

J'avais vu la doc, mais j'avais oublié les quote ;)

n°1149319
Gonzoide
Les cochons... dans l'espâââce
Posté le 13-07-2005 à 17:15:26  profilanswer
 

Juste pour info, dans le cas de gros blocs de textes (articles, etc), qu'est ce qu'il y a de mal a utiliser une solution comme ce qui suit ?  
 

include("ma_racine/".$_SESSION["lang"]."/mapage.php" );


(exemple simpliste pour illustrer mon propos, pas de test ni de securite toussa toussa)


Message édité par Gonzoide le 13-07-2005 à 17:16:24
n°1149330
Tempus_Fug​it
tempinou
Posté le 13-07-2005 à 17:23:48  profilanswer
 

sircam a écrit :

Citation :


Code :
  1. <body><p>[txt=fr:Bienvenue][txt=en:Welcome] !</p></body>




Peu pratique si le texte devient un peu plus long et si on dépasse 2 langues.


Quelle solution proposerais tu ? Hormis de dupliquer les templates et de les faires en chaque langue, bonjour apres pour modifier :s
Ma solution est tres lourde et peu esthétique c'est sur ;)

n°1149333
bl@p_psx
Admin G15-france
Posté le 13-07-2005 à 17:26:18  profilanswer
 

bein si c'est des articles, il vraudrais mieux que ce soit en BD, je suis pas pour le dedoublement des pages.
 
Pour moi, le mieux, c'est de separer completement les texte du reste ( completement hein ^^ ).
 
je serais plus pour :
 

Code :
  1. include("ma_racine/mapage".$_SESSION["lang"].".php" );


celle-ci contenant seulement du texte, et tres peu de code HTML ... ni meme PHP.
 
m'enfin, c'est que ma facon de voir les choses ...


Message édité par bl@p_psx le 13-07-2005 à 17:26:40

---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
n°1149362
nero27
Posté le 13-07-2005 à 17:45:25  profilanswer
 

Le problème de ce système, c'est que si tu modifie une page, tu es obligé de la modifier dans toutes les langues :/ (je parle d'une modification PHP, pas d'un changement du texte ;))

n°1149368
bl@p_psx
Admin G15-france
Posté le 13-07-2005 à 17:47:47  profilanswer
 

non non, mois je mettrais que du texte dans la page php !!!
 
pas du tout de code, ni meme de mise en forme ( aller, peux être un <br /> ou 2 )
 
dans tout les cas, je mettrais tout en bd .... separer contenu / contenant, que ce soit pour le site en lui meme ( XHTML / CSS ) ou pour le code ( PHP / Template / include ... )


Message édité par bl@p_psx le 13-07-2005 à 17:49:31

---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
n°1153954
seaseb
Posté le 19-07-2005 à 17:21:30  profilanswer
 

de façon régulière j'ai a réaliser et surtout entretenir des sites en 2 ou 3 langues de volumes variables de disons pour faire vite 50 a 300 pages/langues.
En qq années les methode ca a été du htlm bête multiplié par le nombre de langue, à du tout dynamique avec séparation quasi totale fond/forme le contenu etant eclaté soit en include soit en base.
 
Il s'agit de sites institutionnels marque, présentation produit, mise à dispo de documents en B2B, liste client, fournisseurs, agent, salons, ...
(pas du e-commerce ni du site coopératif quoi ça a sont importance).
Et au final il s'avère que jamais à l'entretien les différentes langue n'évoluent en même temps, ni ne disposent des même documents (encore moins en même temps) et qu'une tétrachier de traitement ou mise en pages particulieres fonction des langues sont nécessaires ou demandées ensuite à l'usage. Et que donc le truc le plus adaptatif ça a finalement été de dupliquer tt les pages en autant de langues avec l'identifiant de la langue dans le nom de page. De regrouper tt les contenus transversaux et prédictifs dans des bases de données ou fichiers xml, de regrouper au maximum les contenus pouvant l'être le tt mis en page dans des pages adaptées mais unitaire (en asp ou php).
On garde une totale liberté de présentation à la page, sans s'interdir de mettre en place des traitements générique quand c'est possible (include, etc les solutions ne manquent pas).
Le chg de langue se fait n'importe quand sans saut dans l'arborescence juste en changeant l'identifiant de langue dans le nom de fichier de l'url, idem si bien structurées tt les données de sessions suivent directement aussi.
 
Bref tt ça pour dire attention la séparation complète fond/forme est un concept ultra séduisant coté développeur. Mais que le cout (la difficulté voir l'impossibilité ensuite de traiter des cas particuliers) et la rigidité que cela induit est loin d'être nul. Et que si dans des cas de sites coopératifs ou a trés fort partage de contenus c'est indispensable dans beaucoup d'autre cas une voie moins extrême sera finalement plus optimale en terme de temps à passer aussi bien à la conception/fabrication qu'a l'entretien derrière. La difficulté étant d'arriver à jauger à l'avance de besoins réels d'un site et de la façon dont il évoluera.

n°1153994
bl@p_psx
Admin G15-france
Posté le 19-07-2005 à 17:45:35  profilanswer
 

c'est bien pour ca que j'ajoute la notion de template ... ( a la maniere d'un phpbb par exemple ) Dans ce template, tu definis exactement l'espace necessaire dans les champs pour l'allemand par exemple ( bien plus long que l'anglais ) ...
 
++


---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
n°1154096
sircam
I Like Trains
Posté le 19-07-2005 à 21:33:49  profilanswer
 

[mode gros sabots]
Struts :o
[/mode gros sabots]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le   profilanswer
 


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

  Méthodologie pour faire un site bilingue ?

 

Sujets relatifs
Conversion Site ASP en PHPRéorganisation de mon site [RESOLU]
Comment organiser son site web ? (ancien NDM + liens)Probleme pour valider mon site au W3c
Probleme : j'ai fait le theme de mon site mais...Outil de recher en html ou autre pour mon site
Pb dld site perso... bouteille à la merBloquer temporairement un site lors d'une opération de maintenance ?
Système de paiement par carte bancaire pour un petit site de commerce?Schéma de la structure de mon site
Plus de sujets relatifs à : Méthodologie pour faire un site bilingue ?


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