From: Jaroslav Kysela Date: Fri, 1 Jan 2016 18:47:13 +0000 (+0100) Subject: locale: fix the ui / epg language lists X-Git-Tag: v4.2.1~1250 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d48352b86ff2a8a7541b3bc1f3ef36a315b80ebc;p=thirdparty%2Ftvheadend.git locale: fix the ui / epg language lists --- diff --git a/src/access.c b/src/access.c index 5a398824b..150942d40 100644 --- a/src/access.c +++ b/src/access.c @@ -1364,6 +1364,15 @@ language_get_list ( void *obj, const char *lang ) return m; } +htsmsg_t * +language_get_ui_list ( void *obj, const char *lang ) +{ + htsmsg_t *m = htsmsg_create_map(); + htsmsg_add_str(m, "type", "api"); + htsmsg_add_str(m, "uri", "language/ui_locale"); + return m; +} + htsmsg_t * user_get_userlist ( void *obj, const char *lang ) { @@ -1464,7 +1473,7 @@ const idclass_t access_entry_class = { .type = PT_STR, .id = "langui", .name = N_("Web interface language"), - .list = language_get_list, + .list = language_get_ui_list, .off = offsetof(access_entry_t, ae_lang_ui), .opts = PO_ADVANCED, }, diff --git a/src/access.h b/src/access.h index a26306103..c4e94dcd1 100644 --- a/src/access.h +++ b/src/access.h @@ -317,6 +317,7 @@ void access_done(void); * */ htsmsg_t *language_get_list ( void *obj, const char *lang ); +htsmsg_t *language_get_ui_list ( void *obj, const char *lang ); htsmsg_t *user_get_userlist ( void *obj, const char *lang ); #endif /* ACCESS_H_ */ diff --git a/src/api/api_language.c b/src/api/api_language.c index a37218855..0c5ab9cc0 100644 --- a/src/api/api_language.c +++ b/src/api/api_language.c @@ -46,8 +46,8 @@ api_language_enum } static int -api_language_locale_enum - ( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) +_api_language_locale_enum + ( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp, int all ) { const lang_code_t *c = lang_codes; htsmsg_t *l, *e; @@ -58,7 +58,7 @@ api_language_locale_enum l = htsmsg_create_list(); while (c->code2b) { e = htsmsg_create_map(); - if (tvh_gettext_langcode_valid(c->code2b)) { + if (all || tvh_gettext_langcode_valid(c->code2b)) { htsmsg_add_str(e, "key", c->code2b); htsmsg_add_str(e, "val", c->desc); htsmsg_add_msg(l, NULL, e); @@ -70,7 +70,7 @@ api_language_locale_enum if (s[0] == '\0' || s[1] == '\0') break; snprintf(buf1, sizeof(buf1), "%s_%c%c", c->code2b, s[0], s[1]); - if (tvh_gettext_langcode_valid(buf1)) { + if (all || tvh_gettext_langcode_valid(buf1)) { snprintf(buf2, sizeof(buf2), "%s (%c%c)", c->desc, s[0], s[1]); e = htsmsg_create_map(); htsmsg_add_str(e, "key", buf1); @@ -86,12 +86,27 @@ api_language_locale_enum return 0; } +static int +api_language_locale_enum + ( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) +{ + return _api_language_locale_enum(perm, opaque, op, args, resp, 1); +} + +static int +api_language_ui_locale_enum + ( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) +{ + return _api_language_locale_enum(perm, opaque, op, args, resp, 0); +} + void api_language_init ( void ) { static api_hook_t ah[] = { - { "language/list", ACCESS_ANONYMOUS, api_language_enum, NULL }, - { "language/locale", ACCESS_ANONYMOUS, api_language_locale_enum, NULL }, + { "language/list", ACCESS_ANONYMOUS, api_language_enum, NULL }, + { "language/locale", ACCESS_ANONYMOUS, api_language_locale_enum, NULL }, + { "language/ui_locale", ACCESS_ANONYMOUS, api_language_ui_locale_enum, NULL }, { NULL }, }; diff --git a/src/config.c b/src/config.c index a768d944f..f9da50a3c 100644 --- a/src/config.c +++ b/src/config.c @@ -2089,7 +2089,7 @@ const idclass_t config_class = { .name = N_("User language"), .desc = N_("The default language to use if the user " " language isn't set in the Access Entries tab."), - .list = language_get_list, + .list = language_get_ui_list, .off = offsetof(config_t, language_ui), .group = 3 },