2011-03-01 6 views
4

Sur les systèmes * nix, vous pouvez faire locale -a pour obtenir la liste des paramètres régionaux disponibles.Liste des locales sous Windows

Quelle est la commande (ou action) équivalente dans Windows?

J'ai vu des listes sur Internet, mais la plupart d'entre elles ne portent que sur des étiquettes locales et non sur des noms régionaux réels. De plus, tous les systèmes ne sont pas tous installés, n'est-ce pas? Notez que ma définition de "locale" ici est "locale", c'est-à-dire un deuxième paramètre à C setlocale() qui aboutira à une valeur de retour non-NULL.

Les réponses programmatiques sont également très bien, je suis juste fatigué de la force brute de deviner les noms des paramètres régionaux de Windows.

Répondre

6

Initialement, je ne pouvais pas trouver une API C/Win32 pour obtenir l'information. (Voir plus tard edit.) Cependant, il semble que la classe .NET System.Globalization.CultureInfo pourrait fournir l'information dont vous avez besoin. En particulier, consultez CultureInfo.GetCultures(). Cette page semble avoir un complete example de ce que vous cherchez.

EDIT: Si vous préférez une API C/Win32, voir la fonction EnumSystemLocales(), avec la simple example code.

EDIT 2: This example montre comment convertir un LCID (que vous obtenez de EnumSystemLocales()) en une chaîne utilisable par setlocale().

+0

Très belle locale informations là, mais toujours pas de chaîne locale utilisable par setlocale(). – aib

+0

Essayer l'énumération maintenant ... – aib

+0

Le [dernier] exemple est un début, mais je me demande comment il gère les locales avec plusieurs pages de code (sans parler des langues ou pays/régions). On dirait qu'il ne récupère que la page de code ANSI par défaut ou la page de code par défaut si elle n'existe pas. Il semble y avoir des pages de codes EBCDIC et MAC par défaut. Pas que cela ait de l'importance; J'ai eu ma réponse: Aucune utilité existe; il faut lire la mauvaise documentation NLS et générer et éliminer les noms de locale par programmation. – aib

1

This page semble contenir des liens vers des listes de langues et de pays/régions reconnus par le WIN32 setlocale. Cependant:

L'ensemble des langues disponibles, pays /codes régionaux et les pages de code inclut tous ceux pris en charge par l'API NLS Win32 sauf les pages de code qui nécessitent plus de deux octets par caractère, tels que UTF-7 et UTF-8. Si vous fournissez une page de code comme UTF-7 ou UTF-8, setlocale échouera, retournant NULL.

échec.

+1

Je suis toujours curieux au sujet du support UTF-16, cependant. – aib

+0

Sans parler de UTF-32. C'est à dire. pourquoi pas? :) – mlvljr

+0

@mlvljr: * hausser * Je suppose que c'est parce que UTF-32 nécessite définitivement plus de deux octets par caractère (de même que UTF-16, mais UTF-32 fait plus - certaines exigences sont plus nécessaires que d'autres?) Pensez-y, UTF-32 est beaucoup plus facile à mettre en œuvre. – aib