Bienvenue sur le site officiel du système de template GagaTemplate. Si vous avez un problème avec ce script, allez faire un petit tour dans la documentation ou si cela ne suffit pas, sur le forum.
Ce système de template est très simple et ne contient que les fonctions importantes d'un système de template, c'est pour celà qu'il est rapide et simple d'utilisation. Si vous débutez avec les templates ce script est pour vous.
Sujet résolu
Vous devez être inscrit et connecté pour pouvoir écrire dans les forums
Warshadow |
Posté le 17/11/2008 00:49 - # | ||||||
|---|---|---|---|---|---|---|---|
|
Membre 68 messages 22 ans |
Bonsoir ! Je suis un utilisateur inconditionnel de Gagatemplate, c'est confirmé. Et lors du développement d'un de mes sites (www.pechmerle.fr), je me suis attaqué à la problématique de la traduction d'un site web, sujet relativement complexe, mais souvent résolu par des listes d'associations [ identifiant - traduction ], stockées dans des fichiers de langue. Et puis, récemment, je suis tombé sur le SdZ sur un tutoriel présentant GetText. Le système avait l'air bon, mais ne m'a pas convaincu. Ce n'est pas user-friendly à mon gout, et ça ne permet pas de faire faire la traduction par un non-informaticien, ou alors très difficilement. L'idée que je vous propose ce soir est venue de là... Ne pourrait-on pas utiliser Gagatemplate pour automatiser, et simplifier, la traduction d'un site web ? Voici comment les choses pourraient se dérouler : 1. Écriture des fichiers template (.tpl, .html... ). Chaque texte à traduire est noté comme suit : _("texte à traduire") 2. Génération des fichiers de traduction, un fichier de traduction étant créé pour chaque fichier template et chaque langue. 3. Remplissage par l'utilisateur des fichiers de traduction. 4. Chargement du site. Pour chaque fichier template chargé, on charge son équivalent de traduction dans la langue choisie. Le moteur remplace les textes par leurs traductions, puis créé les fichiers pré-compilés spécifiques à la langue. On se retrouve donc avec, pour chaque langue et pour chaque fichier template, un fichier pré-compilé, et si il n'y a pas eu de changement, on charge ce fichier pré-compilé. Quel est l'intérêt d'un tel système ? Tout d'abord, le tout est franchement optimisé. En s'appuyant sur le système de pré-compilation de Gagatemplate, on ne charge les traductions que très rarement, et on ne charge que celles qui nous intéressent, donc on gagne théoriquement énormément en performances. Ensuite, le système est bien plus souple à mon avis. On peut en effet fournir des fichiers de langue au format XML, et ainsi permettre facilement de créer une interface pour la traduction. Au niveau des contraintes, on devra principalement gérer la génération des fichiers de langue, un poil compliquée. En effet, il faudra compléter les fichiers déjà existants sans les effacer, supprimer les entrées qui n'existent plus, et surtout conserver la cohérence entre les fichiers de chaque langue. Ce point me parait assez délicat. L'autre problème, c'est que Gagatemplate a pour but d'être simple et léger. Or, l'ajout d'un tel système irait à l'encontre de ce principe. Il faudrait donc pouvoir développer un module, ou une sur-couche à Gagatemplate, laissant ce dernier totalement indépendant du système "Gagatranslate". Mais est-ce possible ? Je ne connais pas suffisamment le fonctionnement interne de Gagatemplate pour l'affirmer, mais il me semble que ce ne sera pas envisageable sans faire de gros changements sur le moteur de Gagatemplate... Voila, l'idée est là, maintenant j'attends vos avis quant à la faisabilité de ce projet, et à son intérêt. En ce qui concerne le développement, je ne pense pas pourvoir l'assurer, pour des questions de temps, mais je serai ravis d'apporter ma contribution si quelqu'un acceptais de s'en charger ! Warshadow adriangaudebert.monespace.net Edité par Warshadow le 17/11/2008 00:59 |
||||||
gaga26 |
Posté le 17/11/2008 18:47 - # | ||||||
|
813 messages 19 ans |
Hello, Je suis assez séduit par l'idée ! Cela permettrai à gagatemplate de se démarquer des autres moteurs. Pour ce genre de chose je vois très bien un fichier xml, ainsi la gestion (éléments supprimés, ajoutés, modifiés) serait grandement simplifié. Effectivement gagatemplate se veut le plus léger possible, cependant dans la dernière version (sauf erreur) les méthodes importante sont protégées et non privées, ce qui fait que la classe peut très facilement être étendue. J'avais déjà fait ça pour la gestion des dates. Bon après, il faut voir comment c'est mis en place. Un tel système pourrait aussi faire l'objet d'un recodage complet de mon moteur. Car je dois l'avouer, il ne respecte pas du tout les conventions de programmation, en effet, à l'époque, je ne les connaissait pas du tout... Je vais réfléchir à tout ça. |
||||||
Warshadow |
Posté le 18/11/2008 15:52 - # | ||||||
|
Membre 68 messages 22 ans |
Bon, si ça te plait, on peut dire que ça commence bien... ^^ Evidemment, les fichiers XML seraient idéaux pour ce genre de gestion, que ce soit pour la génération, comme pour le "remplissage" par l'utilisateur des fichiers de langue. Je viens de jeter un oeil aux sources de Gagatemplate, et première constatation : ce n'est pas commenté... Donc éventuellement, si tu penses ré-écrire le code en appliquant une convention, il faudrait en profiter pour commenter le tout ! PS : de quelle convention parles-tu ? Parce qu'il en existe beaucoup, le seul intérêt d'une convention de notation étant la cohérence du programme... |
||||||
gaga26 |
Posté le 18/11/2008 18:17 - # | ||||||
|
813 messages 19 ans |
Des conventions de base quoi, je n'en sais rien ! Celle qu'on m'enseigne dans mon école (java donc). Comme par exemple de pas pas mettre un attribut public, bien commenté son code, le MVC, ...Je vais donc voir si je trouve du temps pour commencer ça. Je garantie pas que ça sera fait dans la semaine loin de la, j'ai pas mal de truc à faire ces jours. Mais d'ici nouvelle an peut-être. |
||||||
gaga26 |
Posté le 30/11/2008 01:27 - # | ||||||
|
813 messages 19 ans |
Ca avance beaucoup, je suis arrivé à un truc pas mal avec xml et tout et tout. Je vais encore l'optimiser, le commenter un peu et je sortirai une Alpha, je pense aisément qu'on pourra passé à la version 5.0, car énormément de chose ont changées... Ca me déprime déjà rien que de pensé à la toutes la doc qu'il faudra récrire... Bon, sur ce je vais me couché, il commence à se faire tard... |
||||||
gaga26 |
Posté le 30/11/2008 19:19 - # | ||||||
|
813 messages 19 ans |
Version disponible dans les téléchargements. Citation : version 5.0 Refonte TOTAL du moteur, tout à été revu, il faudra que vous utilisiez la doc fournit avec les fichiers. Sur idée de Warshadow, ajout de GagaTranslate. Un outil puissant pour traduire vos sites à la façon GetText. J'attends avec impatience vos avis sur le forum.
|
||||||
Warshadow |
Posté le 30/11/2008 23:38 - # | ||||||
|
Membre 68 messages 22 ans |
Extra ! Je pensais pas que tu aurais fait ça aussi vite... ^^ Je vais essayer de tester ça demain si j'ai le temps, en tout cas je le fait le plus tôt possible...
|
||||||
Warshadow |
Posté le 01/12/2008 15:21 - # | ||||||
|
Membre 68 messages 22 ans |
Je suis en plein test actuellement, donc je fais part de mes constations au fur et à mesure... (Oui quand je suis en cours je travaille sur GagaTemplate, tout à fait ! ) 1. Grosse question : pourquoi avoir changé le template pour les variables ??? Il faudrait au moins, quitte à changer, garder la compatibilité avec l'ancienne notation, parce que moi je ne peux pas me permettre de remplacer tous mes fichiers templates... Et je sais que je ne suis pas le seul qui va être gêné par ce changement ! 2. Dans les fichiers templates, j'aurais préféré que les textes à traduire soient entourés par _(" "), c'est-à-dire avec les guillemets. Je pense que ça sera plus clair au niveau du code. Après peut-être qu'il y a une raison technique à ça, auquel cas je ne dirais rien de plus... ^^ 3. J'ai testé avec les fichiers d'exemple que tu as donné, et ça marche. Je vais essayer de mettre ce système en place sur mon site perso ce soir. 4. Il serait bien aussi que les fichiers de langue soient organisés en dossiers par langue. C'est-à-dire, dans le dossier lang/ créer un dossier par langue (fr/ en/ ) dans lesquels seraient le fichiers de traduction. 5. Je n'aime pas la syntaxe des fichiers de traduction. <?xml version="1.0" encoding="UTF-8"?> <language value="fr"> <translation key="Titredemapage">Titre de ma page</translation> <translation key="Titre">Titre</translation> <translation key="Bonjouretbienvenuesurmonsitepe">Bonjour et bienvenue sur mon site personnel. Vous trouverez ici mes réalisations.</translation> </language> Je suis partisan du tout anglais ! 6. Après ça, je pense qu'il faudra compléter le système en ajoutant une interface de traduction simple, et il faudrait aussi créer un fichier "script" qui charge les fichiers de traduction... Donc plein de boulot en perspective, mais plein de bonnes choses avec ! En tout cas ça me fait très plaisir, ça va très certainement me simplifier beaucoup la vie, et ça peut être un gros plus pour GagaTemplate !
|
||||||
gaga26 |
Posté le 01/12/2008 17:27 - # | ||||||
|
813 messages 19 ans |
1 => Ouai c'est vrai que niveau compatibilité c'est moyen, je vais faire des alias (que je notifierai comme dépréciés). 2 => Perso, je ne vois pas pourquoi mettre des guillemets... _() est suffisant je trouve, on ne trouvera jamais ça dans un texte. 4 => Ouai, c'est vrai que pour les gros sites avec beaucoup de pages, ça va vite venir le gros bordel... 5 => C'était juste pour faire cour, après c'est à discuter. Bon de nos jour on est plus à 3 octets près, il est vrai que je pourrais mettre les nom anglais complets. 6 => Pour l'interface, une chose après l'autre... ^^ Sinon pour le script, parles-tu des méthodes compileLang() et generateXML() ou rien à voir ? Merci à toi pour l'idée, en faisant un peu de pub, je suis sûr que ça attirait beaucoup de monde. Je ne pense pas être le premier à avoir faire ça, mais assembler moteur de templates et GetText, je n'en ai jamais entendu parler auparavant. |
||||||
Warshadow |
Posté le 01/12/2008 18:44 - # | ||||||
|
Membre 68 messages 22 ans |
Citation : gaga26 1 => Ouai c'est vrai que niveau compatibilité c'est moyen, je vais faire des alias (que je notifierai comme dépréciés). Merci ! Citation : gaga26 2 => Perso, je ne vois pas pourquoi mettre des guillemets... _() est suffisant je trouve, on ne trouvera jamais ça dans un texte. Ben c'était pour rester comme GetText et Qt en fait, les deux utilisent les guillemets... ( GetText : gettext("") ou _(""); Qt : tr("") ) Mais mis à part ce soucis de cohérence, ce n'est guère important. Citation : gaga26 5 => C'était juste pour faire cour, après c'est à discuter. Bon de nos jour on est plus à 3 octets près, il est vrai que je pourrais mettre les nom anglais complets. Tout à fait, les 3 octets sont loin d'être indispensables, donc autant faire les choses le plus proprement possible ! Citation : gaga26 6 => Pour l'interface, une chose après l'autre... ^^ Sinon pour le script, parles-tu des méthodes compileLang() et generateXML() ou rien à voir ? Yep, un script automatique qui génère tous les fichiers nécessaires, sans que l'utilisateur n'ait à taper le code php pour le faire. D'autant qu'il faudra régulièrement relancer ce script, au moins à chaque changement dans les tpl ! Citation : gaga26 Merci à toi pour l'idée, en faisant un peu de pub, je suis sûr que ça attirait beaucoup de monde. Je ne pense pas être le premier à avoir faire ça, mais assembler moteur de templates et GetText, je n'en ai jamais entendu parler auparavant. C'est un plaisir de t'aider, tout autant que c'est un plaisir d'utiliser GagaTemplate ! |
||||||
gaga26 |
Posté le 01/12/2008 19:12 - # | ||||||
|
813 messages 19 ans |
Citation : Warshadow Yep, un script automatique qui génère tous les fichiers nécessaires, sans que l'utilisateur n'ait à taper le code php pour le faire. D'autant qu'il faudra régulièrement relancer ce script, au moins à chaque changement dans les tpl ! Ben, il suffit de faire une page listant tous les templates et lançant successivement generateXML() et compileLang(). Sinon, il suffit de mettre la propriété $forceLang à true et les fichiers sont généré en même temps que la méthode parse() utile pour le développement, mais à désactiver par la suite car c'est une grosse perte de ressources. Sinon le reste à été implémenté, je vais sortir une release dans 5 min. |
||||||
Warshadow |
Posté le 02/12/2008 12:08 - # | ||||||
|
Membre 68 messages 22 ans |
Bug : <var name="titre">_(Valeur)</var> donne <?php $titre = '<?php echo $GGTRSL['Valeur']; ?>'; ?> et forcément ça compile pas... ^^ Autre problème, si on a plusieurs fois le même texte à traduire, cette répétition n'est pas gérée, et le texte s'affiche deux fois dans le fichier le langue. Il faudrait donc, soit différencier les index, soit ne pas les écrire en double. Je suis plus pour la 2e solution, plus cohérente. Petit aparté, y a un truc que je ne dois pas savoir, parce que la propriété de Gagatemplate s'appelle _forceCompile mais il faut l'appeler forceCompile (sans _)... Un éclaircissement sur un point de PHP que je ne connais pas ?
|
||||||
gaga26 |
Posté le 02/12/2008 12:40 - # | ||||||
|
813 messages 19 ans |
Pour le bug eu... Tu m'embêtes un peu. _(Valuer) étant déjà une variable, je ne vois pas pourquoi tu utilises la balise <var /> ? Pour la cohérence oui, il est vrai qu'il faut que je fasse quelque chose, car les clés supprimées dans le template ne le sont pas dans le fichier de langue. Je ferais ça en rentrant. Pour les _ (underscore) précédants les propriétés, c'est pour faire une différenciation avec les attributs vraiment privés (ou protégés). Dans mon moteur, si tu attribut commence par un _, il pourra etre accessible depuis l'extérieur, exemple $tpl->forceCompil. Mais essai de modifier $tpl->vars, tu ne pourras pas. Va faire un tour du côté des méthodes magiques __get() et __set() (dans la doc et dans mon moteur). |
||||||
Warshadow |
Posté le 02/12/2008 13:12 - # | ||||||
|
Membre 68 messages 22 ans |
Eh bien, on peut vouloir donner à une variable une valeur traduite... Dans l'exemple, si je veux donner à la variable title la valeur "Valeur" en français et "Value" en anglais, pour ensuite ré-utiliser title comme une variable (je suppose que ça un quelconque intérêt sinon ça ne serait pas la... ), ben c'est logiquement ça que je ferais. Il faudrait donc éventuellement gérer cette exception. | ||||||
gaga26 |
Posté le 02/12/2008 17:42 - # | ||||||
|
813 messages 19 ans |
Ben, pour l'afficher, il suffit de faire _(cle), ça n'a aucune utilité. Sinon, il est vrai que créer une variable unique indiquant la langue (exemple, en) pour d'éventuelles conditions et une idée. Est-ce cela à que tu voulais dire ? |
||||||
Warshadow |
Posté le 02/12/2008 17:58 - # | ||||||
|
Membre 68 messages 22 ans |
En fait... J'ai pas comprit à quoi servait <var name="titre"> ...
|
||||||
gaga26 |
Posté le 02/12/2008 18:05 - # | ||||||
|
813 messages 19 ans |
Content de voir que tu as été fouiller dans le code, car en effet les balises templates ne sont pas documenté (je me demande si j'arriverais faire ça avec doxygen, ça pourrait être pratique. Cette balise sert à déclarer une variable directement depuis le template <var name="tplVersion">2</var> <if cond="$tplVersion !=1">On a dépassé la version 1. </if> Nous somme actuellement à la version ::version:: de ce fichier template. Pour la variable, je vais créer la variable $GG_langage. Edité par gaga26 le 02/12/2008 18:07 |
||||||
Warshadow |
Posté le 02/12/2008 19:24 - # | ||||||
|
Membre 68 messages 22 ans |
Ok, merci pour les éclaircissements. C'est ce que j'avais comprit au début, sauf que je disais de la merde... Bref, aucun intérêt à faire ce que j'ai montré... ^^ Bon je relance une séance de tests dès que tu as corrigé le problème des index dans les fichiers de langue, et j'essaye d'appliquer ça sur mon site perso. Ah et il faudrait aussi que ajoutes la compatibilité avec {var} aussi s'il te plait !!!
|
||||||
gaga26 |
Posté le 02/12/2008 21:07 - # | ||||||
|
813 messages 19 ans |
Gagatemplate 5.0 RC3 is out
|
||||||
Warshadow |
Posté le 03/12/2008 16:05 - # | ||||||
|
Membre 68 messages 22 ans |
J'ai commencé à faire la transition 4.2 => 5.0 RC3 sur mon site perso... Première constatation, les {var} ne sont pas supportés ! :'( Deuxième chose, quand je change dans mon code le contenu de la variable tplDir, ça ne change rien... Alors qu'en mettant le chemin directement dans le code de gaga.class.php, ça marche... // Dans mon index.php $Tpl->tplDir = "templates/default/"; // Ne change rien, il cherche dans templates/ // Dans gaga.class.php protected $_tplDir = 'templates/default/'; // Ca ça marche... Dès que ces deux problèmes sont corrigés, je traduit mon site...
|
||||||
Vous devez être inscrit et connecté pour pouvoir écrire dans les forums
Retour au forum Suggestions, à la liste des forums, ou au haut de page


