Multilingue - les solutions - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Multilingue - les solutions (/showthread.php?tid=551) |
Multilingue - les solutions - Yoda54 - 09-05-2008 Bonsoir, Je me pose actuellement la question sur les possibilités offertes par le php pour faire des sites multilingues. Vous me direz, tout est prévu à la base et ça s'appelle gettext. Cependant, je vois un défaut majeur à cette possibilité, c'est l'impossibilité d'avoir une interface permettant de traduire "en live". D'où ma question, quelles solutions pour le multilingue avec php tout en se gardant la possibilité d'une traduction directe? Utilisation de constantes? Table SQL dédiée :wowowow:? Autres? RE: Multilingue - les solutions - Eluox - 09-05-2008 Pour dev mes site avec plusieurs langue, j'utilise un petite système, Les arrays. J'ai un dossier language, qui contient des sous dossier ( fr, en ect ) Dedan j'ai, Code PHP :
Je recupère la langue du navigateur, si le gars n'a pas de SESSION de langue. et j'inclu le sous dossier correspondant. Recuperation du language : Code PHP :
et inclusion Code PHP :
Biensur, l'exemple de tout a l'heure peut etre mis dans un sous dossier en, avec dedans : Code PHP :
Cordialement, RE: Multilingue - les solutions - Sephi-Chan - 09-05-2008 J'avais ouvert un sujet sur la question qui s'était révélé très intéressant (car apportant plein de réponses de divers intervenant). Il serait intéressant d'en faire la synthèse. El[u]ox t'as donné une piste pour le contenu statique. Je vais t'en donner une pour le contenu dynamique. Imaginons que tu travailles sur un jeu de rôle où es joueurs peuvent avoir des objets. Tu as donc une table objets avec les champs suivants :
Il faudra donc traduire le champ Nom. Pour cela, il faudra une table d'internationalisation : nommons-la objets_i18n qui contiendra les champs :
Admettons ensuite que tu ai 2 objets dans ta table objets :
Ta table de localisation contiendra alors quelque chose comme cela :
Chaque objet peut donc avoir plusieurs traduction, différenciée par une locale (fr pour le français, es pour l'espagnol, en pour l'anglais, etc. Tu peux avoir autant de langue que tu le souhaites. Code : SELECT O.id, Ainsi, la traduction est transparente (le champ garde le même nom : nom). La locale (en) est donnée par une variable de session par exemple (que tu auras déterminé précédemment). S'il n'y a pas de traduction pour cet objet ou pour cette langue, alors le nom par défaut (celui indiqué dans la table objets sera utilisé, le jeu reste ainsi utilisable même si tout n'est pas traduit. Sephi-Chan RE: Multilingue - les solutions - naholyr - 09-05-2008 Bonne mémoire Sephi RE: Multilingue - les solutions - Yoda54 - 09-05-2008 Merci de vos réponses. Je ne vais pas être très crédibles mais j'avais fait une recherche avant d'ouvrir ce sujet et avait été étonné qu'il n'est pas encore été traité. Avant le multilingue, il va peut-être falloir que je m'occupe de l'utilisation de la fonction recherche :heuuu: Edit: la recherche avec i18n est un peu plus fructueuse Le sujet de Sephi-Chan: C'est ici Et un autre avec un très bon lien de naholyr vers le site phpfrance: C'est par là RE: Multilingue - les solutions - Sephi-Chan - 10-05-2008 naholyr a écrit :Bonne mémoire SephiHey ! Ça m'a beaucoup servi et j'ai beaucoup aimé utiliser cette technique. Ce serait ne pas jouer le jeu que de la garder pour moi. Pour ma part, le problème vient surtout du contenu statique. Le défaut de l'array, c'est que les vues PHP (ou templates) perdent en clarté… Gettext l'est un peu plus mais il pose d'autres problèmes. Sephi-Chan RE: Multilingue - les solutions - Studio Gamboo - 10-05-2008 Problème ardu ^^ Pour ma part j'ai opté pour un fichier xml par langue, interprété par une classe qui va bien. Il est à noté qu'au delà des débats sur la rapidité fichiers/array/sql, il est surtout très important de lier la localisation avec un cache robuste pour éviter les appels dans tout les sens ^^ Je peut poster la classe en question avec des xml d'exemple si jamais ça intéresse. RE: Multilingue - les solutions - Roworll - 10-05-2008 Pareil pour moi, j'utilise le XML mais couplé au XSL pour l'interprétation J'en avais déjà parlé ici pour ceux que ça intéresse. RE: Multilingue - les solutions - Sephi-Chan - 10-05-2008 Je suis intéressé par la classe dont tu parles, Gamboo. Ça me permettra de la comparer avec la méthode XSLT. Sephi-Chan RE: Multilingue - les solutions - Studio Gamboo - 10-05-2008 |