On 9/17/2011 4:40 PM, David Sastre wrote:
On Tue, Sep 13, 2011 at 09:45:37AM -0600, Eric Blake wrote:
On 09/09/2011 08:59 AM, Corinna Vinschen wrote:
On Sep  9 13:33, Andy Koppe wrote:
The 'C.UTF-8' default locale is not a bug, it was a deliberate design decision.

Exactly.  And it has been discussed a lot on the cygwin-apps mailing
list.

And above all, there *is* an official way for the user to align the
Cygwin locale with the Windows locale, see the -s and -u options
of the locale(1) command:

   http://cygwin.com/cygwin-ug-net/using-utils.html#locale

On 09/09/2011 09:09 AM, Corinna Vinschen wrote:
OK, then the following four facilities are needed in Cygwin.

1) We need the name of the locale which is in effect when the user has
     not specified environment variables.

In Fedora, for instance, the fallback is what is set as system default
in /etc/sysconfig/i18n.

In Cygwin the fallback is the system default set in
/etc/profile.d/lang.sh
or /etc/profile.d/lang.csh.

Why should libintl use anything else on Cygwin, but not on Linux?


Given this, I think the bug is in cygwin for having base files
/etc/profile.d/lang.{sh,csh} which hardcode LANG to C.UTF-8 instead
of using locale -s -u to default LANG to the preferred Windows
settings. Libintl should NOT be second-guessing an explicit setting
of LANG, but cygwin should NOT be explicitly setting LANG to C.UTF-8
in its default startup scripts without any regards to the Windows
settings.  Whether setlocale(LC_ALL,"") returns C.UTF-8 or a
Windows-appropriate string _when LANG is undefined_ is still worth
solving, but right now, an out-of-the-box cygwin installation
_always has LANG defined_ by the default startup scripts.  So our
first focus should be to get that setting of LANG fixed to honor
Windows, and to teach libintl that when LANG is set we really meant
it.

WRT the base-files package, would it be acceptable/does it make sense to set:

test -z "${LC_ALL:-${LC_CTYPE:-$LANG}}"&&  export LANG=${locale -sU}

in /etc/profile.d/lang.sh and

if ( $?LC_ALL == 0&&  $?LC_CTYPE == 0&&  $?LANG == 0 ) setenv LANG = `locale 
-sU`

in /etc/profile.d/lang.csh, both as proposed, _and_ a (possibly) commented-out

test -z "${LC_ALL:-${LC_CTYPE:-$LANG}}"&&  export LANG=${locale -uU}

in the skeletal .bash_profile and .profile (i.e. both system-wide and
user defined settings)?

If you want the user-defined setting to take effect, wouldn't you have to omit the `test -z ...'? LANG will already be set when .bash_profile is processed.

Ken


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to