Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
intl: use own multi-runtime-language gettext fcns
  • Loading branch information
perexg committed Jun 19, 2015
1 parent bfb7644 commit 9180a05
Show file tree
Hide file tree
Showing 63 changed files with 725 additions and 414 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -2,6 +2,7 @@ build.*
.config.mk

src/version.c
src/tvh_locale_inc.c
src/webui/extjs-std.c
src/webui/extjs-debug.c
src/webui/extjs-tv-std.c
Expand Down
11 changes: 5 additions & 6 deletions Makefile
Expand Up @@ -455,7 +455,7 @@ ALL-$(CONFIG_DVBSCAN) += check_dvb_scan
# Internationalization
#
PO-FILES = $(foreach f,$(LANGUAGES),intl/tvheadend.$(f).po)
MO-FILES = $(PO-FILES:%.po=$(BUILDDIR)/%.mo)
SRCS += src/tvh_locale.c

define merge-po
@if ! test -r "$(1)"; then \
Expand Down Expand Up @@ -587,12 +587,11 @@ intl/tvheadend.cs.po: intl/tvheadend.pot
intl/tvheadend.pl.po: intl/tvheadend.pot
$(call merge-po,$@,$<)

${BUILDDIR}/%.mo: %.po
$(BUILDDIR)/src/tvh_locale.o: src/tvh_locale_inc.c
src/tvh_locale_inc.c: $(PO_FILES)
@printf "Building $@\n"
@mkdir -p $(dir $@)/$(subst .,,$(suffix $(basename $@)))/LC_MESSAGES
@$(MSGFMT) -o $@ $<
@ln -sf ../../tvheadend.$(subst .,,$(suffix $(basename $@))).mo \
$(dir $@)/$(subst .,,$(suffix $(basename $@)))/LC_MESSAGES/tvheadend.mo
@./support/poc.py --in="$(PO-FILES)" > $@.new
@mv $@.new $@

# Bundle files
$(BUILDDIR)/bundle.o: $(BUILDDIR)/bundle.c
Expand Down
22 changes: 11 additions & 11 deletions src/access.c
Expand Up @@ -1098,7 +1098,7 @@ access_entry_class_movedown(idnode_t *self)
}

static const char *
access_entry_class_get_title (idnode_t *self)
access_entry_class_get_title (idnode_t *self, const char *lang)
{
access_entry_t *ae = (access_entry_t *)self;

Expand Down Expand Up @@ -1169,9 +1169,9 @@ access_entry_chtag_get(void *o)
}

static char *
access_entry_chtag_rend (void *o)
access_entry_chtag_rend (void *o, const char *lang)
{
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_chtags);
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_chtags, lang);
}

static int
Expand Down Expand Up @@ -1204,9 +1204,9 @@ access_entry_dvr_config_get(void *o)
}

static char *
access_entry_dvr_config_rend (void *o)
access_entry_dvr_config_rend (void *o, const char *lang)
{
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_dvr_configs);
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_dvr_configs, lang);
}

static int
Expand Down Expand Up @@ -1239,25 +1239,25 @@ access_entry_profile_get(void *o)
}

static char *
access_entry_profile_rend (void *o)
access_entry_profile_rend (void *o, const char *lang)
{
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_profiles);
return idnode_list_get_csv1(&((access_entry_t *)o)->ae_profiles, lang);
}

static htsmsg_t *
access_entry_conn_limit_type_enum ( void *p )
access_entry_conn_limit_type_enum ( void *p, const char *lang )
{
static struct strtab
conn_limit_type_tab[] = {
{ N_("All (Streaming + DVR)"), ACCESS_CONN_LIMIT_TYPE_ALL },
{ N_("Streaming"), ACCESS_CONN_LIMIT_TYPE_STREAMING },
{ N_("DVR"), ACCESS_CONN_LIMIT_TYPE_DVR },
};
return strtab2htsmsg(conn_limit_type_tab, 1);
return strtab2htsmsg(conn_limit_type_tab, 1, lang);
}

static htsmsg_t *
language_get_list ( void *obj )
language_get_list ( void *obj, const char *lang )
{
htsmsg_t *m = htsmsg_create_map();
htsmsg_add_str(m, "type", "api");
Expand Down Expand Up @@ -1584,7 +1584,7 @@ passwd_entry_class_delete(idnode_t *self)
}

static const char *
passwd_entry_class_get_title (idnode_t *self)
passwd_entry_class_get_title (idnode_t *self, const char *lang)
{
passwd_entry_t *pw = (passwd_entry_t *)self;

Expand Down
4 changes: 2 additions & 2 deletions src/api/api_access.c
Expand Up @@ -32,7 +32,7 @@ api_passwd_entry_grid
passwd_entry_t *pw;

TAILQ_FOREACH(pw, &passwd_entries, pw_link)
idnode_set_add(ins, (idnode_t*)pw, &conf->filter);
idnode_set_add(ins, (idnode_t*)pw, &conf->filter, perm->aa_lang);
}

static int
Expand Down Expand Up @@ -64,7 +64,7 @@ api_access_entry_grid
access_entry_t *ae;

TAILQ_FOREACH(ae, &access_entries, ae_link)
idnode_set_add(ins, (idnode_t*)ae, &conf->filter);
idnode_set_add(ins, (idnode_t*)ae, &conf->filter, perm->aa_lang);
}

static int
Expand Down
2 changes: 1 addition & 1 deletion src/api/api_bouquet.c
Expand Up @@ -54,7 +54,7 @@ api_bouquet_grid
bouquet_t *bq;

RB_FOREACH(bq, &bouquets, bq_link)
idnode_set_add(ins, (idnode_t*)bq, &conf->filter);
idnode_set_add(ins, (idnode_t*)bq, &conf->filter, perm->aa_lang);
}

static int
Expand Down
4 changes: 2 additions & 2 deletions src/api/api_caclient.c
Expand Up @@ -38,7 +38,7 @@ api_caclient_list
TAILQ_FOREACH(cac, &caclients, cac_link) {
e = htsmsg_create_map();
htsmsg_add_str(e, "uuid", idnode_uuid_as_str(&cac->cac_id));
htsmsg_add_str(e, "title", idnode_get_title(&cac->cac_id));
htsmsg_add_str(e, "title", idnode_get_title(&cac->cac_id, perm->aa_lang));
htsmsg_add_str(e, "status", caclient_get_status(cac));
htsmsg_add_msg(l, NULL, e);
}
Expand All @@ -58,7 +58,7 @@ api_caclient_builders
/* List of available builder classes */
l = htsmsg_create_list();
for (r = caclient_classes; *r; r++)
if ((e = idclass_serialize(*r)))
if ((e = idclass_serialize(*r, perm->aa_lang)))
htsmsg_add_msg(l, NULL, e);

/* Output */
Expand Down
4 changes: 2 additions & 2 deletions src/api/api_channel.c
Expand Up @@ -78,7 +78,7 @@ api_channel_grid

CHANNEL_FOREACH(ch)
if (cfg || channel_access(ch, perm, 0))
idnode_set_add(ins, (idnode_t*)ch, &conf->filter);
idnode_set_add(ins, (idnode_t*)ch, &conf->filter, perm->aa_lang);
}

static int
Expand Down Expand Up @@ -133,7 +133,7 @@ api_channel_tag_grid

TAILQ_FOREACH(ct, &channel_tags, ct_link)
if (cfg || channel_tag_access(ct, perm, 0))
idnode_set_add(ins, (idnode_t*)ct, &conf->filter);
idnode_set_add(ins, (idnode_t*)ct, &conf->filter, perm->aa_lang);
}

static int
Expand Down
14 changes: 7 additions & 7 deletions src/api/api_dvr.c
Expand Up @@ -34,7 +34,7 @@ api_dvr_config_grid

LIST_FOREACH(cfg, &dvrconfigs, config_link)
if (!idnode_perm((idnode_t *)cfg, perm, NULL)) {
idnode_set_add(ins, (idnode_t*)cfg, &conf->filter);
idnode_set_add(ins, (idnode_t*)cfg, &conf->filter, perm->aa_lang);
idnode_perm_unset((idnode_t *)cfg);
}
}
Expand Down Expand Up @@ -90,7 +90,7 @@ api_dvr_entry_grid
dvr_entry_t *de;

LIST_FOREACH(de, &dvrentries, de_global_link)
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
idnode_set_add(ins, (idnode_t*)de, &conf->filter, perm->aa_lang);
}

static void
Expand All @@ -101,7 +101,7 @@ api_dvr_entry_grid_upcoming

LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_upcoming(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
idnode_set_add(ins, (idnode_t*)de, &conf->filter, perm->aa_lang);
}

static void
Expand All @@ -112,7 +112,7 @@ api_dvr_entry_grid_finished

LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_finished(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
idnode_set_add(ins, (idnode_t*)de, &conf->filter, perm->aa_lang);
}

static void
Expand All @@ -123,7 +123,7 @@ api_dvr_entry_grid_failed

LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_failed(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
idnode_set_add(ins, (idnode_t*)de, &conf->filter, perm->aa_lang);
}

static int
Expand Down Expand Up @@ -260,7 +260,7 @@ api_dvr_autorec_grid
dvr_autorec_entry_t *dae;

TAILQ_FOREACH(dae, &autorec_entries, dae_link)
idnode_set_add(ins, (idnode_t*)dae, &conf->filter);
idnode_set_add(ins, (idnode_t*)dae, &conf->filter, perm->aa_lang);
}

static int
Expand Down Expand Up @@ -353,7 +353,7 @@ api_dvr_timerec_grid
dvr_timerec_entry_t *dte;

TAILQ_FOREACH(dte, &timerec_entries, dte_link)
idnode_set_add(ins, (idnode_t*)dte, &conf->filter);
idnode_set_add(ins, (idnode_t*)dte, &conf->filter, perm->aa_lang);
}

static int
Expand Down
2 changes: 1 addition & 1 deletion src/api/api_esfilter.c
Expand Up @@ -30,7 +30,7 @@ api_esfilter_grid
esfilter_t *esf;

TAILQ_FOREACH(esf, &esfilters[cls], esf_link) {
idnode_set_add(ins, (idnode_t*)esf, &conf->filter);
idnode_set_add(ins, (idnode_t*)esf, &conf->filter, perm->aa_lang);
}
}

Expand Down
20 changes: 10 additions & 10 deletions src/api/api_idnode.c
Expand Up @@ -196,12 +196,12 @@ api_idnode_load_by_class
if (_enum) {
e = htsmsg_create_map();
htsmsg_add_str(e, "key", idnode_uuid_as_str(in));
htsmsg_add_str(e, "val", idnode_get_title(in));
htsmsg_add_str(e, "val", idnode_get_title(in, perm->aa_lang));

/* Full record */
} else {
htsmsg_t *flist = api_idnode_flist_conf(args, "list");
e = idnode_serialize0(in, flist, 0);
e = idnode_serialize0(in, flist, 0, perm->aa_lang);
htsmsg_destroy(flist);
}

Expand Down Expand Up @@ -268,9 +268,9 @@ api_idnode_load
err = EPERM;
continue;
}
m = idnode_serialize0(in, flist, 0);
m = idnode_serialize0(in, flist, 0, perm->aa_lang);
if (meta > 0)
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0));
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0, perm->aa_lang));
htsmsg_add_msg(l, NULL, m);
count++;
idnode_perm_unset(in);
Expand All @@ -288,9 +288,9 @@ api_idnode_load
err = EPERM;
} else {
l = htsmsg_create_list();
m = idnode_serialize0(in, flist, 0);
m = idnode_serialize0(in, flist, 0, perm->aa_lang);
if (meta > 0)
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0));
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0, perm->aa_lang));
htsmsg_add_msg(l, NULL, m);
idnode_perm_unset(in);
}
Expand Down Expand Up @@ -411,7 +411,7 @@ api_idnode_tree
if (isroot && node) {
htsmsg_t *m;
idnode_perm_set(node, perm);
m = idnode_serialize(node);
m = idnode_serialize(node, perm->aa_lang);
idnode_perm_unset(node);
htsmsg_add_u32(m, "leaf", idnode_is_leaf(node));
htsmsg_add_msg(*resp, NULL, m);
Expand All @@ -421,12 +421,12 @@ api_idnode_tree
idnode_set_t *v = node ? idnode_get_childs(node) : rootfn(perm);
if (v) {
int i;
idnode_set_sort_by_title(v);
idnode_set_sort_by_title(v, perm->aa_lang);
for(i = 0; i < v->is_count; i++) {
idnode_t *in = v->is_array[i];
htsmsg_t *m;
idnode_perm_set(in, perm);
m = idnode_serialize(v->is_array[i]);
m = idnode_serialize(v->is_array[i], perm->aa_lang);
idnode_perm_unset(in);
htsmsg_add_u32(m, "leaf", idnode_is_leaf(v->is_array[i]));
htsmsg_add_msg(*resp, NULL, m);
Expand Down Expand Up @@ -462,7 +462,7 @@ api_idnode_class
}

err = 0;
*resp = idclass_serialize0(idc, flist, 0);
*resp = idclass_serialize0(idc, flist, 0, perm->aa_lang);

exit:
pthread_mutex_unlock(&global_lock);
Expand Down
2 changes: 1 addition & 1 deletion src/api/api_input.c
Expand Up @@ -32,7 +32,7 @@ api_input_hw_tree ( void )
tvh_hardware_t *th;
idnode_set_t *is = idnode_set_create(0);
TVH_HARDWARE_FOREACH(th)
idnode_set_add(is, &th->th_id, NULL);
idnode_set_add(is, &th->th_id, NULL, NULL);
return is;
}

Expand Down
12 changes: 6 additions & 6 deletions src/api/api_mpegts.c
Expand Up @@ -84,7 +84,7 @@ api_mpegts_network_grid
mpegts_network_t *mn;

LIST_FOREACH(mn, &mpegts_network_all, mn_global_link) {
idnode_set_add(ins, (idnode_t*)mn, &conf->filter);
idnode_set_add(ins, (idnode_t*)mn, &conf->filter, perm->aa_lang);
}
}

Expand All @@ -98,7 +98,7 @@ api_mpegts_network_builders
/* List of available builder classes */
l = htsmsg_create_list();
LIST_FOREACH(mnb, &mpegts_network_builders, link)
if ((e = idclass_serialize(mnb->idc)))
if ((e = idclass_serialize(mnb->idc, perm->aa_lang)))
htsmsg_add_msg(l, NULL, e);

/* Output */
Expand Down Expand Up @@ -193,7 +193,7 @@ api_mpegts_network_muxclass
if (!(idc = mn->mn_mux_class(mn)))
goto exit;

*resp = idclass_serialize(idc);
*resp = idclass_serialize(idc, perm->aa_lang);
err = 0;

exit:
Expand Down Expand Up @@ -254,7 +254,7 @@ api_mpegts_mux_grid
//if (hide && !mn->mn_enabled) continue;
LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) {
if (hide == 2 && !mm->mm_is_enabled(mm)) continue;
idnode_set_add(ins, (idnode_t*)mm, &conf->filter);
idnode_set_add(ins, (idnode_t*)mm, &conf->filter, perm->aa_lang);
}
}
}
Expand Down Expand Up @@ -284,7 +284,7 @@ api_mpegts_service_grid
if (hide && !mm->mm_is_enabled(mm)) continue;
LIST_FOREACH(ms, &mm->mm_services, s_dvb_mux_link) {
if (hide == 2 && !ms->s_is_enabled((service_t*)ms, 0)) continue;
idnode_set_add(ins, (idnode_t*)ms, &conf->filter);
idnode_set_add(ins, (idnode_t*)ms, &conf->filter, perm->aa_lang);
}
}
}
Expand All @@ -299,7 +299,7 @@ api_mpegts_mux_sched_grid
{
mpegts_mux_sched_t *mms;
LIST_FOREACH(mms, &mpegts_mux_sched_all, mms_link)
idnode_set_add(ins, (idnode_t*)mms, &conf->filter);
idnode_set_add(ins, (idnode_t*)mms, &conf->filter, perm->aa_lang);
}

static int
Expand Down
2 changes: 1 addition & 1 deletion src/api/api_profile.c
Expand Up @@ -59,7 +59,7 @@ api_profile_builders
pthread_mutex_lock(&global_lock);
/* List of available builder classes */
LIST_FOREACH(pb, &profile_builders, link)
if ((e = idclass_serialize(pb->clazz)))
if ((e = idclass_serialize(pb->clazz, perm->aa_lang)))
htsmsg_add_msg(l, NULL, e);
pthread_mutex_unlock(&global_lock);

Expand Down

0 comments on commit 9180a05

Please sign in to comment.