J'aimerais utiliser gettext pour internationaliser les messages dans
certains mails que j'envoie.
j'ai utilisé perl et gettext avec des cgi.
Là, ce n'ai pas le même contexte! Pas de cgi...
Un utilisateur spécifique reçoit des mails qui sont traités via un pgm
spécifique.
Ce pgm analyse le mail, fait des traitements et renvoie un mail à la
personne qui a envoyé le mail.
Ce sont les messages de ce mail de retour que j'aimerais mettre dans la
langue de la personne qui a envoyé le mail.
J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de
messages.
Je pourrais ajouter la langue de chaque utilisateur dans cette bd...
Mais après comment traiter cela?
Il y a peut-être une meilleur solution pour internationaliser les
messages...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Sun, 18 Jun 2006 02:40:08 +0200, "ecureuil" écrivait (wrote):
J'aimerais utiliser gettext pour internationaliser les messages dans certains mails que j'envoie. [...]
J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de messages. Je pourrais ajouter la langue de chaque utilisateur dans cette bd... Mais après comment traiter cela?
Il "suffit" de changer le 'locale' courant pour que gettext (qu'on utilise généralement via le module Locale::TextDomain) récupère les messages dans la langue correcte (dans la mesure où le fichier de messages associé à cette langue existe bien).
Il y a peut-être une meilleur solution pour internationaliser les messages...
L'idéal, c'est le module Locale::Maketext. Ce module a été créé en réponse aux besoins non-couverts par gettext et l'argumentaire développé tient très bien la route. Seul petit défaut : à ma connaissance, cette technique n'est utilisable qu'en Perl puisqu'il n'existe pas (encore?) d'implémentation dans d'autres langages.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Sun, 18 Jun 2006 02:40:08 +0200,
"ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
J'aimerais utiliser gettext pour internationaliser les messages dans
certains mails que j'envoie.
[...]
J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de
messages.
Je pourrais ajouter la langue de chaque utilisateur dans cette bd...
Mais après comment traiter cela?
Il "suffit" de changer le 'locale' courant pour que gettext (qu'on
utilise généralement via le module Locale::TextDomain) récupère les
messages dans la langue correcte (dans la mesure où le fichier de
messages associé à cette langue existe bien).
Il y a peut-être une meilleur solution pour internationaliser les
messages...
L'idéal, c'est le module Locale::Maketext. Ce module a été créé en
réponse aux besoins non-couverts par gettext et l'argumentaire
développé tient très bien la route. Seul petit défaut : à ma
connaissance, cette technique n'est utilisable qu'en Perl puisqu'il
n'existe pas (encore?) d'implémentation dans d'autres langages.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Sun, 18 Jun 2006 02:40:08 +0200, "ecureuil" écrivait (wrote):
J'aimerais utiliser gettext pour internationaliser les messages dans certains mails que j'envoie. [...]
J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de messages. Je pourrais ajouter la langue de chaque utilisateur dans cette bd... Mais après comment traiter cela?
Il "suffit" de changer le 'locale' courant pour que gettext (qu'on utilise généralement via le module Locale::TextDomain) récupère les messages dans la langue correcte (dans la mesure où le fichier de messages associé à cette langue existe bien).
Il y a peut-être une meilleur solution pour internationaliser les messages...
L'idéal, c'est le module Locale::Maketext. Ce module a été créé en réponse aux besoins non-couverts par gettext et l'argumentaire développé tient très bien la route. Seul petit défaut : à ma connaissance, cette technique n'est utilisable qu'en Perl puisqu'il n'existe pas (encore?) d'implémentation dans d'autres langages.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
ecureuil
"Paul Gaborit" a écrit dans le message de news: | | À (at) Sun, 18 Jun 2006 02:40:08 +0200, | "ecureuil" écrivait (wrote): | > J'aimerais utiliser gettext pour internationaliser les messages dans | > certains mails que j'envoie. | [...] | > J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de | > messages. | > Je pourrais ajouter la langue de chaque utilisateur dans cette bd... | > Mais après comment traiter cela? | | Il "suffit" de changer le 'locale' courant pour que gettext (qu'on | utilise généralement via le module Locale::TextDomain) récupère les | messages dans la langue correcte (dans la mesure où le fichier de | messages associé à cette langue existe bien).
J'ai fait des essais cela à l'air de fonctionner... J'ai des messages qui vont être pour le demandeur et d'autres pour l'administrateur... Le demandeur et l'administrateur non pas forcément la même langue. Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
| | > Il y a peut-être une meilleur solution pour internationaliser les | > messages... | | L'idéal, c'est le module Locale::Maketext. Ce module a été créé en | réponse aux besoins non-couverts par gettext et l'argumentaire | développé tient très bien la route. Seul petit défaut : à ma | connaissance, cette technique n'est utilisable qu'en Perl puisqu'il | n'existe pas (encore?) d'implémentation dans d'autres langages. | J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour l'utiliser...
anne
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r7ejxlh84p.fsf@vaugirard.enstimac.fr...
|
| À (at) Sun, 18 Jun 2006 02:40:08 +0200,
| "ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
| > J'aimerais utiliser gettext pour internationaliser les messages dans
| > certains mails que j'envoie.
| [...]
| > J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce
type de
| > messages.
| > Je pourrais ajouter la langue de chaque utilisateur dans cette bd...
| > Mais après comment traiter cela?
|
| Il "suffit" de changer le 'locale' courant pour que gettext (qu'on
| utilise généralement via le module Locale::TextDomain) récupère les
| messages dans la langue correcte (dans la mesure où le fichier de
| messages associé à cette langue existe bien).
J'ai fait des essais cela à l'air de fonctionner...
J'ai des messages qui vont être pour le demandeur et d'autres pour
l'administrateur...
Le demandeur et l'administrateur non pas forcément la même langue.
Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
|
| > Il y a peut-être une meilleur solution pour internationaliser les
| > messages...
|
| L'idéal, c'est le module Locale::Maketext. Ce module a été créé en
| réponse aux besoins non-couverts par gettext et l'argumentaire
| développé tient très bien la route. Seul petit défaut : à ma
| connaissance, cette technique n'est utilisable qu'en Perl puisqu'il
| n'existe pas (encore?) d'implémentation dans d'autres langages.
|
J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour
l'utiliser...
"Paul Gaborit" a écrit dans le message de news: | | À (at) Sun, 18 Jun 2006 02:40:08 +0200, | "ecureuil" écrivait (wrote): | > J'aimerais utiliser gettext pour internationaliser les messages dans | > certains mails que j'envoie. | [...] | > J'ai une bd de tous les utilisateurs qui sont autorisés à envoyer ce type de | > messages. | > Je pourrais ajouter la langue de chaque utilisateur dans cette bd... | > Mais après comment traiter cela? | | Il "suffit" de changer le 'locale' courant pour que gettext (qu'on | utilise généralement via le module Locale::TextDomain) récupère les | messages dans la langue correcte (dans la mesure où le fichier de | messages associé à cette langue existe bien).
J'ai fait des essais cela à l'air de fonctionner... J'ai des messages qui vont être pour le demandeur et d'autres pour l'administrateur... Le demandeur et l'administrateur non pas forcément la même langue. Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
| | > Il y a peut-être une meilleur solution pour internationaliser les | > messages... | | L'idéal, c'est le module Locale::Maketext. Ce module a été créé en | réponse aux besoins non-couverts par gettext et l'argumentaire | développé tient très bien la route. Seul petit défaut : à ma | connaissance, cette technique n'est utilisable qu'en Perl puisqu'il | n'existe pas (encore?) d'implémentation dans d'autres langages. | J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour l'utiliser...
anne
Paul Gaborit
À (at) Tue, 20 Jun 2006 01:52:40 +0200, "ecureuil" écrivait (wrote):
Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
Oui. Là encore, tout passe par la valeur de 'locale' courante.
J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour l'utiliser...
Il faut lire la documentation des modules Locale::Maketext et Locale::Maketext::TPJ13 (qui n'est pas vraiment un module mais juste un article du TPJ sous forme POD). Vous pouvez aussi jeter un oeil à Locale::Maketext:Gettext pour réunir « le meilleur et le pire des deux mondes » (c'est l'auteur qui le dit). Le tout est accessible en ligne via 'perldoc' si vous installez ces modules chez vous... sinon, via search.cpan.org.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 20 Jun 2006 01:52:40 +0200,
"ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
Oui. Là encore, tout passe par la valeur de 'locale' courante.
J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour
l'utiliser...
Il faut lire la documentation des modules Locale::Maketext et
Locale::Maketext::TPJ13 (qui n'est pas vraiment un module mais juste
un article du TPJ sous forme POD). Vous pouvez aussi jeter un oeil à
Locale::Maketext:Gettext pour réunir « le meilleur et le pire des deux
mondes » (c'est l'auteur qui le dit). Le tout est accessible en ligne
via 'perldoc' si vous installez ces modules chez vous... sinon, via
search.cpan.org.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 20 Jun 2006 01:52:40 +0200, "ecureuil" écrivait (wrote):
Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
Oui. Là encore, tout passe par la valeur de 'locale' courante.
J'ai commencé de regarder Maketext... pas trouvé beaucoup d'infos pour l'utiliser...
Il faut lire la documentation des modules Locale::Maketext et Locale::Maketext::TPJ13 (qui n'est pas vraiment un module mais juste un article du TPJ sous forme POD). Vous pouvez aussi jeter un oeil à Locale::Maketext:Gettext pour réunir « le meilleur et le pire des deux mondes » (c'est l'auteur qui le dit). Le tout est accessible en ligne via 'perldoc' si vous installez ces modules chez vous... sinon, via search.cpan.org.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
ecureuil
"Paul Gaborit" a écrit dans le message de news: | | À (at) Tue, 20 Jun 2006 01:52:40 +0200, | "ecureuil" écrivait (wrote): | > Est-ce possible dans le même programme de gérer 2 langues avecc gettext? | | Oui. Là encore, tout passe par la valeur de 'locale' courante. |
Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour le demandeur. L'administrateur et le demandeur n'ont pas forcement la même langue.
Je n'arrive pas à trouver d'infos pour gérer les messages dans la langue de l'administrateur et les messages dans la langue du demandeur.
Je me suis fait un petit programme d'essai : ---------------------------------------- #!/usr/bin/perl
use strict; use POSIX; use Locale::gettext;
my $Debug = 1;
my $fic_lang_traduc = "/home/e-smith/files/users/zoro/home/faxvm/locale/"; my $lib_name = "faxvm";
my $http_lang_util = shift; my $http_lang_admin = $ENV{LANG};
J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la langue de administrateur et les autres dans la langue du demandeur.
Si vous avez des solutions, je ne trouve pas pour l'instant la façon de gérer cela avec gettext.
merci anne
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r77j3cgsgg.fsf@vaugirard.enstimac.fr...
|
| À (at) Tue, 20 Jun 2006 01:52:40 +0200,
| "ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
| > Est-ce possible dans le même programme de gérer 2 langues avecc gettext?
|
| Oui. Là encore, tout passe par la valeur de 'locale' courante.
|
Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour
le demandeur.
L'administrateur et le demandeur n'ont pas forcement la même langue.
Je n'arrive pas à trouver d'infos pour gérer les messages dans la langue de
l'administrateur et les messages dans la langue du demandeur.
Je me suis fait un petit programme d'essai :
----------------------------------------
#!/usr/bin/perl
use strict;
use POSIX;
use Locale::gettext;
my $Debug = 1;
my $fic_lang_traduc = "/home/e-smith/files/users/zoro/home/faxvm/locale/";
my $lib_name = "faxvm";
my $http_lang_util = shift;
my $http_lang_admin = $ENV{LANG};
"Paul Gaborit" a écrit dans le message de news: | | À (at) Tue, 20 Jun 2006 01:52:40 +0200, | "ecureuil" écrivait (wrote): | > Est-ce possible dans le même programme de gérer 2 langues avecc gettext? | | Oui. Là encore, tout passe par la valeur de 'locale' courante. |
Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour le demandeur. L'administrateur et le demandeur n'ont pas forcement la même langue.
Je n'arrive pas à trouver d'infos pour gérer les messages dans la langue de l'administrateur et les messages dans la langue du demandeur.
Je me suis fait un petit programme d'essai : ---------------------------------------- #!/usr/bin/perl
use strict; use POSIX; use Locale::gettext;
my $Debug = 1;
my $fic_lang_traduc = "/home/e-smith/files/users/zoro/home/faxvm/locale/"; my $lib_name = "faxvm";
my $http_lang_util = shift; my $http_lang_admin = $ENV{LANG};
J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la langue de administrateur et les autres dans la langue du demandeur.
En fait, le principe consiste à retarder le plus possible l'appel à 'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des performances : 'gettext' maintient un cache interne de tous les messages.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 20 Jun 2006 14:45:04 +0200,
"ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour
le demandeur.
[...]
setlocale(LC_MESSAGES, "$http_lang_util");
C'est cet appel qui indique à 'gettext' la langue qu'il doit utiliser.
J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la
langue de administrateur et les autres dans la langue du demandeur.
En fait, le principe consiste à retarder le plus possible l'appel à
'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change
selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des
performances : 'gettext' maintient un cache interne de tous les
messages.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la langue de administrateur et les autres dans la langue du demandeur.
En fait, le principe consiste à retarder le plus possible l'appel à 'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des performances : 'gettext' maintient un cache interne de tous les messages.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
ecureuil
"Paul Gaborit" a écrit dans le message de news: | | À (at) Tue, 20 Jun 2006 14:45:04 +0200, | "ecureuil" écrivait (wrote): | > Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour | > le demandeur. | [...] | > setlocale(LC_MESSAGES, "$http_lang_util"); | | C'est cet appel qui indique à 'gettext' la langue qu'il doit utiliser. | | > bindtextdomain("$lib_name", "$fic_lang_traduc"); | > textdomain("$lib_name"); | > | > # set gettext stufs : | > sub _ { | > return gettext($_[0]); | > } | > | > my $repfax = "/tmp/repfax"; | > | > my $mes_info=_("Informations Message!"); | > my $mes_info1 =_("Temporary Directory: "); | | Les chaînes $mes_info et $mes_info1 sont déjà traduites (via l'appel à | 'gettext'). | | > print "util $mes_infon"; | > printf "util %s %snn", $mes_info1, $repfax ; | > | > if ($Debug) { | | setlocale(LC_MESSAGES, "$http_lang_admin"); | my $mes_info=_("Informations Message!"); | my $mes_info1 =_("Temporary Directory: "); | | Comme ça $mes_info et $mes_info1 passent à nouveau via un appel à | 'gettext' mais avec le 'locale' de l'admin et non de l'utilisateur. | | > print "admin $mes_infon"; | > printf "admin %s %sn", $mes_info1, $repfax ; | > } | > ------------------------------------ | > | > J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la | > langue de administrateur et les autres dans la langue du demandeur. | | En fait, le principe consiste à retarder le plus possible l'appel à | 'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change | selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des | performances : 'gettext' maintient un cache interne de tous les | messages. |
merci testé! C'est ok
J'ai fait 2 tests... je ne sais pas ce qui est le mieux
Je nomme mes variables différemment si admin ou demandeur et je mets tout ce qui concerne la traduction au même endroit ---------------------------- my $mes_info="Informations Message!"; my $mes_info1 ="Temporary Directory: ";
setlocale(LC_MESSAGES, "$http_lang_util"); my $mes_info_util =_("$mes_info"); my $mes_info1_util =_("$mes_info1"); setlocale(LC_MESSAGES, "$http_lang_admin"); my $mes_info_admin =_("$mes_info"); my $mes_info1_admin =_("$mes_info1"); ----------------------------
Je déclare mes variables de traduction et à chaque demande, j'appelle le bon locale ---------------------------- my $mes_info="Informations Message!"; my $mes_info1 ="Temporary Directory: "; ... setlocale(LC_MESSAGES, "$http_lang_util"); printf "util %sn", _("$mes_info"); printf "util %s %snn", _("$mes_info1"), $repfax ; ... if ($Debug) { setlocale(LC_MESSAGES, "$http_lang_admin"); printf "admin %sn", _("$mes_info"); printf "admin %s %snn", _("$mes_info1") , $repfax ; } ----------------------------
anne
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r73bdzhql2.fsf@vaugirard.enstimac.fr...
|
| À (at) Tue, 20 Jun 2006 14:45:04 +0200,
| "ecureuil" <gentil_ecureuil@hotmail.com> écrivait (wrote):
| > Dans mon programme, j'ai des messages pour l'administrateur et d'autres
pour
| > le demandeur.
| [...]
| > setlocale(LC_MESSAGES, "$http_lang_util");
|
| C'est cet appel qui indique à 'gettext' la langue qu'il doit utiliser.
|
| > bindtextdomain("$lib_name", "$fic_lang_traduc");
| > textdomain("$lib_name");
| >
| > # set gettext stufs :
| > sub _ {
| > return gettext($_[0]);
| > }
| >
| > my $repfax = "/tmp/repfax";
| >
| > my $mes_info=_("Informations Message!");
| > my $mes_info1 =_("Temporary Directory: ");
|
| Les chaînes $mes_info et $mes_info1 sont déjà traduites (via l'appel à
| 'gettext').
|
| > print "util $mes_infon";
| > printf "util %s %snn", $mes_info1, $repfax ;
| >
| > if ($Debug) {
|
| setlocale(LC_MESSAGES, "$http_lang_admin");
| my $mes_info=_("Informations Message!");
| my $mes_info1 =_("Temporary Directory: ");
|
| Comme ça $mes_info et $mes_info1 passent à nouveau via un appel à
| 'gettext' mais avec le 'locale' de l'admin et non de l'utilisateur.
|
| > print "admin $mes_infon";
| > printf "admin %s %sn", $mes_info1, $repfax ;
| > }
| > ------------------------------------
| >
| > J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la
| > langue de administrateur et les autres dans la langue du demandeur.
|
| En fait, le principe consiste à retarder le plus possible l'appel à
| 'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change
| selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des
| performances : 'gettext' maintient un cache interne de tous les
| messages.
|
merci
testé!
C'est ok
J'ai fait 2 tests... je ne sais pas ce qui est le mieux
Je nomme mes variables différemment si admin ou demandeur
et je mets tout ce qui concerne la traduction au même endroit
----------------------------
my $mes_info="Informations Message!";
my $mes_info1 ="Temporary Directory: ";
setlocale(LC_MESSAGES, "$http_lang_util");
my $mes_info_util =_("$mes_info");
my $mes_info1_util =_("$mes_info1");
setlocale(LC_MESSAGES, "$http_lang_admin");
my $mes_info_admin =_("$mes_info");
my $mes_info1_admin =_("$mes_info1");
----------------------------
Je déclare mes variables de traduction
et à chaque demande, j'appelle le bon locale
----------------------------
my $mes_info="Informations Message!";
my $mes_info1 ="Temporary Directory: ";
...
setlocale(LC_MESSAGES, "$http_lang_util");
printf "util %sn", _("$mes_info");
printf "util %s %snn", _("$mes_info1"), $repfax ;
...
if ($Debug) {
setlocale(LC_MESSAGES, "$http_lang_admin");
printf "admin %sn", _("$mes_info");
printf "admin %s %snn", _("$mes_info1") , $repfax ;
}
----------------------------
"Paul Gaborit" a écrit dans le message de news: | | À (at) Tue, 20 Jun 2006 14:45:04 +0200, | "ecureuil" écrivait (wrote): | > Dans mon programme, j'ai des messages pour l'administrateur et d'autres pour | > le demandeur. | [...] | > setlocale(LC_MESSAGES, "$http_lang_util"); | | C'est cet appel qui indique à 'gettext' la langue qu'il doit utiliser. | | > bindtextdomain("$lib_name", "$fic_lang_traduc"); | > textdomain("$lib_name"); | > | > # set gettext stufs : | > sub _ { | > return gettext($_[0]); | > } | > | > my $repfax = "/tmp/repfax"; | > | > my $mes_info=_("Informations Message!"); | > my $mes_info1 =_("Temporary Directory: "); | | Les chaînes $mes_info et $mes_info1 sont déjà traduites (via l'appel à | 'gettext'). | | > print "util $mes_infon"; | > printf "util %s %snn", $mes_info1, $repfax ; | > | > if ($Debug) { | | setlocale(LC_MESSAGES, "$http_lang_admin"); | my $mes_info=_("Informations Message!"); | my $mes_info1 =_("Temporary Directory: "); | | Comme ça $mes_info et $mes_info1 passent à nouveau via un appel à | 'gettext' mais avec le 'locale' de l'admin et non de l'utilisateur. | | > print "admin $mes_infon"; | > printf "admin %s %sn", $mes_info1, $repfax ; | > } | > ------------------------------------ | > | > J'aimerais que tous les messages qui sont avec if ($Debug) soit dans la | > langue de administrateur et les autres dans la langue du demandeur. | | En fait, le principe consiste à retarder le plus possible l'appel à | 'gettext' pour qu'on utiliser toujours le 'locale' courant (qui change | selon qu'on s'adresse à l'un ou l'autre). Ne vous inquiétez pas des | performances : 'gettext' maintient un cache interne de tous les | messages. |
merci testé! C'est ok
J'ai fait 2 tests... je ne sais pas ce qui est le mieux
Je nomme mes variables différemment si admin ou demandeur et je mets tout ce qui concerne la traduction au même endroit ---------------------------- my $mes_info="Informations Message!"; my $mes_info1 ="Temporary Directory: ";
setlocale(LC_MESSAGES, "$http_lang_util"); my $mes_info_util =_("$mes_info"); my $mes_info1_util =_("$mes_info1"); setlocale(LC_MESSAGES, "$http_lang_admin"); my $mes_info_admin =_("$mes_info"); my $mes_info1_admin =_("$mes_info1"); ----------------------------
Je déclare mes variables de traduction et à chaque demande, j'appelle le bon locale ---------------------------- my $mes_info="Informations Message!"; my $mes_info1 ="Temporary Directory: "; ... setlocale(LC_MESSAGES, "$http_lang_util"); printf "util %sn", _("$mes_info"); printf "util %s %snn", _("$mes_info1"), $repfax ; ... if ($Debug) { setlocale(LC_MESSAGES, "$http_lang_admin"); printf "admin %sn", _("$mes_info"); printf "admin %s %snn", _("$mes_info1") , $repfax ; } ----------------------------