2010-06-11 6 views
1

Je n'arrive pas à trouver un moyen de convertir ou de trouver un identificateur local à partir d'une chaîne de sous-langue. Ce site présente les correspondances:Microsoft sous-chaîne de caractères à l'identificateur de paramètres régionaux

http://msdn.microsoft.com/en-us/library/dd318693(v=VS.85).aspx

Je veux que l'utilisateur d'entrer une chaîne de sous-langue, comme « La France (FR) » et pour obtenir l'identifiant local de ce qui dans ce cas serait 0x0484. Ou l'inverse, si un utilisateur entre 0x0480 alors pour retourner le français (FR).

Est-ce que quelqu'un a déjà rencontré ce problème et peut me pointer dans la bonne direction?

Sinon, je vais écrire quelques instructions de mappage pour le coder en dur et maintenir les futures versions si quelque chose change.

BTW, je suis en train de coder en C++ pour plate-forme Windows. Acclamations

Répondre

2

Un bon point de départ serait la fonction LCIDToLocaleName et elle est opposée - LocaleNameToLCID. Notez que ceux-ci permettent la conversion entre LCID et le nom de la locale RFC4646; Pour obtenir les noms de pays et de langue lisibles par l'utilisateur, utilisez les indicateurs GetLocaleInfoEx avec les indicateurs LOCALE_SENGLISH*. Si vous avez besoin de noms localisés au lieu de l'anglais, utilisez plutôt les constantes LOCALE_SLOCALIZED *.

+0

+ 1 merci, j'ai croisé celui-là mais je cherche quelque chose d'un peu plus lisible par l'homme. Certains de ces codes RFC4646 sont plus difficiles à mémoriser que les 4 LCID hexadécimaux char, haha. Si je ne trouve pas une réponse plus appropriée bientôt, tous vous corrigez :) – Jacob

+0

Je vais vous donner celui-ci parce que vous m'avez commencé dans la bonne direction. J'ai posté les os du code que j'ai réellement utilisé dans le blog> http://corner1001.wordpress.com/2010/07/02/windows-system-languages/ alors j'espère que ça peut aider les autres – Jacob

Questions connexes