jw-pkg/make/gettext.mk
Jan Lindemann ac54a7bca6
make: Make target "test" depend on target "all"

Every directory should have a test target, and the test target should depend on all so that all files are generated that might be needed for testing. This commit fixes some missing targets, and adds some missing dependencies.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-07-02 19:52:35 +02:00

91 lines
2.8 KiB
Makefile

GETTEXT_LOCALE ?= $(notdir $(shell $(PWD)))
include $(JWBDIR)/make/defs.mk
include $(JWBDIR)/make/rules.mk
include $(JWBDIR)/make/dev-utils.mk
GETTEXT_PROJECT_PO ?= $(PROJECT).po
GETTEXT_PROJECT_POT ?= $(PROJECT).pot
GETTEXT_POT ?= $(wildcard *.pot)
GETTEXT_PO ?= $(patsubst %.pot,%.po,$(GETTEXT_POT))
GETTEXT_MO ?= $(patsubst %.po,%.mo,$(GETTEXT_PO))
GETTEXT_INPUT_DIRS ?= $(wildcard $(TOPDIR)/tools $(TOPDIR)/src $(TOPDIR)/conf)
GETTEXT_INPUT_EXTS ?= php cpp conf
GETTEXT_INPUT_FILES ?= $(foreach d,$(GETTEXT_INPUT_DIRS),\
$(shell find $d -name translate-me $(foreach ext,$(GETTEXT_INPUT_EXTS),-o -name '*.$(ext)')))
GETTEXT_KEYWORDS ?= htr ehtr $(GETTEXT_EXTRA_KEYWORDS)
GETTEXT_LINKS ?= LC_MESSAGES
all: $(GETTEXT_MO) | $(GETTEXT_LINKS)
clean: clean-mo
$(RM) -rf *~ .*.swp
install: install_MO
distclean: clean
test: all
extract: $(GETTEXT_POT)
clean-mo:
$(RM) -f *.mo *.tmp
$(GETTEXT_PROJECT_POT):
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_PROJECT_POT)
msginit --no-translator --locale $(GETTEXT_LOCALE) \
--output-file $(GETTEXT_PROJECT_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_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)
merge-pot: $(GETTEXT_POT)
msgmerge -v --lang $(GETTEXT_LOCALE) --output-file $(GETTEXT_PROJECT_PO).tmp \
$(wildcard $(GETTEXT_PROJECT_PO)) $<
mv $(GETTEXT_PROJECT_PO).tmp $(GETTEXT_PROJECT_PO)
%.po: %.pot
msgcat --lang $(GETTEXT_LOCALE) --output-file $@.tmp $^
mv $@.tmp $@
edit: merge $(GETTEXT_PROJECT_POT)
poedit $(GETTEXT_PROJECT_PO)
%.mo: %.po
msgfmt --check --verbose --output-file $@.tmp $<
mv $@.tmp $@
LC_%:
ln -s . $@
clean.lc-links:
rm -f $(GETTEXT_LINKS)
clean: clean.lc-links
#msginit --no-translator --locale es_MX --output-file $(PROJECT)_spanish.po --input $(PROJECT).pot
#sed --in-place $(PROJECT)_spanish.po --expression = '/"hello, world!"/,/#: / s/""/"hola mundo"/'
#mkdir --parents ./es_MX.utf8/LC_MESSAGES
#msgfmt --check --verbose --output-file ./es_MX.utf8/LC_MESSAGES/$(PROJECT).mo $(PROJECT)_spanish.po
GETTEXT_TMP = $(patsubst %.php,%.htr,$(GETTEXT_PREPROCESS))
GETTEXT_INPUT_FILES += $(GETTEXT_TMP)
all: htr
clean: htr-tmp-clean
htr: $(GETTEXT_TMP)
htr-tmp-clean:
$(RM) -f *.htr
define copy_rule
./%.htr.tmp: $(1)/%.php
cp $$< $$@
endef
$(foreach d, $(HTR_SOURCE_DIRS), $(eval $(call copy_rule,$(d))))