@@ -571,6 +571,7 @@ TCLTK_PATH = wish
XGETTEXT = xgettext
MSGCAT = msgcat
MSGFMT = msgfmt
+MSGMERGE = msgmerge
CURL_CONFIG = curl-config
GCOV = gcov
STRIP = strip
@@ -2715,6 +2716,7 @@ XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \
--keyword=gettextln --keyword=eval_gettextln
XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \
--keyword=__ --keyword=N__ --keyword="__n:1,2"
+MSGMERGE_FLAGS = --add-location --backup=off --update
LOCALIZED_C = $(sort $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \
$(GENERATED_H))
LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh)
@@ -2792,6 +2794,22 @@ po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO)
.PHONY: pot
pot: po/git.pot
+define check_po_file_envvar
+ $(if $(PO_FILE), \
+ $(if $(filter po/%.po,$(PO_FILE)), , \
+ $(error PO_FILE should match pattern: "po/%.po")), \
+ $(error PO_FILE is not defined))
+endef
+
+.PHONY: po-update
+po-update: po/git.pot
+ $(check_po_file_envvar)
+ @if test ! -e $(PO_FILE); then \
+ echo >&2 "error: $(PO_FILE) does not exist"; \
+ exit 1; \
+ fi
+ $(QUIET_MSGMERGE)$(MSGMERGE) $(MSGMERGE_FLAGS) $(PO_FILE) po/git.pot
+
.PHONY: check-pot
check-pot: $(LOCALIZED_ALL_GEN_PO)
@@ -63,6 +63,7 @@ ifndef V
QUIET_LNCP = @echo ' ' LN/CP $@;
QUIET_XGETTEXT = @echo ' ' XGETTEXT $@;
QUIET_MSGFMT = @echo ' ' MSGFMT $@;
+ QUIET_MSGMERGE = @echo ' ' MSGMERGE $@;
QUIET_GCOV = @echo ' ' GCOV $@;
QUIET_SP = @echo ' ' SP $<;
QUIET_HDR = @echo ' ' HDR $(<:hcc=h);