Gettext (quels sont les principes techniques) ?

Le
Jean-Charles Gibier
Bonjour,
Un poil HS mais également plein d'intérêt,
Je cherche à savoir comment fonctionne le module gettext pour indexer ses
messages via les fichiers mo
En fait après avoir fait le travail d'extraction, je m'inquiète un peu de
voir des chaines interminables passées en paramètres et je me demande
comment cela ne pourrait pas nuire aux performances du script.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice Karatchentzeff
Le #17434341
"Jean-Charles Gibier"
Bonjour,
Un poil HS mais également plein d'intérêt,
Je cherche à savoir comment fonctionne le module gettext pour indexer ses
messages via les fichiers mo
En fait après avoir fait le travail d'extraction, je m'inquiète un peu de
voir des chaines interminables passées en paramètres et je me demande
comment cela ne pourrait pas nuire aux performances du script.



Je ne comprends pas bien ce que tu décris : comme tous les scripts
Perl, le programme est compilé à la volé et c'est à ce moment-là que
les .mo sont liés dans le programme...

Techniquement parlant, ça doit être un peu plus coûteux mais sans
plus...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       
Jean-Charles Gibier
Le #17434711
"Patrice Karatchentzeff" de news:
"Jean-Charles Gibier"
Bonjour,
Un poil HS mais également plein d'intérêt,
Je cherche à savoir comment fonctionne le module gettext pour indexer ses
messages via les fichiers mo
En fait après avoir fait le travail d'extraction, je m'inquiète un peu de
voir des chaines interminables passées en paramètres et je me demande
comment cela ne pourrait pas nuire aux performances du script.



Je ne comprends pas bien ce que tu décris : comme tous les scripts
Perl, le programme est compilé à la volé et c'est à ce moment-là que
les .mo sont liés dans le programme...

Techniquement parlant, ça doit être un peu plus coûteux mais sans
plus...




En fait c'est le "un peu plus" que je voudrais évaluer.
Des tests de performances ont déjà été faits sur le produit sur lequel je
travaille et celui ci est assez verbeux, ça pourrait remettre certaines
clauses en cause.
Du coup lorsque je considère les milliers de lignes du genre ->
gettex("'Voulez-vous vraiment supprimer le fichier ressource du repertoire
...etc.'");
je pense que le temps de réponse doit forcemment être plus long que de
simples ->
gettex(3980);

Mais peut être me trompe-je ?
Je souhaite donc juste être détrompé :-)
Nicolas George
Le #17434701
"Jean-Charles Gibier" wrote in message
Je cherche à savoir comment fonctionne le module gettext pour indexer ses
messages via les fichiers mo



C'est essentiellement une table de hashage de correspondance entre texte VO
et texte traduit.

En fait après avoir fait le travail d'extraction, je m'inquiète un peu de
voir des chaines interminables passées en paramètres et je me demande
comment cela ne pourrait pas nuire aux performances du script.



Tout simplement parce que ce n'est pas sur le chemin critique. On traduit
avec l'architecture gettext les messages issus du programme et de ses
bibliothèques, pas les données que le programme manipule. Si le programme
travaille beaucoup, ça représente normalement une proportion négligeable de
ce qu'il fait.

On peut voir ça autrement : normalement, ce qui est traduit est destiné
directement à l'utilisateur, jamais à un traitement automatisé. Dans ce cas,
il va falloir l'afficher, ce texte. Ce qui veut dire qu'après être passé
dans gettext, il va probablement devoir passer dans Fretype et le serveur
X11. À côté, gettext, c'est négligeable.
Jean-Charles Gibier
Le #17434691
"Nicolas George" news: 48e9dffd$0$7215$
"Jean-Charles Gibier" wrote in message
Je cherche à savoir comment fonctionne le module gettext pour indexer ses
messages via les fichiers mo



C'est essentiellement une table de hashage de correspondance entre texte
VO
et texte traduit.

En fait après avoir fait le travail d'extraction, je m'inquiète un peu de
voir des chaines interminables passées en paramètres et je me demande
comment cela ne pourrait pas nuire aux performances du script.



Tout simplement parce que ce n'est pas sur le chemin critique. On traduit
avec l'architecture gettext les messages issus du programme et de ses
bibliothèques, pas les données que le programme manipule. Si le programme
travaille beaucoup, ça représente normalement une proportion négligeable
de
ce qu'il fait.

On peut voir ça autrement : normalement, ce qui est traduit est destiné
directement à l'utilisateur, jamais à un traitement automatisé. Dans ce
cas,
il va falloir l'afficher, ce texte. Ce qui veut dire qu'après être passé
dans gettext, il va probablement devoir passer dans Fretype et le serveur
X11. À côté, gettext, c'est négligeable.



Ok merci, c'est l' explication que j'attendais (celle qui rend confiant ;-).
Les tests de performance vont être rejoués je verrais à ce moment
concrètement la latence induite.
Paul Gaborit
Le #17435591
À (at) Mon, 6 Oct 2008 11:49:32 +0200,
"Jean-Charles Gibier"
Du coup lorsque je considère les milliers de lignes du genre ->
gettex("'Voulez-vous vraiment supprimer le fichier ressource du repertoire
...etc.'");
je pense que le temps de réponse doit forcemment être plus long que de
simples ->
gettex(3980);

Mais peut être me trompe-je ?



Oui.

La recherche se fait dans une table de hachage : le temps de réponse
est indépendant da la taille de la clé (sauf la première fois qu'on
voit cette clé).

--
Paul Gaborit - Perl en français -
Jean-Charles Gibier
Le #17435581
"Paul Gaborit" news:

À (at) Mon, 6 Oct 2008 11:49:32 +0200,
"Jean-Charles Gibier" (wrote):
Du coup lorsque je considère les milliers de lignes du genre ->
gettex("'Voulez-vous vraiment supprimer le fichier ressource du
repertoire
...etc.'");
je pense que le temps de réponse doit forcemment être plus long que de
simples ->
gettex(3980);

Mais peut être me trompe-je ?



Oui.

La recherche se fait dans une table de hachage : le temps de réponse
est indépendant da la taille de la clé (sauf la première fois qu'on
voit cette clé).




Ok
Je pinaille mais sachant qu'une bonne partie de l'internationalisation porte
sur des services web, et que la traduction sera faite à chaque requête au
serveur, est ce que la méthode reste indiquée dans ce cas précis ?
Nicolas George
Le #17435871
Paul Gaborit wrote in message
La recherche se fait dans une table de hachage : le temps de réponse
est indépendant da la taille de la clé (sauf la première fois qu'on
voit cette clé).



Euh, allô ? Pour faire marcher une table de hachage, il faut une fonction de
hachage. Et une fonction de hachage qui ne lit pas la totalité de la clef
(donc temps au moins proportionnel à la longueur), c'est franchement pas
terrible.
espie
Le #17436511
In article Jean-Charles Gibier
En fait c'est le "un peu plus" que je voudrais évaluer.
Des tests de performances ont déjà été faits sur le produit sur lequel je
travaille et celui ci est assez verbeux, ça pourrait remettre certaines
clauses en cause.
Du coup lorsque je considère les milliers de lignes du genre ->
gettex("'Voulez-vous vraiment supprimer le fichier ressource du repertoire
...etc.'");
je pense que le temps de réponse doit forcemment être plus long que de
simples ->
gettex(3980);



Pas forcement extremement plus long.

Si ca commence a devenir genant, il y a sans doute moyen de bricoler un
pre-compilo en utilisant B (pour une fois que ca servirait a quelque chose).

Faudrait demander aux gens de Mason ce qu'ils en pensent... apres tout,
cote efficacite et cache de composants, ca fonctionne quand meme du feu de
dieu.
Paul Gaborit
Le #17438251
À (at) 06 Oct 2008 12:22:30 GMT,
Nicolas George
Paul Gaborit wrote in message
La recherche se fait dans une table de hachage : le temps de réponse
est indépendant da la taille de la clé (sauf la première fois qu'on
voit cette clé).



Euh, allô ? Pour faire marcher une table de hachage, il faut une fonction de
hachage. Et une fonction de hachage qui ne lit pas la totalité de la clef
(donc temps au moins proportionnel à la longueur), c'est franchement pas
terrible.



Oui, allo ! As-tu lu ce que j'ai dit ? La première fois qu'on lit la
clé, la fonction de hachage est appliquée (là, c'est proportionnelle à
la taille de la clé). Ensuite, le temps de réponse lors de l'accès aux
valeurs associées à cette clé est indépendant puisque le résultat de
la fonction de hachage est stocké.

--
Paul Gaborit - Perl en français -
Paul Gaborit
Le #17438421
À (at) Mon, 6 Oct 2008 13:47:31 +0200,
"Jean-Charles Gibier"
Ok
Je pinaille mais sachant qu'une bonne partie de l'internationalisation porte
sur des services web, et que la traduction sera faite à chaque requête au
serveur, est ce que la méthode reste indiquée dans ce cas précis ?



Si vous ré-exécutez le script à chaqe fois (CGI classique), oui ! Tout
est recompilé à chaque requête.

Mais si vous en êtes à grapiller ce genre de pouillièmes, passez en
FCGI ou en mod_perl et vous n'aurez plus ce souci.

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme