[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#55913: liblocale-gettext-perl: setlocale(LC_ALL, "de") doesn't work but $ENV{'LC_ALL'} = "de" does



reassign 55913 perl-5.005
thanks

Le Sat, Jan 22, 2000 at 06:18:53PM +0100, mito@aparima.com écrivait:
> Package: liblocale-gettext-perl
> Version: 1.01-8
> Severity: normal
> 
> % perl -MLocale::gettext -MPOSIX -le '$ENV{LC_ALL}="fr"; textdomain("libc"); print gettext("Interrupt");'
> produces:
> Interruption
> 
> % perl -MLocale::gettext -MPOSIX -le 'setlocale(LC_ALL, "fr") ; textdomain("libc"); print gettext("Interrupt");'
> produces:
> Interrupt
> 
> It seems the setlocale() call does nothing, or am I missing something?

It looks like so, yes. I've checked that indeed gettext work without the
setlocale call in the perl script. But setlocale is not Locale::gettext's
responsibility, that's why I'm reassigning it to perl-5.005. Darren, I
really don't know how this can happen ... I'm asking on debian-perl for
the input of perl's gurus. I don't know how/when this appeared since I
had to use setlocale in the past for making gettext happy (remember why
you had to include POSIX.pm in perl-5.005-base ...).

Even better, I ltraced a perl script without a setlocale call and a perl
script with a setlocale call and they both call setlocale 5 times.

Here's the output of the ltrace calls (I have LANG="fr_FR" in my
environment) :

~/test@k6$ LANG="" ltrace -e setlocale perl -w -MPOSIX -MLocale::gettext -le 'setlocale(LC_ALL, "de_DE"); textdomain("libc"); print gettext("Interrupt");'
setlocale(6, "")                                  = "LC_CTYPE=fr_FR;LC_NUMERIC=C;LC_T"...
setlocale(0, "")                                  = "fr_FR"
setlocale(3, "")                                  = "C"
setlocale(1, "")                                  = "C"
Interrupt
+++ exited (status 0) +++
~/test@k6$ ltrace -e setlocale perl -w -MPOSIX -MLocale::gettext -le 'setlocale(LC_ALL, "de_DE"); textdomain("libc"); print gettext("Interrupt");'
setlocale(6, "")                                  = "fr_FR"
setlocale(0, "")                                  = "fr_FR"
setlocale(3, "")                                  = "fr_FR"
setlocale(1, "")                                  = "fr_FR"
setlocale(1, "C")                                 = "C"
Interruption
+++ exited (status 0) +++
~/test@k6$ LANG="" ltrace -e setlocale perl -w -MPOSIX -MLocale::gettext -le 'textdomain("libc"); print gettext("Interrupt");'
setlocale(6, "")                                  = "LC_CTYPE=fr_FR;LC_NUMERIC=C;LC_T"...
setlocale(0, "")                                  = "fr_FR"
setlocale(3, "")                                  = "C"
setlocale(1, "")                                  = "C"
Interrupt
+++ exited (status 0) +++
~/test@k6$ ltrace -e setlocale perl -w -MPOSIX -MLocale::gettext -le 'textdomain("libc"); print gettext("Interrupt");'
setlocale(6, "")                                  = "fr_FR"
setlocale(0, "")                                  = "fr_FR"
setlocale(3, "")                                  = "fr_FR"
setlocale(1, "")                                  = "fr_FR"
setlocale(1, "C")                                 = "C"
Interruption
+++ exited (status 0) +++

Cheers,
-- 
Raphaël Hertzog >> 0C4CABF1 >> http://tux.u-strasbg.fr/~raphael/
<pub> CD Debian : http://tux.u-strasbg.fr/~raphael/debian/#cd </pub>


Reply to: