Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
internationalization support - initial code
  • Loading branch information
perexg committed Jun 17, 2015
1 parent f36e79c commit ef6cdbf
Show file tree
Hide file tree
Showing 7 changed files with 1,165 additions and 104 deletions.
165 changes: 128 additions & 37 deletions Makefile
Expand Up @@ -22,6 +22,7 @@

include $(dir $(lastword $(MAKEFILE_LIST))).config.mk
PROG := $(BUILDDIR)/tvheadend
LANGUAGES ?= de cs pl

#
# Common compiler flags
Expand Down Expand Up @@ -97,6 +98,9 @@ BUNDLE_FLAGS = ${BUNDLE_FLAGS-yes}
#

MKBUNDLE = $(PYTHON) $(ROOTDIR)/support/mkbundle
XGETTEXT ?= xgettext --language=C -k_ -kN_ -s
MSGMERGE ?= msgmerge
MSGFMT ?= msgfmt

#
# Debug/Output
Expand All @@ -113,7 +117,8 @@ endif
#
# Core
#
SRCS = src/version.c \
SRCS-1 = \
src/version.c \
src/uuid.c \
src/main.c \
src/tvhlog.c \
Expand Down Expand Up @@ -168,17 +173,23 @@ SRCS = src/version.c \
src/profile.c \
src/bouquet.c \
src/lock.c
SRCS = $(SRCS-1)
I18N-C = $(SRCS-1)

SRCS-${CONFIG_UPNP} += \
SRCS-UPNP = \
src/upnp.c
SRCS-${CONFIG_UPNP} += $(SRCS-UPNP)
I18N-C += $(SRCS-UPNP)

# SATIP Server
SRCS-${CONFIG_SATIP_SERVER} += \
SRCS-SATIP-SERVER = \
src/satip/server.c \
src/satip/rtsp.c \
src/satip/rtp.c
SRCS-${CONFIG_SATIP_SERVER} += $(SRCS-SATIP-SERVER)
I18N-C += $(SRCS-SATIP-SERVER)

SRCS += \
SRCS-2 = \
src/api.c \
src/api/api_status.c \
src/api/api_idnode.c \
Expand All @@ -197,49 +208,57 @@ SRCS += \
src/api/api_profile.c \
src/api/api_bouquet.c

SRCS += \
SRCS-2 += \
src/parsers/parsers.c \
src/parsers/bitstream.c \
src/parsers/parser_h264.c \
src/parsers/parser_latm.c \
src/parsers/parser_avc.c \
src/parsers/parser_teletext.c \

SRCS += src/epggrab/module.c\
SRCS-2 += \
src/epggrab/module.c\
src/epggrab/channel.c\
src/epggrab/module/pyepg.c\
src/epggrab/module/xmltv.c\

SRCS += src/plumbing/tsfix.c \
SRCS-2 += \
src/plumbing/tsfix.c \
src/plumbing/globalheaders.c

SRCS += src/dvr/dvr_db.c \
SRCS-2 += \
src/dvr/dvr_db.c \
src/dvr/dvr_rec.c \
src/dvr/dvr_autorec.c \
src/dvr/dvr_timerec.c \
src/dvr/dvr_config.c \
src/dvr/dvr_cutpoints.c \

SRCS += src/webui/webui.c \
SRCS-2 += \
src/webui/webui.c \
src/webui/comet.c \
src/webui/extjs.c \
src/webui/simpleui.c \
src/webui/statedump.c \
src/webui/html.c\
src/webui/webui_api.c\

SRCS += src/muxer.c \
SRCS-2 += \
src/muxer.c \
src/muxer/muxer_pass.c \
src/muxer/muxer_tvh.c \
src/muxer/tvh/ebml.c \
src/muxer/tvh/mkmux.c \

SRCS += $(SRCS-2)
I18N-C += $(SRCS-2)

#
# Optional code
#

# MPEGTS core, order by usage (psi lib, tsdemux)
SRCS-$(CONFIG_MPEGTS) += \
SRCS-MPEGTS = \
src/descrambler/descrambler.c \
src/descrambler/caclient.c \
src/descrambler/caid.c \
Expand All @@ -258,22 +277,28 @@ SRCS-$(CONFIG_MPEGTS) += \
src/input/mpegts/fastscan.c \
src/input/mpegts/mpegts_mux_sched.c \
src/input/mpegts/mpegts_network_scan.c
SRCS-$(CONFIG_MPEGTS) += $(SRCS-MPEGTS)
I18N-C += $(SRCS-MPEGTS)

# MPEGTS DVB
SRCS-${CONFIG_MPEGTS_DVB} += \
SRCS-MPEGTS-DVB = \
src/input/mpegts/mpegts_network_dvb.c \
src/input/mpegts/mpegts_mux_dvb.c \
src/input/mpegts/scanfile.c
SRCS-${CONFIG_MPEGTS_DVB} += $(SRCS-MPEGTS-DVB)
I18N-C += $(SRCS-MPEGTS-DVB)

# MPEGTS EPG
SRCS-$(CONFIG_MPEGTS) += \
SRCS-MPEGTS-EPG = \
src/epggrab/otamux.c\
src/epggrab/module/eit.c \
src/epggrab/support/freesat_huffman.c \
src/epggrab/module/opentv.c \
src/epggrab/module/opentv.c
SRCS-$(CONFIG_MPEGTS) += $(SRCS-MPEGTS-EPG)
I18N-C += $(SRCS-MPEGTS-EPG)

# LINUX DVB
SRCS-${CONFIG_LINUXDVB} += \
SRCS-LINUXDVB = \
src/input/mpegts/linuxdvb/linuxdvb.c \
src/input/mpegts/linuxdvb/linuxdvb_adapter.c \
src/input/mpegts/linuxdvb/linuxdvb_frontend.c \
Expand All @@ -282,22 +307,27 @@ SRCS-${CONFIG_LINUXDVB} += \
src/input/mpegts/linuxdvb/linuxdvb_switch.c \
src/input/mpegts/linuxdvb/linuxdvb_rotor.c \
src/input/mpegts/linuxdvb/linuxdvb_en50494.c
SRCS-${CONFIG_LINUXDVB} += $(SRCS-LINUXDVB)
I18N-C += $(SRCS-LINUXDVB)

# SATIP Client
SRCS-${CONFIG_SATIP_CLIENT} += \
SRCS-SATIP-CLIENT = \
src/input/mpegts/satip/satip.c \
src/input/mpegts/satip/satip_frontend.c \
src/input/mpegts/satip/satip_satconf.c \
src/input/mpegts/satip/satip_rtsp.c
SRCS-${CONFIG_SATIP_CLIENT} += $(SRCS-SATIP-CLIENT)
I18N-C += $(SRCS-SATIP-CLIENT)

# HDHOMERUN
SRCS_HDHOMERUN = \
SRCS-HDHOMERUN = \
src/input/mpegts/tvhdhomerun/tvhdhomerun.c \
src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c
SRCS-${CONFIG_HDHOMERUN_CLIENT} += $(SRCS_HDHOMERUN)
SRCS-${CONFIG_HDHOMERUN_CLIENT} += $(SRCS-HDHOMERUN)
I18N-C += $(SRCS-HDHOMERUN)

# IPTV
SRCS-${CONFIG_IPTV} += \
SRCS-IPTV = \
src/input/mpegts/iptv/iptv.c \
src/input/mpegts/iptv/iptv_mux.c \
src/input/mpegts/iptv/iptv_service.c \
Expand All @@ -306,62 +336,89 @@ SRCS-${CONFIG_IPTV} += \
src/input/mpegts/iptv/iptv_rtsp.c \
src/input/mpegts/iptv/iptv_rtcp.c \
src/input/mpegts/iptv/iptv_pipe.c
SRCS-${CONFIG_IPTV} += $(SRCS-IPTV)
I18N-C += $(SRCS-IPTV)

# TSfile
SRCS-$(CONFIG_TSFILE) += \
SRCS-TSFILE = \
src/input/mpegts/tsfile/tsfile.c \
src/input/mpegts/tsfile/tsfile_input.c \
src/input/mpegts/tsfile/tsfile_mux.c \
src/input/mpegts/tsfile/tsfile_mux.c
SRCS-$(CONFIG_TSFILE) += $(SRCS-TSFILE)
I18N-C += $(SRCS-TSFILE)

# Timeshift
SRCS-${CONFIG_TIMESHIFT} += \
SRCS-TIMESHIFT = \
src/timeshift.c \
src/timeshift/timeshift_filemgr.c \
src/timeshift/timeshift_writer.c \
src/timeshift/timeshift_reader.c \
src/timeshift/timeshift_reader.c
SRCS-${CONFIG_TIMESHIFT} += $(SRCS-TIMESHIFT)
I18N-C += $(SRCS-TIMESHIFT)

# Inotify
SRCS-${CONFIG_INOTIFY} += \
src/dvr/dvr_inotify.c \
SRCS-INOTIFY = \
src/dvr/dvr_inotify.c
SRCS-${CONFIG_INOTIFY} += $(SRCS-INOTIFY)
I18N-C += $(SRCS-INOTIFY)

# Avahi
SRCS-$(CONFIG_AVAHI) += src/avahi.c
SRCS-AVAHI = \
src/avahi.c
SRCS-$(CONFIG_AVAHI) += $(SRCS-AVAHI)
I18N-C += $(SRCS-AVAHI)

# Bonjour
SRCS-$(CONFIG_BONJOUR) += src/bonjour.c
SRCS-BONJOUR = \
src/bonjour.c
SRCS-$(CONFIG_BONJOUR) = $(SRCS-BONJOUR)
I18N-C += $(SRCS-BONJOUR)

# libav
SRCS_LIBAV = \
SRCS-LIBAV = \
src/libav.c \
src/muxer/muxer_libav.c \
src/plumbing/transcoding.c
SRCS-$(CONFIG_LIBAV) += $(SRCS_LIBAV)
SRCS-$(CONFIG_LIBAV) += $(SRCS-LIBAV)
I18N-C += $(SRCS-LIBAV)

# Tvhcsa
SRCS-${CONFIG_TVHCSA} += \
SRCS-TVHCSA = \
src/descrambler/tvhcsa.c
SRCS-${CONFIG_TVHCSA} += $(SRCS-TVHCSA)
I18N-C += $(SRCS-TVHCSA)

# CWC
SRCS-${CONFIG_CWC} += \
SRCS-CWC = \
src/descrambler/cwc.c \
src/descrambler/emm_reass.c
SRCS-${CONFIG_CWC} += $(SRCS-CWC)
I18N-C += $(SRCS-CWC)

# CAPMT
SRCS-${CONFIG_CAPMT} += \
SRCS-CAPMT = \
src/descrambler/capmt.c
SRCS-${CONFIG_CAPMT} += $(SRCS-CAPMT)
I18N-C += $(SRCS-CAPMT)

# CONSTCW
SRCS-${CONFIG_CONSTCW} += \
SRCS-CONSTCW = \
src/descrambler/constcw.c
SRCS-${CONFIG_CONSTCW} += $(SRCS-CONSTCW)
I18N-C += $(SRCS-CONSTCW)

# DVB CAM
SRCS-${CONFIG_LINUXDVB_CA} += \
SRCS-DVBCAM = \
src/input/mpegts/linuxdvb/linuxdvb_ca.c \
src/descrambler/dvbcam.c
SRCS-${CONFIG_LINUXDVB_CA} += $(SRCS-DVBCAM)
I18N-C += $(SRCS-DVBCAM)

# TSDEBUGCW
SRCS-${CONFIG_TSDEBUG} += \
SRCS-TSDEBUG = \
src/descrambler/tsdebugcw.c
SRCS-${CONFIG_TSDEBUG} += $(SRCS-TSDEBUG)
I18N-C += $(SRCS-TSDEBUG)

# FFdecsa
ifneq ($(CONFIG_DVBCSA),yes)
Expand Down Expand Up @@ -393,6 +450,21 @@ BUNDLES-${CONFIG_DVBSCAN} += data/dvb-scan
BUNDLES = $(BUNDLES-yes)
ALL-$(CONFIG_DVBSCAN) += check_dvb_scan

#
# Internationalization
#
PO-FILES = $(foreach f,$(LANGUAGES),intl/tvheadend.$(f).po)
MO-FILES = $(PO-FILES:%.po=$(BUILDDIR)/%.mo)

define merge-po
@if ! test -r "$(1)"; then \
sed -e 's/Content-Type: text\/plain; charset=CHARSET/Content-Type: text\/plain; charset=utf-8/' < "$(2)" > "$(1).new"; \
else \
$(MSGMERGE) -o $(1).new $(1) $(2); \
fi
@mv $(1).new $(1)
endef

#
# Add-on modules
#
Expand Down Expand Up @@ -438,7 +510,7 @@ reconfigure:
$(ROOTDIR)/configure $(CONFIGURE_ARGS)

# Binary
${PROG}: check_config make_webui $(OBJS) $(ALLDEPS)
${PROG}: check_config make_webui $(PO-FILES) $(MO-FILES) $(OBJS)
$(CC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS)

# Object
Expand Down Expand Up @@ -486,13 +558,32 @@ $(BUILDDIR)/timestamp.c: FORCE
@echo 'const char* build_timestamp = "'`date -Iseconds`'";' >> $@

$(BUILDDIR)/timestamp.o: $(BUILDDIR)/timestamp.c
@mkdir -p $(dir $@)
$(CC) -c -o $@ $<

$(BUILDDIR)/build.o: $(BUILDDIR)/build.c
@mkdir -p $(dir $@)
$(CC) -c -o $@ $<

# Internationalization
intl/tvheadend.pot: $(I18N-C)
@$(XGETTEXT) -o $@.new $(I18N-C)
@mv $@.new $@

intl/tvheadend.de.po: intl/tvheadend.pot
$(call merge-po,$@,$<)

intl/tvheadend.cs.po: intl/tvheadend.pot
$(call merge-po,$@,$<)

intl/tvheadend.pl.po: intl/tvheadend.pot
$(call merge-po,$@,$<)

${BUILDDIR}/%.mo: %.po
@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

# Bundle files
$(BUILDDIR)/bundle.o: $(BUILDDIR)/bundle.c
@mkdir -p $(dir $@)
Expand Down

0 comments on commit ef6cdbf

Please sign in to comment.