Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gettext (quels sont les principes techniques) ?

23 réponses
Avatar
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.

10 réponses

1 2 3
Avatar
Patrice Karatchentzeff
"Jean-Charles Gibier" a écrit :

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
    '---''(_/--'  `-'_)       
Avatar
Jean-Charles Gibier
"Patrice Karatchentzeff" a écrit dans le message
de news:
"Jean-Charles Gibier" a écrit :

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é :-)
Avatar
Nicolas George
"Jean-Charles Gibier" wrote in message
<48e9d59c$0$30691$:
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.
Avatar
Jean-Charles Gibier
"Nicolas George" <nicolas$ a écrit dans le message de
news: 48e9dffd$0$7215$
"Jean-Charles Gibier" wrote in message
<48e9d59c$0$30691$:
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.
Avatar
Paul Gaborit
À (at) Mon, 6 Oct 2008 11:49:32 +0200,
"Jean-Charles Gibier" écrivait (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é).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Jean-Charles Gibier
"Paul Gaborit" a écrit dans le message de
news:

À (at) Mon, 6 Oct 2008 11:49:32 +0200,
"Jean-Charles Gibier" écrivait
(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 ?
Avatar
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.
Avatar
espie
In article <48e9df88$0$8957$,
Jean-Charles Gibier wrote:

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.
Avatar
Paul Gaborit
À (at) 06 Oct 2008 12:22:30 GMT,
Nicolas George <nicolas$ écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Paul Gaborit
À (at) Mon, 6 Oct 2008 13:47:31 +0200,
"Jean-Charles Gibier" écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
1 2 3