# Tools

PNPM ?= pnpm
MSGCAT ?= msgcat
MSGMERGE ?= msgmerge
MSGFMT ?= msgfmt

# Variables

POT = translation.pot
POS ?= $(wildcard *.po)

# Translations

.PHONY: build
build: json

.PYTHON: json
json:
	@for po in $(POS); do \
		lang=$$(echo $$po | sed "s/\.po//"); \
		$(PNPM) i18next-conv -K --skipUntranslated -l $$lang -s i18n/$$po -t ../src/locales/$$lang/translation.json; \
	done
	$(PNPM) node i18n/build-json.js ../src/locales/locales.json $(POS)

dev-translation.json: FORCE
	$(PNPM) i18next --fail-on-warnings

.PHONY: extract
extract: pot

.PHONY: pot
pot: dev-translation.json
	@tmpfile1=$(shell mktemp).po; \
	tmpfile2=$(shell mktemp).po; \
	trap 'rm -f "$$tmpfile1" "$$tmpfile2"' EXIT; \
	$(PNPM) i18next-conv --project "LibreGraph Connect Identifier" -K -l en -s i18n/dev-translation.json -t $$tmpfile1; \
	$(PNPM) node i18n/build-pot.js $$tmpfile1 $$tmpfile2; \
	$(MSGCAT) --no-wrap -o $(POT) $$tmpfile2

.PHONY: merge
merge: $(POS)

$(POS): FORCE $(POT)
	@echo -n "$@ " && \
	$(MSGMERGE) -U \
		--backup=none \
		--no-wrap \
		--sort-output \
		$@ $(POT)

.PHONY: stats
stats:
	$(foreach po, $(POS), $(shell $(MSGFMT) -v --statistics $(po)))
	@- true

FORCE:
