2012-11-27 40 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)"