static htsmsg_t * codec_profile_audio_class_language_list(void *obj, const char *lang) { htsmsg_t *list = htsmsg_create_list(); lang_code_t *lc = (lang_code_t *)lang_codes; char lc_buf[128]; while (lc->code2b) { htsmsg_t *map = NULL; if (!strcmp(lc->code2b, "und")) { map = htsmsg_create_key_val("", tvh_gettext_lang(lang, N_("Use original"))); } else { memset(lc_buf, 0, sizeof(lc_buf)); if (!str_snprintf(lc_buf, sizeof(lc_buf), "%s (%s)", lc->desc, lc->code2b)) { map = htsmsg_create_key_val(lc->code2b, lc_buf); } else { htsmsg_destroy(list); list = NULL; break; } } htsmsg_add_msg(list, NULL, map); lc++; } return list; }
static void epggrab_mod_class_title (idnode_t *self, const char *lang, char *dst, size_t dstsize) { epggrab_module_t *mod = (epggrab_module_t *)self; const char *s1 = tvh_gettext_lang(lang, epggrab_module_type(mod)); const char *s2 = tvh_str_default(mod->name, mod->id); snprintf(dst, dstsize, "%s: %s", s1, s2); }
static const void *description_get(wizard_page_t *page, const char **doc) { htsbuf_queue_t q; if (!page->desc) { htsbuf_queue_init(&q, 0); for (; *doc; doc++) { if (*doc[0] == '\xff') { htsbuf_append_str(&q, tvh_gettext_lang(config.language_ui, *doc + 1)); } else { htsbuf_append_str(&q, *doc); } } page->desc = htsbuf_to_string(&q); htsbuf_queue_flush(&q); } return &page->desc; }
static htsmsg_t * epggrab_module_ota_scrapper_config_list ( void *o, const char *lang ) { htsmsg_t *m = htsmsg_create_list(); htsmsg_t *e = htsmsg_create_map(); htsmsg_add_str(e, "key", ""); htsmsg_add_str(e, "val", tvh_gettext_lang(lang, N_("Use default configuration"))); htsmsg_add_msg(m, NULL, e); htsmsg_t *config; /* We load all the config so we can get the names of ones that are * valid. This is a bit of overhead but we are rarely called since * this is for the configuration GUI drop-down. */ if((config = hts_settings_load_r(1, "epggrab/eit/scrape")) != NULL) { htsmsg_field_t *f; HTSMSG_FOREACH(f, config) { e = htsmsg_create_map(); htsmsg_add_str(e, "key", htsmsg_field_name(f)); htsmsg_add_str(e, "val", htsmsg_field_name(f)); htsmsg_add_msg(m, NULL, e); }
static int md_props(htsbuf_queue_t *hq, htsmsg_t *m, const char *lang, int nl) { htsmsg_t *l, *n, *e, *x; htsmsg_field_t *f, *f2; const char *s; int first = 1, b; l = htsmsg_get_list(m, "props"); HTSMSG_FOREACH(f, l) { n = htsmsg_field_get_map(f); if (!n) continue; if (!htsmsg_get_bool(n, "noui", &b) && b) continue; s = htsmsg_get_str(n, "caption"); if (!s) continue; if (first) { nl = md_nl(hq, nl); htsbuf_append_str(hq, "#### "); htsbuf_append_str(hq, tvh_gettext_lang(lang, N_("Items"))); md_nl(hq, 1); md_nl(hq, 1); htsbuf_append_str(hq, tvh_gettext_lang(lang, N_("The items have the following functions:"))); md_nl(hq, 1); first = 0; } nl = md_nl(hq, nl); md_style(hq, "**", s); if (!htsmsg_get_bool(n, "rdonly", &b) && b) { htsbuf_append(hq, " _", 2); htsbuf_append_str(hq, tvh_gettext_lang(lang, N_("(Read-only)"))); htsbuf_append(hq, "_", 1); } md_nl(hq, 1); s = htsmsg_get_str(n, "description"); if (s) { md_text(hq, ": ", " ", s); md_nl(hq, 1); } s = htsmsg_get_str(n, "doc"); if (s) { htsbuf_append_str(hq, s); md_nl(hq, 1); } if (!htsmsg_get_bool_or_default(n, "doc_nlist", 0)) { e = htsmsg_get_list(n, "enum"); if (e) { HTSMSG_FOREACH(f2, e) { x = htsmsg_field_get_map(f2); if (x) { s = htsmsg_get_str(x, "val"); } else { s = htsmsg_field_get_string(f2); } if (s) { md_nl(hq, 1); htsbuf_append(hq, " * ", 4); md_style(hq, "**", s); } } md_nl(hq, 1); }
static int http_markdown_class(http_connection_t *hc, const char *clazz) { const idclass_t *ic; const char *lang = hc->hc_access->aa_lang_ui; htsbuf_queue_t *hq = &hc->hc_reply; htsmsg_t *m, *l, *n, *e, *x; htsmsg_field_t *f, *f2; const char *s, **doc; int nl = 0, first = 1; pthread_mutex_lock(&global_lock); ic = idclass_find(clazz); if (ic == NULL) { pthread_mutex_unlock(&global_lock); return HTTP_STATUS_NOT_FOUND; } doc = ic->ic_doc; m = idclass_serialize(ic, lang); pthread_mutex_unlock(&global_lock); s = htsmsg_get_str(m, "caption"); if (s) { md_header(hq, "##", s); nl = md_nl(hq, 1); } if (doc) { for (; *doc; doc++) { if (*doc[0] == '\xff') { htsbuf_append_str(hq, tvh_gettext_lang(lang, *doc + 1)); } else { htsbuf_append_str(hq, *doc); } } } l = htsmsg_get_list(m, "props"); HTSMSG_FOREACH(f, l) { n = htsmsg_field_get_map(f); if (!n) continue; s = htsmsg_get_str(n, "caption"); if (!s) continue; if (first) { nl = md_nl(hq, nl); htsbuf_append_str(hq, "####"); htsbuf_append_str(hq, tvh_gettext_lang(lang, N_("Items"))); md_nl(hq, 1); md_nl(hq, 1); htsbuf_append_str(hq, tvh_gettext_lang(lang, N_("The items have the following functions:"))); md_nl(hq, 1); first = 0; } nl = md_nl(hq, nl); md_style(hq, "**", s); md_nl(hq, 1); s = htsmsg_get_str(n, "description"); if (s) { md_text(hq, ": ", " ", s); md_nl(hq, 1); } e = htsmsg_get_list(n, "enum"); if (e) { HTSMSG_FOREACH(f2, e) { x = htsmsg_field_get_map(f2); if (x) { s = htsmsg_get_str(x, "val"); } else { s = htsmsg_field_get_string(f2); } if (s) { md_nl(hq, 1); htsbuf_append(hq, " * ", 4); md_style(hq, "**", s); } } md_nl(hq, 1); }