Robin, hi

maybe we're talking about slightly different things. I'll give my best to
sort this out:
        1       The error message "setting locale failed" may be caused
                by an empty environment variable LC_LANG.
        2       This is definitively not the only cause for this message.
                You'll get the same error if you set LC_LANG to anything
                other then "C".
        3       If you do this and if you then try to start a perl script, then
                the last internal action before the error message is an
                unsuccessful attempt to open the file LC_COLLATE.

I set LC_ALL and LC_LANG in the shell environment and in the environment.plist to 
"DE". This was the result:    

bash-2.05a$ echo $LC_ALL
DE
bash-2.05a$ echo $LC_LANG
DE
bash-2.05a$ perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "DE",
        LANG = "de"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

This is perl, v5.8.0 built for darwin-thread-multi

I looked at the perl process and found:

883 perl     CALL  open(0xbffff600,0,0x1b6)
883 perl     NAMI  "/usr/share/locale/DE/LC_COLLATE"
883 perl     RET   open -1 errno 2 No such file or directory
883 perl     CALL  write(0x2,0x4c360,0x26)
883 perl     GIO   fd 2 wrote 38 bytes
"perl: warning: Setting locale failed.

I hope my explanations are understandable and the problem is now clearer as before.  I 
made the mistake not to set "LC_ALL" in the first time.  But the solution is not to 
set LC_ALL to any permitted value. The only solution is: "LC_ALL=C" .  
You see this contradiction already in the error message, that says: Your "de locale" 
is installed and supported - but I can't set it. Why? And why is there no file 
LC_COLLATE that perl seems to need?

Jens-Christoph

Robin <[EMAIL PROTECTED]> schrieb am 15.01.03 10:22:42:
> On Wednesday, January 15, 2003, at 03:36 PM, Jens-Christoph Brendel 
> wrote:
> 
> > I hope I don't getting on your nerves,
> no don't worry you're looking for a solution, been there meself. But 
> maybe we're talking about different errors - the solution I'm offering 
> is for the following error:
> 
> "perl: warning: Setting locale failed.
> perl: warning: Please check that your locale settings:
>          LC_ALL = (unset),
>          LANG = "de"
>      are supported and installed on your system.
> perl: warning: Falling back to the standard locale ("C").
> 
> This is perl, v5.8.0 built for darwin-thread-multi "
> 
> This still being the case the error is thrown up because LC_ALL, the 
> default locale, is not set
> 
> >  but your explanation do not fit to my observations. Before I set 
> > "LC_LANG=C" in the environment.plist I got the mentioned error message 
> > by example after I entered "perl -v" in a terminal window by example.
> that sounds correct - the default locale for perl isn't set - perl 
> complains
> 
> > There is no 'use locale' pragma but perl didn't ignored the "LANG=de" 
> > setting in my shell environment.
> 
> presumably you ran this in the shell which would also be consistent - 
> the shell adds the missing ENV variable for LANG, but you didn't get 
> the shell to set LC_ALL=C
> 
> > With these settings (LC_ALL unset, LANG=de in the shell environment)
> and this is the point I believe you're missing - LC_ALL must be set to 
> C or perl complains. Have you tried setting it?
> The whole of the locale machinery is built around the fact this 
> constant will be there and that is what the (above) warning is saying:
> 
> "I can't find a value for LC_ALL  but so you can get pattern matching 
> and comparisions of data I'm defaulting to the C locale anyway, you 
> might want to check into things your end"
> 
> HTH
> 
> Robin
> 

Reply via email to