// Collator.display_name {{{ static PyObject * icu_Collator_display_name(icu_Collator *self, void *closure) { const char *loc = NULL; UErrorCode status = U_ZERO_ERROR; UChar dname[400]; int32_t sz = 0; loc = ucol_getLocaleByType(self->collator, ULOC_ACTUAL_LOCALE, &status); if (loc == NULL) { PyErr_SetString(PyExc_Exception, "Failed to get actual locale"); return NULL; } sz = ucol_getDisplayName(loc, "en", dname, sizeof(dname), &status); if (U_FAILURE(status)) {PyErr_SetString(PyExc_ValueError, u_errorName(status)); return NULL; } return icu_to_python(dname, sz); }
// Collator.display_name {{{ static PyObject * icu_Collator_display_name(icu_Collator *self, void *closure) { const char *loc = NULL; UErrorCode status = U_ZERO_ERROR; UChar dname[400]; char buf[100]; loc = ucol_getLocaleByType(self->collator, ULOC_ACTUAL_LOCALE, &status); if (loc == NULL || U_FAILURE(status)) { PyErr_SetString(PyExc_Exception, "Failed to get actual locale"); return NULL; } ucol_getDisplayName(loc, "en", dname, 100, &status); if (U_FAILURE(status)) return PyErr_NoMemory(); u_strToUTF8(buf, 100, NULL, dname, -1, &status); if (U_FAILURE(status)) { PyErr_SetString(PyExc_Exception, "Failed to convert dname to UTF-8"); return NULL; } return Py_BuildValue("s", buf); }