Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
locale: fix the ui / epg language lists
  • Loading branch information
perexg committed Jan 1, 2016
1 parent 188b93a commit d48352b
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 8 deletions.
11 changes: 10 additions & 1 deletion src/access.c
Expand Up @@ -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 )
{
Expand Down Expand Up @@ -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,
},
Expand Down
1 change: 1 addition & 0 deletions src/access.h
Expand Up @@ -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_ */
27 changes: 21 additions & 6 deletions src/api/api_language.c
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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 },
};
Expand Down
2 changes: 1 addition & 1 deletion src/config.c
Expand Up @@ -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
},
Expand Down

0 comments on commit d48352b

Please sign in to comment.