gettext.mk: Add support for multiple .po and .pot files

Up to now, generating and installing gettext .mo files worked
for exactly one .po file. Now all files in the directory are
compiled by default.

Editing only targets $(PROJECT).po, though, so this works
as before.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2018-11-13 13:51:28 +00:00
commit 185fe85ac0

View file

@ -3,12 +3,15 @@ GETTEXT_LOCALE ?= $(notdir $(shell $(PWD)))
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/rules.mk
GETTEXT_POT ?= $(PROJECT).pot
GETTEXT_PO ?= $(PROJECT).po
GETTEXT_MO ?= $(PROJECT).mo
GETTEXT_INPUT_DIRS ?= $(wildcard $(TOPDIR)/tools $(TOPDIR)/src)
GETTEXT_PROJECT_PO ?= $(PROJECT).po
GETTEXT_PROJECT_POT ?= $(PROJECT).pot
GETTEXT_PO ?= $(wildcard *.po)
GETTEXT_POT ?= $(patsubst %.po,%.pot,$(GETTEXT_PO))
GETTEXT_MO ?= $(patsubst %.po,%.mo,$(GETTEXT_PO))
GETTEXT_INPUT_DIRS ?= $(wildcard $(TOPDIR)/tools $(TOPDIR)/src $(TOPDIR)/conf)
GETTEXT_INPUT_FILES ?= $(foreach d,$(GETTEXT_INPUT_DIRS),\
$(shell find $d -name '*.php' -o -name '*.cpp'))
$(shell find $d -name '*.php' -o -name '*.cpp' -o -name '*.conf'))
GETTEXT_KEYWORDS ?= htr ehtr
all: $(GETTEXT_MO)
@ -21,27 +24,27 @@ extract: $(GETTEXT_POT)
clean-mo:
$(RM) -f *.mo *.tmp
$(GETTEXT_POT): $(GETTEXT_INPUT_FILES)
$(GETTEXT_PROJECT_POT): $(GETTEXT_INPUT_FILES)
xgettext --from-code=utf-8 --package-name $(PROJECT) --package-version $(DIST_VERSION) \
--default-domain $(PROJECT) $(addprefix -k,$(GETTEXT_KEYWORDS)) \
--output $@.tmp $(XGETTEXT_EXTRA_OPTS) $(GETTEXT_INPUT_FILES)
mv $@.tmp $@
init: $(GETTEXT_POT)
init: $(GETTEXT_PROJECT_POT)
msginit --no-translator --locale $(GETTEXT_LOCALE) \
--output-file $(GETTEXT_PO).tmp --input $<
sed -i 's/charset=ASCII/charset=UTF-8/' $(GETTEXT_PO).tmp
mv $(GETTEXT_PO).tmp $(GETTEXT_PO)
--output-file $(GETTEXT_POJECT_PO).tmp --input $<
sed -i 's/charset=ASCII/charset=UTF-8/' $(GETTEXT_PROJECT_PO).tmp
mv $(GETTEXT_PROJECT_PO).tmp $(GETTEXT_PROJECT_PO)
merge: $(GETTEXT_POT)
msgmerge -v --lang $(GETTEXT_LOCALE) --output-file $(GETTEXT_PO).tmp \
$(wildcard $(GETTEXT_PO)) $<
mv $(GETTEXT_PO).tmp $(GETTEXT_PO)
merge: $(GETTEXT_PROJECT_POT)
msgmerge -v --lang $(GETTEXT_LOCALE) --output-file $(GETTEXT_PROJECT_PO).tmp \
$(wildcard $(GETTEXT_PROJECT_PO)) $<
mv $(GETTEXT_PROJECT_PO).tmp $(GETTEXT_PROJECT_PO)
edit: merge $(GETTEXT_POT)
poedit $(GETTEXT_PO)
edit: merge $(GETTEXT_PROJECT_POT)
poedit $(GETTEXT_PROJECT_PO)
$(GETTEXT_MO): $(GETTEXT_PO)
%.mo: %.po
msgfmt --check --verbose --output-file $@.tmp $<
mv $@.tmp $@
@ -67,5 +70,3 @@ define copy_rule
endef
$(foreach d, $(HTR_SOURCE_DIRS), $(eval $(call copy_rule,$(d))))