#include "unicode/unistr.h" #include "unicode/locid.h" #include "unicode/ucnv.h" #include int main(int argc, char* argv[]) { UErrorCode status = U_ZERO_ERROR; const char *loc = argv[1]; int32_t hasCountry; UConverter *conv = ucnv_open("utf8", &status); UChar UBuffer[256]; int32_t uBufLen = 0; char buffer[256]; int32_t bufLen = 0; uBufLen = uloc_getDisplayLanguage(loc, "en", UBuffer, 256, &status); bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status); //u_UCharsToChars(UBuffer, buffer, uBufLen); buffer[bufLen] = 0; printf("%s", buffer); if(hasCountry = uloc_getCountry(loc, buffer, 256, &status)) { uBufLen = uloc_getDisplayCountry(loc, "en", UBuffer, 256, &status); bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status); //u_UCharsToChars(UBuffer, buffer, uBufLen); buffer[bufLen] = 0; printf("_%s", buffer); } if(uloc_getVariant(loc, buffer, 256, &status)) { uBufLen = uloc_getDisplayVariant(loc, "en", UBuffer, 256, &status); bufLen = ucnv_fromUChars(conv, buffer, 256, UBuffer, uBufLen, &status); //u_UCharsToChars(UBuffer, buffer, uBufLen); buffer[bufLen] = 0; if(!hasCountry) { printf("_"); } printf("_%s", buffer); } printf("\n"); return 0; }