2012-11-27 34 views
0
System Locale:    en-us;English (United States) 
Input Locale:    en-us;English (United States) 

当您运行systeminfo.exe时,有用的信息包括上述两行。 Windows API或C运行时函数是否提供字符串英文(美国)如何从locale字符串像systeminfo.exe显示中检索“Human Readable”字符串?

+2

可能很好地位于注册表的某处。我知道.net可以告诉你。但是我不知道.net在请求语言环境时在后台发生了什么。看到这个:http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.englishname.aspx您可以使用CurrentCulture.DisplayName/EnglishName/Name –

+0

Mikes评论带领我这和事实,我完全错过了我眼中正确的“GetLocaleInfoEx”方法! [http://stackoverflow.com/questions/2649676/c-win32-api-equivalent-of-cultureinfo-twoletterisolanguagename][1] [1]:http://stackoverflow.com/questions/2649676/C-Win32的API-等效的-的CultureInfo-twoletterisolanguagename – ErnieE

回答

0

它可以用GetLocaleInfo。 LCTYPE是LOCALE_SENGLANGUAGE/LOCALE_SENGCOUNTRY,我猜。

#include <windows.h> 
#include <stdio.h> 

int 
main() { 
    char language[256] = {0}, country[256] = {0}; 
    GetLocaleInfo(
    GetUserDefaultLCID(), 
    LOCALE_SENGLANGUAGE, 
    language, 
    sizeof(language)); 
    GetLocaleInfo(
    GetUserDefaultLCID(), 
    LOCALE_SENGCOUNTRY, 
    country, 
    sizeof(country)); 
    printf("%s (%s)\n", language, country); 
} 
// I got "Japanese (Japan)"