]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
fix more internationalization issues, fixes #3202
authorJaroslav Kysela <perex@perex.cz>
Fri, 23 Oct 2015 13:20:12 +0000 (15:20 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 23 Oct 2015 13:33:23 +0000 (15:33 +0200)
13 files changed:
src/api/api_service.c
src/api/api_status.c
src/config.c
src/dvr/dvr_rec.c
src/idnode.c
src/input/mpegts/mpegts_input.c
src/notify.c
src/notify.h
src/subscriptions.c
src/subscriptions.h
src/tvhlog.c
src/webui/comet.c
src/webui/webui.h

index 3afa19a630ac8bb1dee714870e29ba675ee91753..0efe837ab389934ca7852e80ff721a335dc74f30 100644 (file)
@@ -90,7 +90,7 @@ api_mapper_status
 void
 api_service_mapper_notify ( void )
 {
-  notify_by_msg("servicemapper", api_mapper_status_msg());
+  notify_by_msg("servicemapper", api_mapper_status_msg(), 0);
 }
 
 static htsmsg_t *
index 9adce24ad0c7a16cc006ef318a0d899c3fcc82cd..ebf8819e2f66a0ec2efa8fb3bb47878f64bbca6a 100644 (file)
@@ -71,7 +71,7 @@ api_status_subscriptions
   c = 0;
   pthread_mutex_lock(&global_lock);
   LIST_FOREACH(ths, &subscriptions, ths_global_link) {
-    e = subscription_create_msg(ths);
+    e = subscription_create_msg(ths, perm->aa_lang_ui);
     htsmsg_add_msg(l, NULL, e);
     c++;
   }
index 6bd9bb5a7a206f0ce6b46cb722c7a78f7ed3a5fc..ae425e1e5e6c3a0a614463a3e50a9cb06eeda0ad 100644 (file)
@@ -1821,11 +1821,12 @@ config_class_info_area_set ( void *o, const void *v )
 }
 
 static void
-config_class_info_area_list1 ( htsmsg_t *m, const char *key, const char *val )
+config_class_info_area_list1 ( htsmsg_t *m, const char *key,
+                               const char *val, const char *lang )
 {
   htsmsg_t *e = htsmsg_create_map();
   htsmsg_add_str(e, "key", key);
-  htsmsg_add_str(e, "val", val);
+  htsmsg_add_str(e, "val", tvh_gettext_lang(lang, val));
   htsmsg_add_msg(m, NULL, e);
 }
 
@@ -1833,9 +1834,9 @@ static htsmsg_t *
 config_class_info_area_list ( void *o, const char *lang )
 {
   htsmsg_t *m = htsmsg_create_list();
-  config_class_info_area_list1(m, "login", N_("Login/Logout"));
-  config_class_info_area_list1(m, "storage", N_("Storage space"));
-  config_class_info_area_list1(m, "time", N_("Time"));
+  config_class_info_area_list1(m, "login", N_("Login/Logout"), lang);
+  config_class_info_area_list1(m, "storage", N_("Storage space"), lang);
+  config_class_info_area_list1(m, "time", N_("Time"), lang);
   return m;
 }
 
index 81a26b4c3f866cb18a7e2fd0a8f85825b14e32b8..8d34c599258e19e35f31f332ef2afb4fbd2df6e3 100644 (file)
@@ -1334,7 +1334,7 @@ dvr_get_disk_space_tcb(void *opaque, int dearmed)
     htsmsg_add_s64(m, "totaldiskspace", dvr_btotal);
     pthread_mutex_unlock(&dvr_disk_space_mutex);
 
-    notify_by_msg("diskspaceUpdate", m);
+    notify_by_msg("diskspaceUpdate", m, 0);
   }
 
   free(opaque);
index 0d06542f95d5acfcc87876df941aa3d6ece74e5d..e3bffea46c7e7e8ebad3be037f97e7d5288d9e17 100644 (file)
@@ -1613,7 +1613,7 @@ idnode_notify_title_changed (void *in, const char *lang)
   htsmsg_t *m = htsmsg_create_map();
   htsmsg_add_str(m, "uuid", idnode_uuid_as_sstr(in));
   htsmsg_add_str(m, "text", idnode_get_title(in, lang));
-  notify_by_msg("title", m);
+  notify_by_msg("title", m, 0);
   idnode_notify_changed(in);
 }
 
index cb797328782aa21ab41bc68face41413c3c2f640..6283f7fe9f0cfe88f16eddca6efae025c9f7e3f8 100644 (file)
@@ -1594,7 +1594,7 @@ mpegts_input_status_timer ( void *p )
     mpegts_input_stream_status(mmi, &st);
     e = tvh_input_stream_create_msg(&st);
     htsmsg_add_u32(e, "update", 1);
-    notify_by_msg("input_status", e);
+    notify_by_msg("input_status", e, 0);
     subs += st.subs_count;
     tvh_input_stream_destroy(&st);
   }
index b7b8b1a87a08b9a4177a6a5e80ab89068ff45a89..79f26d2af6a6a20f3ca7058069c04cc163fc8187 100644 (file)
@@ -33,10 +33,10 @@ static pthread_t              notify_tid;
 static void*                  notify_thread(void* p);
 
 void
-notify_by_msg(const char *class, htsmsg_t *m)
+notify_by_msg(const char *class, htsmsg_t *m, int rewrite)
 {
   htsmsg_add_str(m, "notificationClass", class);
-  comet_mailbox_add_message(m, 0);
+  comet_mailbox_add_message(m, 0, rewrite);
   htsmsg_destroy(m);
 }
 
@@ -46,7 +46,7 @@ notify_reload(const char *class)
 {
   htsmsg_t *m = htsmsg_create_map();
   htsmsg_add_u32(m, "reload", 1);
-  notify_by_msg(class, m);
+  notify_by_msg(class, m, 0);
 }
 
 void
@@ -103,7 +103,7 @@ notify_thread ( void *p )
     pthread_mutex_lock(&global_lock);
 
     HTSMSG_FOREACH(f, q)
-      notify_by_msg(f->hmf_name, htsmsg_detach_submsg(f));
+      notify_by_msg(f->hmf_name, htsmsg_detach_submsg(f), 0);
 
     /* Finished */
     pthread_mutex_unlock(&global_lock);
index c5da84c81715aeb8e7123cde68f83ed0efefe9f4..a494516291ab586c143389bf2b18bb9369dbf3ca 100644 (file)
@@ -21,7 +21,9 @@
 
 #include "htsmsg.h"
 
-void notify_by_msg(const char *class, htsmsg_t *m);
+#define NOTIFY_REWRITE_SUBSCRIPTIONS 1
+
+void notify_by_msg(const char *class, htsmsg_t *m, int rewrite);
 
 void notify_reload(const char *class);
 
index 19368c666a9bf86894600db80db4d386cfbb4feb..8ff7596a49e7c3cbb616fc4896955308609f430c 100644 (file)
@@ -847,7 +847,7 @@ static gtimer_t subscription_status_timer;
  * Serialize info about subscription
  */
 htsmsg_t *
-subscription_create_msg(th_subscription_t *s)
+subscription_create_msg(th_subscription_t *s, const char *lang)
 {
   htsmsg_t *m = htsmsg_create_map();
   descramble_info_t *di;
@@ -860,24 +860,24 @@ subscription_create_msg(th_subscription_t *s)
   const char *state;
   switch(s->ths_state) {
   default:
-    state = "Idle";
+    state = N_("Idle");
     break;
 
   case SUBSCRIPTION_TESTING_SERVICE:
-    state = "Testing";
+    state = N_("Testing");
     break;
     
   case SUBSCRIPTION_GOT_SERVICE:
-    state = "Running";
+    state = N_("Running");
     break;
 
   case SUBSCRIPTION_BAD_SERVICE:
-    state = "Bad";
+    state = N_("Bad");
     break;
   }
 
 
-  htsmsg_add_str(m, "state", state);
+  htsmsg_add_str(m, "state", lang ? tvh_gettext_lang(lang, state) : state);
 
   if(s->ths_hostname != NULL)
     htsmsg_add_str(m, "hostname", s->ths_hostname);
@@ -939,9 +939,9 @@ subscription_status_callback ( void *p )
     s->ths_bytes_out_avg = (int)(out_curr - out_prev);
     s->ths_total_bytes_out_prev = s->ths_total_bytes_out;
 
-    htsmsg_t *m = subscription_create_msg(s);
+    htsmsg_t *m = subscription_create_msg(s, NULL);
     htsmsg_add_u32(m, "updateEntry", 1);
-    notify_by_msg("subscriptions", m);
+    notify_by_msg("subscriptions", m, NOTIFY_REWRITE_SUBSCRIPTIONS);
     count++;
   }
   if (old_count != count) {
index 2f537967dfe17370062ac5b91bbd4d327efc902f..270c34005fea0cb78c72bd0bcbe5bf4e6ef5d1ec 100644 (file)
@@ -215,6 +215,6 @@ static inline int subscriptions_active(void)
   { return LIST_FIRST(&subscriptions) != NULL; }
 
 struct htsmsg;
-struct htsmsg *subscription_create_msg(th_subscription_t *s);
+struct htsmsg *subscription_create_msg(th_subscription_t *s, const char *lang);
 
 #endif /* SUBSCRIPTIONS_H */
index 5af7bce2db4cb140bac4ef50f86781c0b8ac63d9..7ba7b8a5f8ac64b7ebd5b731e04bd02cb171c5dd 100644 (file)
@@ -178,7 +178,7 @@ tvhlog_process
     snprintf(buf, sizeof(buf), "%s %s", t, msg->msg);
     htsmsg_add_str(m, "notificationClass", "logmessage");
     htsmsg_add_str(m, "logtxt", buf);
-    comet_mailbox_add_message(m, msg->severity >= LOG_DEBUG);
+    comet_mailbox_add_message(m, msg->severity >= LOG_DEBUG, 0);
     htsmsg_destroy(m);
   }
 
index 1a8c0b81467600db3d55b52255b788c17edd9b8c..9ffb14faf82e903e6d6366fcadc04ada8b5ac0e4 100644 (file)
@@ -35,6 +35,7 @@
 #include "dvr/dvr.h"
 #include "webui/webui.h"
 #include "access.h"
+#include "notify.h"
 #include "tcp.h"
 
 static pthread_mutex_t comet_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -54,6 +55,7 @@ int comet_running;
 
 typedef struct comet_mailbox {
   char *cmb_boxid; /* SHA-1 hash */
+  char *cmb_lang;  /* UI language */
   htsmsg_t *cmb_messages; /* A vector */
   time_t cmb_last_used;
   LIST_ENTRY(comet_mailbox) cmb_link;
@@ -74,6 +76,7 @@ cmb_destroy(comet_mailbox_t *cmb)
 
   LIST_REMOVE(cmb, cmb_link);
 
+  free(cmb->cmb_lang);
   free(cmb->cmb_boxid);
   free(cmb);
 }
@@ -103,7 +106,7 @@ comet_flush(void)
  *
  */
 static comet_mailbox_t *
-comet_mailbox_create(void)
+comet_mailbox_create(const char *lang)
 {
   comet_mailbox_t *cmb = calloc(1, sizeof(comet_mailbox_t));
 
@@ -127,6 +130,7 @@ comet_mailbox_create(void)
   id[40] = 0;
 
   cmb->cmb_boxid = strdup(id);
+  cmb->cmb_lang = lang ? strdup(lang) : NULL;
   time(&cmb->cmb_last_used);
   mailbox_tally++;
 
@@ -234,7 +238,7 @@ comet_mailbox_poll(http_connection_t *hc, const char *remain, void *opaque)
        break;
     
   if(cmb == NULL) {
-    cmb = comet_mailbox_create();
+    cmb = comet_mailbox_create(hc->hc_access->aa_lang_ui);
     comet_access_update(hc, cmb);
     comet_serverIpPort(hc, cmb);
   }
@@ -332,13 +336,35 @@ comet_done(void)
   pthread_mutex_unlock(&comet_mutex);
 }
 
+/**
+ *
+ */
+static void
+comet_mailbox_rewrite_str(htsmsg_t *m, const char *key, const char *lang)
+{
+  const char *s = htsmsg_get_str(m, key);
+  if (s)
+    htsmsg_set_str(m, key, tvh_gettext_lang(lang, s));
+}
+
+static void
+comet_mailbox_rewrite_msg(int rewrite, htsmsg_t *m, const char *lang)
+{
+  switch (rewrite) {
+  case NOTIFY_REWRITE_SUBSCRIPTIONS:
+    comet_mailbox_rewrite_str(m, "state", lang);
+    break;
+  }
+}
+
 /**
  *
  */
 void
-comet_mailbox_add_message(htsmsg_t *m, int isdebug)
+comet_mailbox_add_message(htsmsg_t *m, int isdebug, int rewrite)
 {
   comet_mailbox_t *cmb;
+  htsmsg_t *e;
 
   pthread_mutex_lock(&comet_mutex);
 
@@ -350,7 +376,10 @@ comet_mailbox_add_message(htsmsg_t *m, int isdebug)
 
       if(cmb->cmb_messages == NULL)
         cmb->cmb_messages = htsmsg_create_list();
-      htsmsg_add_msg(cmb->cmb_messages, NULL, htsmsg_copy(m));
+      e = htsmsg_copy(m);
+      if (cmb->cmb_lang && rewrite)
+        comet_mailbox_rewrite_msg(rewrite, e, cmb->cmb_lang);
+      htsmsg_add_msg(cmb->cmb_messages, NULL, e);
     }
   }
 
index dc6132b0c662f74868d6da3b38ca5e2c3019d59e..5ffe62125932b5e12e43fdcd210532562bc86fcf 100644 (file)
@@ -49,7 +49,7 @@ void comet_init(void);
 
 void comet_done(void);
 
-void comet_mailbox_add_message(htsmsg_t *m, int isdebug);
+void comet_mailbox_add_message(htsmsg_t *m, int isdebug, int rewrite);
 
 void comet_flush(void);