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

  FORUM HardWare.fr
  Programmation
  PHP

  Sites multilangues

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sites multilangues

n°1432432
sakamoto
BanZaï
Posté le 28-08-2006 à 11:41:26  profilanswer
 

Salut à tous,
 
J'aimerais mettre en place un site perso accessible en plusieurs langues.
Je pensais donc à faire ça en Php/MySql où une table contiendrait tous les textes et selon le choix du user je switch de langue.
 
Auriez-vous une meilleure de conception?
Merci

mood
Publicité
Posté le 28-08-2006 à 11:41:26  profilanswer
 

n°1432440
jbourdello​n
Posté le 28-08-2006 à 11:54:51  profilanswer
 

Perso, une fois j'avais fait ca en utilisant du php et un tableau à N Dimensions et ca marchait bien, maintenant coté performances j'ai pas teste la methode avec bdd ...

n°1432462
rufo
Pas me confondre avec Lycos!
Posté le 28-08-2006 à 12:47:11  profilanswer
 

moi, j'utilise un fichier par langue dans lequel je mets des constantes contenant les traductions.

n°1432540
chezwam
Eul' Fricadelle c'est bon !
Posté le 28-08-2006 à 14:52:39  profilanswer
 

rufo a écrit :

moi, j'utilise un fichier par langue dans lequel je mets des constantes contenant les traductions.


pareil, et c'est le plus light que j'ai trouvé :)
 

Message cité 1 fois
Message édité par chezwam le 28-08-2006 à 14:54:45
n°1432616
sakamoto
BanZaï
Posté le 28-08-2006 à 16:00:35  profilanswer
 

un simple fichier texte ?

n°1432625
romainboye​r
Posté le 28-08-2006 à 16:27:34  profilanswer
 

chezwam a écrit :

pareil, et c'est le plus light que j'ai trouvé :)


 
Pareil :) sauf que moi c'est pas des constantes, c'est un Array que je rappelle plus loin dans une fonction qui redistribue. (l'appel au fichier ne se fait qu'une fois).
 
En plus j'ai fait un script qui permet d'avoir une interface qui permet d'ajouter / supprimer des langues, ajouter des phrases (avec commentaires) et faire les traductions..
 
c'est pas mal fonctionnel tout ça

n°1432628
naceroth
Posté le 28-08-2006 à 16:49:10  profilanswer
 

Pareil pour le fichier, sauf que ce n'est ni un tableau ni des constantes mais de l'XML :D

n°1432632
sakamoto
BanZaï
Posté le 28-08-2006 à 17:00:09  profilanswer
 

Je vois que la BDD n'est pas très répandue pour ce genre d'appli. l'idée du fichier en XML me plait assez.

n°1432635
sakamoto
BanZaï
Posté le 28-08-2006 à 17:00:55  profilanswer
 

ça se parse facilement en php un XML?
désolé je suis un vrai newbie en PHP

n°1432646
romainboye​r
Posté le 28-08-2006 à 17:12:11  profilanswer
 

Pour moi le XML est moins intéressant car on est obligés de le parser et que je ne vois pas l'utilité d'un fichier interopérable pour notre cas pré-cité.
 
Le XML est fait pour des utilisations multiples alors que dans notre cas elle est unique... (dans mon cas, il n'y a qu'une fonction pour récupérer les données et les redistribuer...)

mood
Publicité
Posté le 28-08-2006 à 17:12:11  profilanswer
 

n°1432649
rufo
Pas me confondre avec Lycos!
Posté le 28-08-2006 à 17:16:27  profilanswer
 

en +, parser a un coût en temps, ce qui n'est pas le cas avec un fichier texte ou un tableau.
 
Perso, j'ai un peu optimisé le coup du fichier texte. Dans le cas d'une "grosse" appli, je me retrouve avec plus de 1000 lignes de traduction. Or, sur une page, je n'ai pas besoin de toutes les traductions. Je fais donc maintenant plusieurs fichiers et mon MVC n'appelle que ceux dont la vue a besoin...;)


Message édité par rufo le 28-08-2006 à 17:16:49
n°1432655
romainboye​r
Posté le 28-08-2006 à 17:19:31  profilanswer
 

rufo => pareil, un fichier par langue et un fichier central qui dit quelles langues sont actives, quelle est celle par défaut et qui décrit tous les champs dans le cas où l'on administre la chose
 
au niveau perf, ça me semble le mieux

n°1432658
the big be​n
Posté le 28-08-2006 à 17:21:33  profilanswer
 

Ce sujet à déja été traité maintes fois

n°1432659
romainboye​r
Posté le 28-08-2006 à 17:23:58  profilanswer
 

pas très utile comme réponse => soit prévenir un modo pour fermer le topic et donner la réf à notre ami, soit donner la réf aux sujets de toutes façons.. soit donner son avis (une fois de plus, tant pis, les mentalités évoluent)

n°1432661
chani_t
From Dune
Posté le 28-08-2006 à 17:25:41  profilanswer
 

Pourquoi ne pas utiliser un bdd (surtout si elle existe déjà pour une autre utilisation ?)

n°1432665
romainboye​r
Posté le 28-08-2006 à 17:31:58  profilanswer
 

BDD=> lourd si on doit faire un appel à chaque fois pour aller chercher une phrase / moins rapide si c'est pour le récup sous la forme d'un tableau que l'on se propose d'avoir dès le début

n°1432667
AlphaZone
Posté le 28-08-2006 à 17:32:29  profilanswer
 

romainboyer a écrit :

En plus j'ai fait un script qui permet d'avoir une interface qui permet d'ajouter / supprimer des langues, ajouter des phrases (avec commentaires) et faire les traductions...


Tu pourrais me passer quelques captures d'écran de ton interface ? Si ca ne t'ennui pas.
 
 
Sinon j'ai une petite question : Ca se passe comment avec un site dynamique qui gère des news par exemple ? C'est stocké dans une base de données je suppose ?

n°1432674
romainboye​r
Posté le 28-08-2006 à 17:40:25  profilanswer
 

AlphaZone a écrit :

Tu pourrais me passer quelques captures d'écran de ton interface ? Si ca ne t'ennui pas.
 
 
Sinon j'ai une petite question : Ca se passe comment avec un site dynamique qui gère des news par exemple ? C'est stocké dans une base de données je suppose ?


 
ok, as soon I am at home ;)
 
pour les news, oui, tout le monde est d'accord la dessus, les bdd c'est cool, mais le XML c'est mieux là par contre (et oui, le XML est facile à parser car des scriptsexistent déjà)

n°1432676
chani_t
From Dune
Posté le 28-08-2006 à 17:40:59  profilanswer
 

romainboyer a écrit :

BDD=> lourd si on doit faire un appel à chaque fois pour aller chercher une phrase / moins rapide si c'est pour le récup sous la forme d'un tableau que l'on se propose d'avoir dès le début


 
Ba sinon une combinaison des deux techniques...
 
mettre dans une table les langues, et dans une autre toutes les traductions. Quand tu choisis une langue tu charge la partie du tableau qui t'interesse, et aprés dans celle ci tu va soit chercher via un N° de ligne soit via un index.
 
Quand à la vitesse d'éxécution... et bien, je ne suis pas sur que d'aller ouvrir un fichier y lire la ligne dont on a besoin et le fermer, prenne moins de temps.

n°1432682
romainboye​r
Posté le 28-08-2006 à 17:47:55  profilanswer
 

pour ma part je charge le fichier selon la langue une seule fois en include et il va me chercher la ligne indéxée dans un Array, j'ai pas trouvé d'accès plus rapide aux données.

n°1432687
the big be​n
Posté le 28-08-2006 à 17:53:42  profilanswer
 

Pour trouver les références en question je clic sur rechercher puis je tape multilangue et ooohh miracle je trouve
http://forum.hardware.fr/hardwaref [...] 3876-1.htm
http://forum.hardware.fr/hardwaref [...] 8139-1.htm
 :pfff:  
 
Mais bon ca tout le monde sait le faire....
 
Mais mon but n'est pas d'embeter l'auteur du topic mais de l'inciter à faire un mini recherche  :ange:


Message édité par the big ben le 28-08-2006 à 17:54:51
n°1432688
chani_t
From Dune
Posté le 28-08-2006 à 17:53:46  profilanswer
 

ok... je le note :D.. et je m'en félicite :D
 
bon sérieusement. La mise à jour n'est pas trop délicate ? (manipuler un fichier texte n'est pas forcément des plus évident surtout quand tu as plusieurs centaines de pages)

n°1432690
romainboye​r
Posté le 28-08-2006 à 17:59:28  profilanswer
 

Ben a priori, c'est des bouts de phrase que tu as dedans, il doit pas y en avoir autant que de pages, c'est surtout des bouts de phrases redondants, le restant étant stocké en bdd. Pour moi, pour le site que je suis en train de convertir, j'ai une vingtaine de "phrases" utilisées par page en plus des contenus dynamiques (menu et page en cours de visu)

n°1432721
Djebel1
Nul professionnel
Posté le 28-08-2006 à 19:38:45  profilanswer
 

personnellement, j'utilise des classes basées sur la même interface. Une classe Anglais, une classe Francais, toutes deux basées sur l'interface Langue.
Ca permet d'être sur que tu n'oublieras pas une traduction en rajoutant une langue.

n°1432834
supermofo
Hello World !
Posté le 29-08-2006 à 02:40:23  profilanswer
 

la solution la plus rapide que j ai trouve pour l instant est de:
 
- lancer le script qui contient les mots
- stocker les mots dans un fichier texte
- transformer les mots en htlm puis en php puis en xslt.
- une fois xslt tu fais calcule le determinant de matrice
- si la matrice est d'ordre n-1 alors il faut faire un tableau
- sinon tu decompile en ARJ l enonce de la cle de dimension n-1 de ta structure en arbre binaire
- une fois que tu recois la source tu fais un getimagesize($translation)
- si la taille de l'image est supérieur ou egale a 5 ko il faut revenir a l'etape 1 et sauter l'etape 3-4 ( negligé l 'etape 6 pour les illuminés )
- mission accomplie
 

n°1432871
the big be​n
Posté le 29-08-2006 à 09:20:27  profilanswer
 

Pour ma part la solution de OSCommerce me parraissait pas mal:
 
Par exemple pour la page maPage.php, je crée un fchier \languages\french\maPage.php
contenant une série de  

Code :
  1. define('TEXT', 'texte');
  2. define('HEADLINE', 'titre');


Pour les variables communes a toutes les pages, on crée également un fichier \languages\french.php.
 
Ensuite reste ensuite, il ne reste plus qu'a charger le page de traduction correspondant lors de chaque chargement de chaque page...

n°1432872
rufo
Pas me confondre avec Lycos!
Posté le 29-08-2006 à 09:21:54  profilanswer
 

constantes donc...

n°1432888
FMC
Posté le 29-08-2006 à 09:45:16  profilanswer
 

Moi j'ai utilisé un fichier php (lang/fr/index.php), dans lequel sont mises les variables de langue sous cette forme :
 
$lang['INDICE_DU_TEXTE'] = "Indice du texte";
 
Ensuite, dans mes pages j'inclus le fichier de langue en fonction de la langue choisie. Mon script comporte donc un énorme array $lang;
 
Ensuite j'utilise une fonction, pour appeler la variable. Et là je renvoie la variable formatée en HTML (htmlentities), et si la variable n'existe pas, je la retourne en CAPS, de manière à pouvoir la rajouter simplement dans le fichier langue.
 
Exemple :

Code :
  1. function lang($code) {
  2.   global lang;
  3.   if (isset($lang[$code])) return htmlentities($lang[$code]);
  4.   else return $code;
  5. }

n°1433599
romainboye​r
Posté le 30-08-2006 à 11:15:36  profilanswer
 

Alors voici mon configurateur de fichier de langues :
 
http://www.ergonomie-web.com/visu_config.jpg
 
Code de fr.lang.php :

Code :
  1. <?php
  2. $lang_this="fr";
  3. $lang_contents = Array(
  4. 'ini'=>'ini-fr',
  5. 'test'=>'test fr',
  6. );
  7. ?>


Fichier lang.config.php

Code :
  1. <?php
  2. $activ_langs=Array('fr','es');
  3. $fields_descriptions=Array(
  4.  'ini'=>'Champs d\'initialisation, ne pas supprimer',
  5.  'test'=>'test');
  6. ?>


 
Fonction qui récupère tout ça :
 

Code :
  1. require LANG.".lang.php";
  2. function dico($mot) {
  3. global $lang_contents;
  4. return $lang_contents[$mot];
  5. }


 
Voilà, plus de secret.. fin si, mon pti script d'admin :p

n°1433721
supermofo
Hello World !
Posté le 30-08-2006 à 14:21:43  profilanswer
 

YA LE MOT DE PASSE DANS TON CODE !!!!!!!!!!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Joke bien sur  :D


Message édité par supermofo le 30-08-2006 à 14:22:23
n°1433727
romainboye​r
Posté le 30-08-2006 à 14:25:43  profilanswer
 

hum j'ai scrollé trois fois et là je me suis dit j'suis con, je mets pas mes mots de passe dans le code.. bravo la joke, et ton avis sinon ?

mood
Publicité
Posté le   profilanswer
 


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

  Sites multilangues

 

Sujets relatifs
transfert de données entre 2 sites.Comment fonctionnent les sites de jeux en ligne ?
[C++] programmation multilangues - variables externeConservation du profil entre 2 sites
Flux RSS... des sites à me conseiller ?Un seul jeu de script pour plusieurs sites
Qui c'est qui connaît des sites avec la documentaion sur la langue PHPCréer une carte de sites Intranet automatiquement
2 frames vertical pour 2 sitessites caml
Plus de sujets relatifs à : Sites multilangues


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