Hi,
Norm wrote:
Under Linux, setting the Locale is tricky, because setting several
different environment variables effectively sets the Locale. I had
that problem due to a decade's old setting that I had long since
forgotten. David Levine found the problem. I could never have found it
myself. To this day, I don't know the reason for the ancient setting.
locale(1) shows the locale in use based on its environment.
$ locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
$
They're not all simply the values of the matching environment variables.
To see what variables are affecting its output, trace the calls to
library routine getenv(3).
$ ltrace -e getenv locale
getenv("LC_ALL") = NULL
getenv("LANGUAGE") = NULL
getenv("LANG") = "en_GB.utf8"
LANG=en_GB.utf8
getenv("POSIXLY_CORRECT") = NULL
LANGUAGE=
getenv("LC_CTYPE") = NULL
LC_CTYPE="en_GB.utf8"
getenv("LC_NUMERIC") = NULL
LC_NUMERIC="en_GB.utf8"
getenv("LC_TIME") = NULL
LC_TIME="en_GB.utf8"
getenv("LC_COLLATE") = NULL
LC_COLLATE="en_GB.utf8"
getenv("LC_MONETARY") = NULL
LC_MONETARY="en_GB.utf8"
getenv("LC_MESSAGES") = NULL
LC_MESSAGES="en_GB.utf8"
getenv("LC_PAPER") = NULL
LC_PAPER="en_GB.utf8"
getenv("LC_NAME") = NULL
LC_NAME="en_GB.utf8"
getenv("LC_ADDRESS") = NULL
LC_ADDRESS="en_GB.utf8"
getenv("LC_TELEPHONE") = NULL
LC_TELEPHONE="en_GB.utf8"
getenv("LC_MEASUREMENT") = NULL
LC_MEASUREMENT="en_GB.utf8"
getenv("LC_IDENTIFICATION") = NULL
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
+++ exited (status 0) +++
$
This shows that for me, only $LANG is affecting a program's locale.
Cheers, Ralph.
_______________________________________________
Nmh-workers mailing list
Nmh-workers(_at_)nongnu(_dot_)org
https://lists.nongnu.org/mailman/listinfo/nmh-workers