On Tuesday 18 April 2006 09:39, Dmitry Timoshkov wrote:
"Sergei Butakov" butsergej@yandex.ru wrote:
If set # export LANG="POSIX" # export LC_CTYPE="ru_RU.CP1251" system_lcid (defined by LC_CTYPE) will be "ru_RU.CP1251"; user_lcid (defined by LANG) will be "en_US" - It's bug and it's visible in programs for Windows.
That's correct IMO, LANG takes the precedence over LC_TYPE. If you specify LANG="POSIX" you get what you asked for. AFAIK glibc does the same thing.
No.
From `man locale` (glibc-2.3.4):
LANG - Provide a DEFAULT value for the internationalization variables that are UNSET or NULL. LC_ALL - IF SET to a non-empty string value, OVERRIDE the values of all the OTHER internationalization variables. LC_CTYPE - Determine the locale for the interpretation of sequences of bytes of text data as characters.
So any program must check variables in that order: LC_ALL, LC_CTYPE, LANG. (First check LC_ALL. If LC_ALL defined then stop, if not defined then check LC_CTYPE. If LC_CTYPE defined then stop, if not defined then check LANG)
In Wine system_lcid defined by LC_ALL, LC_CTYPE, LANG. It's right. user_lcid defined by LC_ALL, LANG only. It's wrong. LC_CTYPE must be checked too!