Talk:Main Page: Difference between revisions

From Documentation de la solution web de gestion OpenFlyers
Jump to navigation Jump to search
imported>Claratte
No edit summary
imported>Zebuline
No edit summary
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
''Cette page de discussion peut être l'équivalent du "bar du coin" ou on parle des choses en général.''
''Cette page de discussion peut être l'équivalent du "bar du coin" on parle des choses en général.''


==Multilanguisme & xml/xsl==
==Multilinguisme & xml/xsl==
Plusieurs possibilités s'offrent à nous sur la façon de "moderniser" l'implémentation existante dans la version 1.2 d'OF du mulilanguisme.
Plusieurs possibilités s'offrent à nous sur la façon de "moderniser" l'implémentation existante dans la version 1.2 d'OF du multilinguisme.


===But===
===But===
Actuellement le multilinguisme est gere par des fichiers langues sur le modele :
Actuellement le multilinguisme est géré par des fichiers langues sur le modèle :
  $lang['ITEM'] = 'traduction dans une langue';
  $lang['ITEM'] = 'traduction dans une langue';


Cette methode a plusieurs inconvenients :
Cette méthode a plusieurs inconvénients :
*elle ne permet pas de voir si un item a une traduction dans une langue ou non (il faut ouvrir le fichier de la langue concernee et rechercher l'item). Cela rend les mises a jour tres lourdes.
*elle ne permet pas de voir si un item a une traduction dans une langue ou non (il faut ouvrir le fichier de la langue concernée et rechercher l'item). Cela rend les mises à jour très lourdes.
*cela ne permet pas de trouver les "items morts", c'est a dire les items qui devraient etre supprimes.
*cela ne permet pas de trouver les "items morts", c'est à dire les items qui devraient être supprimés.
*au fil du temps, les fichiers s'ettoffent et il n'y a pas de hierarchisation de l'information. Le parcours en devient difficile.
*au fil du temps, les fichiers s'étoffent et il n'y a pas de hiérarchisation de l'information. Le parcours en devient difficile.
Pour resumer ces points :
Pour résumer ces points :
  la methode actuelle empeche la creation d'une interface de gestion facilitant la vie des traducteurs
  la méthode actuelle empêche la création d'une interface de gestion facilitant la vie des traducteurs.
Un dernier inconvenient :
Un dernier inconvénient :
*il n'y a pas possibilite d'avoir dynamiquement la traduction d'un item dans plusieurs langues. Une fois qu'un fichier langue est ouvert on n'utilise que celui-la.
*il n'y a pas possibilité d'avoir dynamiquement la traduction d'un item dans plusieurs langues. Une fois qu'un fichier langue est ouvert on n'utilise que celui-.
===Tout d'abord, il y a deux méthodes de stockage des traductions :===
===Tout d'abord, il y a deux méthodes de stockage des traductions :===
*par base de données (dans ce cas on se tournerait vers la classe Translation2)
*par base de données (dans ce cas on se tournerait vers la classe Translation2)
Line 21: Line 21:


Mon avis :  
Mon avis :  
la base de donnée n'est pas adapté : les données sont statiques, et la base de données c'est trop lent (on va pas faire 40 requetes par page).
la base de donnée n'est pas adaptée : les données sont statiques, et la base de données c'est trop lent (on ne va pas faire 40 requêtes par page).
xml : soit on parse à chauqe fois le fichier pour trouver la traduction (trop lent), soit on le parse une fois et on le met en mémoire (et donc, autant utiliser un fichier type .ini avec identifiant=valeur, c'est plus léger)
xml : soit on parse à chaque fois le fichier pour trouver la traduction (trop lent), soit on le parse une fois et on le met en mémoire (et donc, autant utiliser un fichier type .ini avec identifiant=valeur, c'est plus léger)
--[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:29 (CET)
--[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:29 (CET)


le fichier .ini c'est ce qu'on fait aujourd'hui. J'en presente les inconvenients dans les buts recherches ci-dessus. (mais peut-etre que je n'ai pas tout compris sur ce qu'on pouvait faire avec les fichiers .ini--[[Utilisateur:Claratte|Christophe]] 3 Nov 2005 à 23:40 (CET)
le fichier .ini c'est ce qu'on fait aujourd'hui. J'en présente les inconvénients dans les buts recherchés ci-dessus. (mais peut-être que je n'ai pas tout compris sur ce qu'on pouvait faire avec les fichiers .ini--[[Utilisateur:Claratte|Christophe]] 3 Nov 2005 à 23:40 (CET)


===Ensuite, vient la méthode de conversion de la feuille xsl :===
===Ensuite, vient la méthode de conversion de la feuille xsl :===
Line 40: Line 40:
*soit  on  effectue la transformation du xml via la feuille de style "générique",  on obtient alors une sortie presque-html avec les <text> puis on les remplace par la langue finale.
*soit  on  effectue la transformation du xml via la feuille de style "générique",  on obtient alors une sortie presque-html avec les <text> puis on les remplace par la langue finale.


Intérêt  de la première méthode : on peut mettre en cache nos feuilles de  styles adaptées à chaque langue, sachant que les modifications sur les langues ne doivent pas apparaitre dans une version stable d'OF.
Intérêt  de la première méthode : on peut mettre en cache nos feuilles de  styles adaptées à chaque langue, sachant que les modifications sur les langues ne doivent pas apparaître dans une version stable d'OF.


Intérêt de la seconde méthode : elle me parait plus simple...
Intérêt de la seconde méthode : elle me paraît plus simple...


Ça me parait assez lourd comme approche --[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:30 (CET)
Ça me paraît assez lourd comme approche --[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:30 (CET)


===Dernier point : mappage xml/base de données===
===Dernier point : mappage xml/base de données===
Dans  translation2,  les  textes sont référencés selon 2 éléments (cf. [[Translation_Table]]) : un id qui "nomme" le texte et un page_id.  Ainsi on peut avoir deux ids identiques mais sur des pages différentes. D'ou ma question : comment en verriez-vous l'utilisation concrète ? (quelles règles on se fixe ?)
Dans  translation2,  les  textes sont référencés selon 2 éléments (cf. [[Translation_Table]]) : un id qui "nomme" le texte et un page_id.  Ainsi on peut avoir deux ids identiques mais sur des pages différentes. D'ma question : comment en verriez-vous l'utilisation concrète ? (quelles règles on se fixe ?)


Je  vous propose la suivante, on fait un "mappage" base de données/xml ainsi :
Je  vous propose la suivante, on fait un "mappage" base de données/xml ainsi :
Line 65: Line 65:
Inconvénient : faut ré-écrire pour chaque page des mots identiques
Inconvénient : faut ré-écrire pour chaque page des mots identiques


J'attend vos avis ;-)
J'attends vos avis ;-)
--[[Utilisateur:Claratte|Christophe]] 30 Sep 2005 à 01:47 (CEST)
--[[Utilisateur:Claratte|Christophe]] 30 Sep 2005 à 01:47 (CEST)


Line 78: Line 78:
tr('hi') -> salut  (tr comme translate)
tr('hi') -> salut  (tr comme translate)


Après derrière, on peut coder nos fonctions à nous utiliser une classe PEAR comme Translation2.
Après derrière, on peut coder nos fonctions à nous ou utiliser une classe PEAR comme Translation2.


La question est : comment on stocke les données ?
La question est : comment on stocke les données ?
* en xml (qd on choisit la langue, on stocke les traductions en mémoire)
* en xml (quand on choisit la langue, on stocke les traductions en mémoire)
* ds un fichier .ini (même remarque)
* ds un fichier .ini (même remarque)
* en base de données (lent, pas adapté)
* en base de données (lent, pas adapté)
Line 88: Line 88:
--[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:40 (CET)
--[[Utilisateur:KAeL|KAeL]] 3 Nov 2005 à 14:40 (CET)


Pour le stockage des données de traductions, il y a sqlite, c'est la bdd integrée a php5, pour les perf je vous revois sur leur site [http://www.sqlite.org/speed.html perf]
Pour le stockage des données de traductions, il y a sqlite, c'est la bdd intégrée à php5, pour les perf je vous renvoie sur leur site [http://www.sqlite.org/speed.html perf]


Concernant gettext, je trouve ca par mal comme solution, c'est pas apache/php qui travaille, c'est gettext qui redirige vers la bonnes traduction, et vu qu'il est fait pour, il est surement plus optimisé que d'envoyer php a la recherche de traduc dans une bdd.
Concernant gettext, je trouve ça par mal comme solution, c'est pas apache/php qui travaille, c'est gettext qui redirige vers la bonnes traduction, et vu qu'il est fait pour, il est sûrement plus optimisé que d'envoyer php à la recherche de traduc dans une bdd.


De plus il existe des logiciels pour editer les fichiers de langues, c'est plus digeste que d'éditer les fichiers textes a la main
De plus il existe des logiciels pour éditer les fichiers de langues, c'est plus digeste que d'éditer les fichiers textes à la main.
   
   


Line 100: Line 100:
--[[Utilisateur:Scroses|Scroses]] 3 Nov 2005 à 20:05 (CET)
--[[Utilisateur:Scroses|Scroses]] 3 Nov 2005 à 20:05 (CET)


(Pense a rajouter ta signature (avant derniere icone dans le formulaire d'edition), sinon on a du mal a suivre qui dit quoi)
(Pense à rajouter ta signature (avant dernière icône dans le formulaire d'édition), sinon on a du mal à suivre qui dit quoi)


Merci pour le lien sur le journal du net, parce que l'introduction de gettext m'a laisse perplexe...
Merci pour le lien sur le journal du net, parce que l'introduction de gettext m'a laissé perplexe...


Concernant sqlite, y'a pas plus de raison de l'utiliser comme base de donnes pour les traductions que pour le reste...
Concernant sqlite, y'a pas plus de raison de l'utiliser comme base de données pour les traductions que pour le reste...


Sinon pour gettext, je ne suis pas contre a priori mais je lui vois trois inconvenients :
Sinon pour gettext, je ne suis pas contre a priori mais je lui vois trois inconvénients :
*il faut qu'il soit present sur le serveur
*il faut qu'il soit present sur le serveur.
*les outils sont plutot pour le monde linux alors que le but est de faire une interface de gestion accessible pour le commun des mortels
*les outils sont plutôt pour le monde linux alors que le but est de faire une interface de gestion accessible pour le commun des mortels.
*j'ai pas bien compris si les outils devaient etre sur le serveur ou si on pouvait editer les fichiers n'importe ou... (et j'ai cru comprendre qu'il fallait compiler les fichiers langues, ce qui est plutot lourd)
*je n'ai pas bien compris si les outils devaient être sur le serveur ou si on pouvait éditer les fichiers n'importe ... (et j'ai cru comprendre qu'il fallait compiler les fichiers langues, ce qui est plutôt lourd)
--[[Utilisateur:Claratte|Christophe]] 3 Nov 2005 à 23:53 (CET)
--[[Utilisateur:Claratte|Christophe]] 3 Nov 2005 à 23:53 (CET)




Les outils doivent etre sur le serveur, gettext fait parti des outils installés par defaut sur les distribs linux, apres il fatu savoir si les hebergeurs ont desactives l'options lors de l'installation, pour le savoir, il faut relire le phpinfo() du serveur.
Les outils doivent être sur le serveur, gettext fait partie des outils installés par défaut sur les distribs linux, après il faut savoir si les hébergeurs ont désactivé l'option lors de l'installation, pour le savoir, il faut relire le phpinfo() du serveur.
Pour les serveurs wamp ou easyphp, il faut aller decomenter php_gettext.dll dans php.ini
Pour les serveurs wamp ou easyphp, il faut aller décommenter php_gettext.dll dans php.ini.


Meme si les outils sont issus du monde linux (comme apache par ex :-) ca ne concerne que le serveur et pas les utilisateurs finaux devant leur pc
Même si les outils sont issus du monde linux (comme apache par ex :-) ça ne concerne que le serveur et pas les utilisateurs finaux devant leur pc.


pour l'histoire de la compilation des fichiers de langue, pour moi non plus c'est pas tres clair...Je creuse la question
pour l'histoire de la compilation des fichiers de langue, pour moi non plus ce n'est pas très clair...Je creuse la question.


ps j'ai quelques pour signer...
ps j'ai quelques pour signer...
Line 124: Line 124:
--[[Utilisateur:Scroses|Scroses]]
--[[Utilisateur:Scroses|Scroses]]


Bon j'ai fais quelques recherches, en fait quand ils parlent de compilation, c'est en fait la fabrication a partir du fichier de traduction *.po du fichier catalogue *.mo. Des scripts php peuvent faire ca, mais des logiciels de traduction comme [http://www.poedit.org/index.php poedit] les generent automatiquement.
Bon j'ai fait quelques recherches, en fait quand ils parlent de compilation, c'est en fait la fabrication à partir du fichier de traduction *.po du fichier catalogue *.mo. Des scripts php peuvent faire ça, mais des logiciels de traduction comme [http://www.poedit.org/index.php poedit] les génèrent automatiquement.


J'ai meme vu des application php de traductions
J'ai même vu des application php de traduction.


--Utopie 4 Nov 2005 à 10:07 (CET)
--Utopie 4 Nov 2005 à 10:07 (CET)

Latest revision as of 14:50, 5 April 2006

Cette page de discussion peut être l'équivalent du "bar du coin" où on parle des choses en général.

Multilinguisme & xml/xsl

Plusieurs possibilités s'offrent à nous sur la façon de "moderniser" l'implémentation existante dans la version 1.2 d'OF du multilinguisme.

But

Actuellement le multilinguisme est géré par des fichiers langues sur le modèle :

$lang['ITEM'] = 'traduction dans une langue';

Cette méthode a plusieurs inconvénients :

  • elle ne permet pas de voir si un item a une traduction dans une langue ou non (il faut ouvrir le fichier de la langue concernée et rechercher l'item). Cela rend les mises à jour très lourdes.
  • cela ne permet pas de trouver les "items morts", c'est à dire les items qui devraient être supprimés.
  • au fil du temps, les fichiers s'étoffent et il n'y a pas de hiérarchisation de l'information. Le parcours en devient difficile.

Pour résumer ces points :

la méthode actuelle empêche la création d'une interface de gestion facilitant la vie des traducteurs.

Un dernier inconvénient :

  • il n'y a pas possibilité d'avoir dynamiquement la traduction d'un item dans plusieurs langues. Une fois qu'un fichier langue est ouvert on n'utilise que celui-là.

Tout d'abord, il y a deux méthodes de stockage des traductions :

  • par base de données (dans ce cas on se tournerait vers la classe Translation2)
  • en mettant les textes dans du xml. Mais on perd en facilité de maintenance, ou alors on crée (ou on trouve) une classe qui gère ça.

Mon avis : la base de donnée n'est pas adaptée : les données sont statiques, et la base de données c'est trop lent (on ne va pas faire 40 requêtes par page). xml : soit on parse à chaque fois le fichier pour trouver la traduction (trop lent), soit on le parse une fois et on le met en mémoire (et donc, autant utiliser un fichier type .ini avec identifiant=valeur, c'est plus léger) --KAeL 3 Nov 2005 à 14:29 (CET)

le fichier .ini c'est ce qu'on fait aujourd'hui. J'en présente les inconvénients dans les buts recherchés ci-dessus. (mais peut-être que je n'ai pas tout compris sur ce qu'on pouvait faire avec les fichiers .ini--Christophe 3 Nov 2005 à 23:40 (CET)

Ensuite, vient la méthode de conversion de la feuille xsl :

Dans les deux cas, on part d'une feuille xsl qui va contenir des balises <text> définissant le texte à remplacer dans la bonne langue par exemple :

<b><center>
        <text>aircraft list</text>
        <xsl:value-of select="registration"/>
 </center></b>

On a donc deux choix :

  • soit on effectue la transformation du <text>aircraft list</text> en premier puis on obtient une deuxième feuille XSL (en fait la même que celle de Joël)
  • soit on effectue la transformation du xml via la feuille de style "générique", on obtient alors une sortie presque-html avec les <text> puis on les remplace par la langue finale.

Intérêt de la première méthode : on peut mettre en cache nos feuilles de styles adaptées à chaque langue, sachant que les modifications sur les langues ne doivent pas apparaître dans une version stable d'OF.

Intérêt de la seconde méthode : elle me paraît plus simple...

Ça me paraît assez lourd comme approche --KAeL 3 Nov 2005 à 14:30 (CET)

Dernier point : mappage xml/base de données

Dans translation2, les textes sont référencés selon 2 éléments (cf. Translation_Table) : un id qui "nomme" le texte et un page_id. Ainsi on peut avoir deux ids identiques mais sur des pages différentes. D'où ma question : comment en verriez-vous l'utilisation concrète ? (quelles règles on se fixe ?)

Je vous propose la suivante, on fait un "mappage" base de données/xml ainsi :

<text page="admin">aircraft list</text>

avec le contenu élément de text qui correspond à l'id de la base de données et l'attribut page qui correspond au page_id.

Avantage : on peut définir une page générique (champ page_id vide dans la base et sans attribut page sur le xml) qui contient les intitulés qui reviennent le plus souvent (comme "valider", "annuler", etc.)

Inconvénient : la présence très fréquente de l'attribut page qui n'apporte pas grand chose.

Une autre méthode : on ne met pas d'attribut page, et pour faire la relation on utilise le nom de la feuille xsl comme page_id.

Avantage : c'est plus léger pour la page xsl

Inconvénient : faut ré-écrire pour chaque page des mots identiques

J'attends vos avis ;-) --Christophe 30 Sep 2005 à 01:47 (CEST)

pareil qu'avant, je ne pense pas que ni xml ni une base de données ne soient les plus adaptés à la situation --KAeL 3 Nov 2005 à 14:32 (CET)

Dans tous les cas

Je pense que dans tous les cas, on devrait commencer par se faire une classe OfTranslator avec qq méthodes génériques : setLang('fr') getLang() -> renvoie 'fr' getAvailableLangs() -> renvoie array('fr', 'en', ...) tr('hi') -> salut (tr comme translate)

Après derrière, on peut coder nos fonctions à nous ou utiliser une classe PEAR comme Translation2.

La question est : comment on stocke les données ?

  • en xml (quand on choisit la langue, on stocke les traductions en mémoire)
  • ds un fichier .ini (même remarque)
  • en base de données (lent, pas adapté)
  • en utilisant gettext (des infos ici : GNU gettext) (supporté par Translation2)

--KAeL 3 Nov 2005 à 14:40 (CET)

Pour le stockage des données de traductions, il y a sqlite, c'est la bdd intégrée à php5, pour les perf je vous renvoie sur leur site perf

Concernant gettext, je trouve ça par mal comme solution, c'est pas apache/php qui travaille, c'est gettext qui redirige vers la bonnes traduction, et vu qu'il est fait pour, il est sûrement plus optimisé que d'envoyer php à la recherche de traduc dans une bdd.

De plus il existe des logiciels pour éditer les fichiers de langues, c'est plus digeste que d'éditer les fichiers textes à la main.


Une explication de l'utilisation de gettext sur le journal du net

Je vote pour gettext !! --Scroses 3 Nov 2005 à 20:05 (CET)

(Pense à rajouter ta signature (avant dernière icône dans le formulaire d'édition), sinon on a du mal à suivre qui dit quoi)

Merci pour le lien sur le journal du net, parce que l'introduction de gettext m'a laissé perplexe...

Concernant sqlite, y'a pas plus de raison de l'utiliser comme base de données pour les traductions que pour le reste...

Sinon pour gettext, je ne suis pas contre a priori mais je lui vois trois inconvénients :

  • il faut qu'il soit present sur le serveur.
  • les outils sont plutôt pour le monde linux alors que le but est de faire une interface de gestion accessible pour le commun des mortels.
  • je n'ai pas bien compris si les outils devaient être sur le serveur ou si on pouvait éditer les fichiers n'importe où... (et j'ai cru comprendre qu'il fallait compiler les fichiers langues, ce qui est plutôt lourd)

--Christophe 3 Nov 2005 à 23:53 (CET)


Les outils doivent être sur le serveur, gettext fait partie des outils installés par défaut sur les distribs linux, après il faut savoir si les hébergeurs ont désactivé l'option lors de l'installation, pour le savoir, il faut relire le phpinfo() du serveur. Pour les serveurs wamp ou easyphp, il faut aller décommenter php_gettext.dll dans php.ini.

Même si les outils sont issus du monde linux (comme apache par ex :-) ça ne concerne que le serveur et pas les utilisateurs finaux devant leur pc.

pour l'histoire de la compilation des fichiers de langue, pour moi non plus ce n'est pas très clair...Je creuse la question.

ps j'ai quelques pour signer...

--Scroses

Bon j'ai fait quelques recherches, en fait quand ils parlent de compilation, c'est en fait la fabrication à partir du fichier de traduction *.po du fichier catalogue *.mo. Des scripts php peuvent faire ça, mais des logiciels de traduction comme poedit les génèrent automatiquement.

J'ai même vu des application php de traduction.

--Utopie 4 Nov 2005 à 10:07 (CET)