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