The behavor of printing out libc message catalog without calling setlocale()

Ulrich Drepper drepper@redhat.com
Tue Nov 7 08:41:00 GMT 2000


GOTO Masanori <gotom@debian.or.jp> writes:

> IMHO, it is inappropriate behavior that we must call
> setlocale() in any case we have libc's translated .po file.
> So, (3-1) or (3-2) is the best solution to fix it.

First, you haven't said which version of glibc you are using.  We had
a change in this area lately.  Second, calling setlocale() is always
necessary if any of the locale-related environment variables is to be
used (LC_ALL, LC_xxx, LANG).  This changed recently but only aligned
glibc code with the behavior of gettext outside glibc (it was simply a
bug).  You seem not to like this but it is how it's supposed to work
(it works just like catgets() with the NL_CAT_LOCALE flag set).  You
can even give reasons for this: a program must be able to say that it
does not want any translations and this happens by not using
setlocale().

Having said this, there is a loophole.  If the user set the LANGUAGE
environment variable the requested translation is always used.  I'm
not especially happy about this but don't see a way to not do this.
Also, it might help in situations like yours.

-- 
---------------.                          ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Red Hat          `--' drepper at redhat.com   `------------------------


More information about the Libc-alpha mailing list