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.
"Patrice Karatchentzeff" a écrit dans le message de news:
"Jean-Charles Gibier" a écrit :
[...]
Dans l'option gettext on ne peut pas employer ce genre de construction : print gettext("Le fichier : $nom_fichier est ouvert.n"); On est obligé de faire soit ceci : print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n"; Soit ceci : print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
<HS> La première solution n'est évidemment pas recommandable. La forme du langage étant spécifique à chaque langue, il faut laisser le maximum de libertés aux traducteurs pour remettre les mots à leur place. </HS>
Oui. La deuxieme pose aussi ses problèmes comme le suggérait Paul Gaborit, selon les langues l'ordonnancement des attributs ou des verbes est différent.
"Patrice Karatchentzeff" <p.karatchentzeff@free.fr> a écrit dans le message
de news: 87r66sfrbz.fsf@belledonne.chartreuse.fr...
"Jean-Charles Gibier" <jeancharles__and__g@free.fr.invalid> a écrit :
[...]
Dans l'option gettext on ne peut pas employer ce genre de construction
:
print gettext("Le fichier : $nom_fichier est ouvert.n");
On est obligé de faire soit ceci :
print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n";
Soit ceci :
print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
<HS>
La première solution n'est évidemment pas recommandable. La forme du
langage étant spécifique à chaque langue, il faut laisser le maximum
de libertés aux traducteurs pour remettre les mots à leur place.
</HS>
Oui.
La deuxieme pose aussi ses problèmes comme le suggérait Paul Gaborit, selon
les langues
l'ordonnancement des attributs ou des verbes est différent.
"Patrice Karatchentzeff" a écrit dans le message de news:
"Jean-Charles Gibier" a écrit :
[...]
Dans l'option gettext on ne peut pas employer ce genre de construction : print gettext("Le fichier : $nom_fichier est ouvert.n"); On est obligé de faire soit ceci : print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n"; Soit ceci : print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
<HS> La première solution n'est évidemment pas recommandable. La forme du langage étant spécifique à chaque langue, il faut laisser le maximum de libertés aux traducteurs pour remettre les mots à leur place. </HS>
Oui. La deuxieme pose aussi ses problèmes comme le suggérait Paul Gaborit, selon les langues l'ordonnancement des attributs ou des verbes est différent.
Jean-Charles Gibier
"Paul Gaborit" a écrit dans le message de news:
À (at) Tue, 7 Oct 2008 14:44:08 +0200, "Jean-Charles Gibier" écrivait (wrote):
Ce n'est pas vraiment capital mais c'est le problème posé par le présence des paramètres. Dans l'option gettext on ne peut pas employer ce genre de construction : print gettext("Le fichier : $nom_fichier est ouvert.n"); On est obligé de faire soit ceci : print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n"; Soit ceci : print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
Ce qui n'est pas tres pratique lorsqu'on est en phase d'extraction des chaines. Donc s'il ya une autre méthode je suis preneur.
C'est un peu la même chose dans Locale::MakeText. Mais la syntaxe est différente :
print maketext("Le fichier : [_1] est ouvert.n"), $nom_fichier);
Ça permet de changer l'ordre d'apparition, de prévoir une éventuelle fonction de traitement pour les cas compliqués, ça permet aussi de vérifier qu'on n'oublie aucun argument...
Mais ça ne résoud pas votre problème : il faut quand même explorer tout le code pour extraire les chaînes à traduire.
Ok ça va, ça fait une semaine que je peaufine mes outils.
En fait, c'est assez fastidieux. Et c'est en général à ce moment-là qu'on se dit que la prochaine fois, on prévoira de faire l'I18N dès de le départ ! ;-)
Oui enfin, si on est à l'origine du chantier :-)
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: wt963o4o75i.fsf@marceau.enstimac.fr...
À (at) Tue, 7 Oct 2008 14:44:08 +0200,
"Jean-Charles Gibier" <jeancharles__and__g@free.fr.invalid> écrivait
(wrote):
Ce n'est pas vraiment capital mais c'est le problème posé par le présence
des paramètres.
Dans l'option gettext on ne peut pas employer ce genre de construction
:
print gettext("Le fichier : $nom_fichier est ouvert.n");
On est obligé de faire soit ceci :
print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n";
Soit ceci :
print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
Ce qui n'est pas tres pratique lorsqu'on est en phase d'extraction des
chaines.
Donc s'il ya une autre méthode je suis preneur.
C'est un peu la même chose dans Locale::MakeText. Mais la syntaxe est
différente :
print maketext("Le fichier : [_1] est ouvert.n"), $nom_fichier);
Ça permet de changer l'ordre d'apparition, de prévoir une éventuelle
fonction de traitement pour les cas compliqués, ça permet aussi de
vérifier qu'on n'oublie aucun argument...
Mais ça ne résoud pas votre problème : il faut quand même explorer
tout le code pour extraire les chaînes à traduire.
Ok ça va, ça fait une semaine que je peaufine mes outils.
En fait, c'est
assez fastidieux. Et c'est en général à ce moment-là qu'on se dit que
la prochaine fois, on prévoira de faire l'I18N dès de le départ ! ;-)
À (at) Tue, 7 Oct 2008 14:44:08 +0200, "Jean-Charles Gibier" écrivait (wrote):
Ce n'est pas vraiment capital mais c'est le problème posé par le présence des paramètres. Dans l'option gettext on ne peut pas employer ce genre de construction : print gettext("Le fichier : $nom_fichier est ouvert.n"); On est obligé de faire soit ceci : print gettext("Le fichier :"). $nom_fichier .gettext("est ouvert").".n"; Soit ceci : print sprintf (gettext("Le fichier : %s est ouvert.n"), $nom_fichier);
Ce qui n'est pas tres pratique lorsqu'on est en phase d'extraction des chaines. Donc s'il ya une autre méthode je suis preneur.
C'est un peu la même chose dans Locale::MakeText. Mais la syntaxe est différente :
print maketext("Le fichier : [_1] est ouvert.n"), $nom_fichier);
Ça permet de changer l'ordre d'apparition, de prévoir une éventuelle fonction de traitement pour les cas compliqués, ça permet aussi de vérifier qu'on n'oublie aucun argument...
Mais ça ne résoud pas votre problème : il faut quand même explorer tout le code pour extraire les chaînes à traduire.
Ok ça va, ça fait une semaine que je peaufine mes outils.
En fait, c'est assez fastidieux. Et c'est en général à ce moment-là qu'on se dit que la prochaine fois, on prévoira de faire l'I18N dès de le départ ! ;-)
Oui enfin, si on est à l'origine du chantier :-)
Patrice Karatchentzeff
"Jean-Charles Gibier" a écrit :
[...]
La deuxieme pose aussi ses problèmes comme le suggérait Paul Gaborit, selon les langues l'ordonnancement des attributs ou des verbes est différent.
L'ordonnancement n'est pas tant un problème que la gestion des pluriels par exemple (prendre le polonais).