On *nix systems you can do locale -a
to get a list of available locales.
What is the equivalent command (or action) in Windows?
I've seen lists on the Internet, but most of them are of just locale labels and not actual locale names. Plus, not all systems are guaranteed to have all of them installed, right?
Note that my definition of "locale" here is "locale string", i.e. a second parameter to C's setlocale()
which will result in a non-NULL return value.
Programmatic answers are also fine, I'm just tired of brute force guessing Windows locale names.
This page seems to contain links to lists of language and country/region that the WIN32 setlocale recognizes. However:
fail.
Initially, I couldn't find a C/Win32 API to get the information. (See later edit.) However, it looks like the .NET class System.Globalization.CultureInfo could provide the information you need. In particular, see CultureInfo.GetCultures(). This page seems to have a complete example of what you are looking for.
EDIT: If you prefer a C/Win32 API, see EnumSystemLocales() function, along with simple example code.
EDIT 2: This example shows how to convert an LCID (which you get from EnumSystemLocales()) into a string useable by setlocale().