void LocaleDisplayNamesTest::TestUldnDisplayContext() { const LocNameDispContextItem * ctxtItemPtr; for (ctxtItemPtr = ctxtItems; ctxtItemPtr->displayLocale != NULL; ctxtItemPtr++) { UDisplayContext contexts[2] = {ctxtItemPtr->dialectHandling, ctxtItemPtr->capitalization}; UErrorCode status = U_ZERO_ERROR; ULocaleDisplayNames * uldn = uldn_openForContext(ctxtItemPtr->displayLocale, contexts, 2, &status); if (U_FAILURE(status)) { errln(UnicodeString("FAIL: uldn_openForContext failed for locale ") + ctxtItemPtr->displayLocale + ", dialectHandling " + ctxtItemPtr->dialectHandling + ", capitalization " + ctxtItemPtr->capitalization); } else { UDisplayContext dialectHandling = uldn_getContext(uldn, UDISPCTX_TYPE_DIALECT_HANDLING, &status); UDisplayContext capitalization = uldn_getContext(uldn, UDISPCTX_TYPE_CAPITALIZATION, &status); if (U_FAILURE(status)) { errln(UnicodeString("FAIL: uldn_getContext status ") + (int)status); } else if (dialectHandling != ctxtItemPtr->dialectHandling || capitalization != ctxtItemPtr->capitalization) { errln("FAIL: uldn_getContext retrieved incorrect dialectHandling or capitalization"); } else { UChar nameBuf[ULOC_FULLNAME_CAPACITY]; int32_t len = uldn_localeDisplayName(uldn, ctxtItemPtr->localeToBeNamed, nameBuf, ULOC_FULLNAME_CAPACITY, &status); if (U_FAILURE(status)) { dataerrln(UnicodeString("FAIL: uldn_localeDisplayName status: ") + u_errorName(status)); } else if (u_strcmp(ctxtItemPtr->result, nameBuf) != 0) { UnicodeString exp(ctxtItemPtr->result, u_strlen(ctxtItemPtr->result)); UnicodeString got(nameBuf, len); dataerrln(UnicodeString("FAIL: uldn_localeDisplayName, capitalization ") + ctxtItemPtr->capitalization + ", expected " + exp + ", got " + got ); } } uldn_close(uldn); } } }
void LocaleDisplayNamesTest::TestUldnComponents() { UErrorCode status = U_ZERO_ERROR; const int32_t kMaxResultSize = 150; // long enough UChar result[150]; ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status); test_assert(U_SUCCESS(status)); if (U_FAILURE(status)) { return; } // "en_Hant_US_PRE_EURO@calendar=gregorian"; { int32_t len = uldn_languageDisplayName(ldn, "en", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Englisch", str); } { int32_t len = uldn_scriptDisplayName(ldn, "Hant", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Traditionell", str); } { int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Traditionell", str); } { int32_t len = uldn_regionDisplayName(ldn, "US", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Vereinigte Staaten", str); } { int32_t len = uldn_variantDisplayName(ldn, "PRE_EURO", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("PRE_EURO", str); } { int32_t len = uldn_keyDisplayName(ldn, "calendar", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Kalender", str); } { int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result, kMaxResultSize, &status); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Gregorianischer Kalender", str); } uldn_close(ldn); }
void LocaleDisplayNamesTest::TestUldnOpenDialect() { UErrorCode status = U_ZERO_ERROR; const int32_t kMaxResultSize = 150; // long enough UChar result[150]; ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_NAMES, &status); int32_t len = uldn_localeDisplayName(ldn, "en_GB", result, kMaxResultSize, &status); uldn_close(ldn); test_assert(U_SUCCESS(status)); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("British English", str); }
void LocaleDisplayNamesTest::TestUldnOpen() { UErrorCode status = U_ZERO_ERROR; const int32_t kMaxResultSize = 150; // long enough UChar result[150]; ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status); int32_t len = uldn_localeDisplayName(ldn, "de_DE", result, kMaxResultSize, &status); uldn_close(ldn); test_assert(U_SUCCESS(status)); UnicodeString str(result, len, kMaxResultSize); test_assert_equal("Deutsch (Deutschland)", str); // make sure that NULL gives us the default locale as usual ldn = uldn_open(NULL, ULDN_STANDARD_NAMES, &status); const char *locale = uldn_getLocale(ldn); if(0 != uprv_strcmp(uloc_getDefault(), locale)) { errln("uldn_getLocale(uldn_open(NULL))=%s != default locale %s\n", locale, uloc_getDefault()); } uldn_close(ldn); test_assert(U_SUCCESS(status)); }
/* Function: GetNativeCalendarName Gets the native calendar name. */ static ResultCode GetNativeCalendarName(const char* locale, CalendarId calendarId, UChar* nativeName, int32_t stringCapacity) { UErrorCode err = U_ZERO_ERROR; ULocaleDisplayNames* pDisplayNames = uldn_open(locale, ULDN_STANDARD_NAMES, &err); uldn_keyValueDisplayName(pDisplayNames, "calendar", GetCalendarName(calendarId), nativeName, stringCapacity, &err); uldn_close(pDisplayNames); return GetResultCode(err); }
void LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() { UErrorCode status = U_ZERO_ERROR; const int32_t kMaxResultSize = 150; // long enough UChar result[150]; const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook"; const char *target = "English (Traditional, United States, VALLEY, " "Gregorian Calendar, Phonebook Sort Order)"; ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_STANDARD_NAMES, &status); int32_t len = uldn_localeDisplayName(ldn, locname, result, kMaxResultSize, &status); uldn_close(ldn); test_assert(U_SUCCESS(status)); UnicodeString str(result, len, kMaxResultSize); test_assert_equal(target, str); }
int main() { UErrorCode status = U_ZERO_ERROR; char theirLocale[ULOC_FULLNAME_CAPACITY]; uloc_forLanguageTag("es-419-u-nu-roman", // IETF BCP 47 theirLocale, ULOC_FULLNAME_CAPACITY, NULL, &status); // theirLocale is now: “es_419@numbers=roman” UChar str[256]; const char *ourLocale = uloc_getDefault(); ULocaleDisplayNames *ldn = uldn_open(ourLocale, ULDN_DIALECT_NAMES, &status); uldn_localeDisplayName(ldn, theirLocale, str, 256, &status); uldn_close(ldn); if(U_FAILURE(status)) { puts(u_errorName(status)); return 1; } u_printf("\n==> %S!\n \n", str); return 0; }