icutool.c
text/x-csrc
#include <stdbool.h>
#include <stdio.h>
#include <unicode/ucol.h>
#define CAPACITY 1024
int main(int argc, char *argv[])
{
UErrorCode status;
UCollator *collator;
const char *requested_locale = NULL;
const char *valid_locale;
const char *actual_locale;
char canonical[CAPACITY] = {0};
char variant[CAPACITY] = {0};
char basename[CAPACITY] = {0};
char getname[CAPACITY] = {0};
char langtag[CAPACITY] = {0};
char langtag_s[CAPACITY] = {0};
if (argc > 1)
{
requested_locale = argv[1];
status = U_ZERO_ERROR;
uloc_canonicalize(requested_locale, canonical, CAPACITY, &status);
if (U_FAILURE(status))
printf("canonicalize error: %s\n", u_errorName(status));
status = U_ZERO_ERROR;
uloc_getBaseName(requested_locale, basename, CAPACITY, &status);
if (U_FAILURE(status))
printf("basename error: %s\n", u_errorName(status));
status = U_ZERO_ERROR;
uloc_getName(requested_locale, getname, CAPACITY, &status);
if (U_FAILURE(status))
printf("getname error: %s\n", u_errorName(status));
status = U_ZERO_ERROR;
uloc_getVariant(requested_locale, variant, CAPACITY, &status);
if (U_FAILURE(status))
printf("variant error: %s\n", u_errorName(status));
status = U_ZERO_ERROR;
uloc_toLanguageTag(requested_locale, langtag, CAPACITY, false, &status);
if (U_FAILURE(status))
printf("langtag error: %s\n", u_errorName(status));
uloc_toLanguageTag(requested_locale, langtag_s, CAPACITY, true, &status);
if (U_FAILURE(status))
printf("langtag strict error: %s\n", u_errorName(status));
}
else if (argc > 2)
fprintf(stderr, "too many arguments");
status = U_ZERO_ERROR;
collator = ucol_open(requested_locale, &status);
valid_locale = ucol_getLocaleByType(collator, ULOC_VALID_LOCALE, &status);
actual_locale = ucol_getLocaleByType(collator, ULOC_ACTUAL_LOCALE, &status);
printf("canonicalize: %s\n", canonical);
printf("langtag : %s\n", langtag);
printf("langtag strict: %s\n", langtag_s);
printf("variant: %s\n", variant);
printf("getBaseName: %s\n", basename);
printf("getName: %s\n", getname);
printf("valid locale: %s\n", valid_locale);
printf("actual locale: %s\n", actual_locale);
ucol_close(collator);
}