Locales

chris@blueband.demon.co.uk chris@blueband.demon.co.uk
Sat May 13 10:19:00 GMT 2006


Hi,

I have the following code that is supposed to print the name of the native locale:

#include <locale>
#include <iostream>

int main(int argc, char **argv)
{
    std::locale test("");    
    std::cout << "Native Locale is: " << test.name() << std::endl;
    return 0;
}

The above code on Windows with Visual Studio 7 shows:

Native Locale is: English_United_Kingdom

or something very close to that. Using gcc on Windows (MinGW's g++) it shows:

Native Locale is: C

which is relatively sensible, but using gcc (g++) on Linux I get:

Native Locale is: LC_TYPE=en_GB.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C; LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C; LC_MEASUREMENT=C;LC_IDENTIFICATION=C

when what I expected was:

Native Locale is: en_GB.UTF-8

or something similar. Now, I could extract the native locale from the LC_TYPE variable, but I wondered:

1) Was the list of locale LC_ variables something you would have expected?
2) Is there something else I should be constructing the locale with to give the native locale on Linux?
3) Is it possible to get the correct native locale on Windows with gcc (rather than C - the same results if I build and run the program in MSYS or the Windows Command Prompt)? Any answer to question 2 may answer this, I guess.

Thanks for any help you can give.

Chris




More information about the Gcc-help mailing list