]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
locale: fix the ui / epg language lists
authorJaroslav Kysela <perex@perex.cz>
Fri, 1 Jan 2016 18:47:13 +0000 (19:47 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 1 Jan 2016 18:47:13 +0000 (19:47 +0100)
src/access.c
src/access.h
src/api/api_language.c
src/config.c

index 5a398824bbe8361b816424445ded9ca912de267a..150942d405ff7b41c17f64f0fb6d354094ec8a47 100644 (file)
@@ -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,
     },
index a26306103c27cbc01cca4083c0c9c8a0d742afb3..c4e94dcd1b1df0b21dbf49732e13d6df349050b9 100644 (file)
@@ -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_ */
index a3721885508a3d473640e23acd31fd7846aeed70..0c5ab9cc0d6bb1588911b1e715b5872989e5b3ac 100644 (file)
@@ -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 },
   };
index a768d944f98d2c3adc72ee1149488a04c03e4f0c..f9da50a3c18310de5fbe3b5692f7dd8ed94323b1 100644 (file)
@@ -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
     },