[Rd] R and LANGUAGE
Martin Maechler
maechler at stat.math.ethz.ch
Thu Feb 27 11:50:04 CET 2014
Diverted from ESS-help.
It is really about R's LANGUAGE, locales and
then a wish for sessionInfo() :
>>>>> Sparapani, Rodney <rsparapa at mcw.edu>
>>>>> on Thu, 20 Feb 2014 19:39:33 +0000 writes:
>> Just guessing: perhaps this is something that is set when
>> R is initialized and not queried every time something is
>> printed?
>>
>> Kasper
> Hi Kasper:
> Good guess, but wrong ;o) Actually, the problem is in
> Sys.getlocale() Recent versions of R have this in its
> help...
> Note that the ‘LANGUAGE’ environment variable has
> precedence over ‘"LC_MESSAGES"’ in selecting the language
> for message translation on most R platforms.
> However, the function itself just ignores LANGUAGE. I
> searched bugzilla, but did not find anything related to
> LANGUAGE or Sys.getlocale() I guess this is a feature :o)
Note that 'locale' is general OS / system term,
which R cannot define.
On a Unix alike (e.g., here, Fedora Linux), if you have defined the
LC_* plus LANG plus LANGUAGE
variables,
locale
only prints the LC_* stuff and LANG, but not LANGUAGE.
I did not dig, but I'm pretty sure LANGUAGE is R's own way to specify
the messages language *in addition* to locale settings,
and with higher precedence, as you've mentioned above.
Hence Sys.getlocale() should clearly *not* report LANGUAGE.
OTOH,
> Sys.getlocale()
[1] "LC_CTYPE=de_CH.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=de_CH.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=de_CH.UTF-8;LC_PAPER=de_CH.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=de_CH.UTF-8;LC_IDENTIFICATION=C"
> Sys.getenv("LANG")
[1] "de_CH.UTF-8"
> Sys.getenv("LANGUAGE")
[1] "en"
>
So, Sys.getlocale() also does not report LANG,
even though, 'locale' does report that for me.
--------------------------------------
After all the above, and a bit independent of that :
I believe you are right, and R's sessionInfo()
should report something like LANGUAGE,
as that "hides" the setting of LC_MESSAGES.
Where "something like" could mean one of several possibilities:
a) in spite of the above, add "LANGUAGE=.." to the locale part
of sessionInfo()'s result.
b) A new entry LANGUAGE as part of the result.
And 'b)' typically should be combined with a tweak to the
print.sessionInfo() method. It could say
"Language for messages:" instead of "LANGUAGE"
Martin
-
Martin Maechler, ETH Zurich
More information about the R-devel
mailing list