Subject: [PATCH v2 0/9] Incremental po/git.pot update and new l10n workflow

From: Jiang Xin <[email-masked]>
Date: Thu, 19 May 2022 16:15:39 +0800

From: Jiang Xin <[email-masked]>

A workflow change for translators are being proposed.

Changes since v1:

* Patch 4/9: When running "make check-pot", do not update "po/git.pot".
* Patch 6/9: reword: the removal of "po/git.pot" is in preceding commit.
* Patch 7/9 and 8/9: Add new funciton "check_po_file_envvar" for reuse in both
  po-update and po-init targets.

Range-diff vs v1:

 1:  15c4090757 =  1:  15c4090757 Makefile: sort "po/git.pot" by file location
 2:  846a9e72c5 =  2:  846a9e72c5 Makefile: generate "po/git.pot" from stable LOCALIZED_C
 3:  b5cf2836ea =  3:  b5cf2836ea Makefile: have "make pot" not "reset --hard"
 4:  a508f6e18b !  4:  8b30e332df i18n CI: stop allowing non-ASCII source messages in po/git.pot
    @@ Commit message
         on it when running "make pot".
     
         Since the preceding Makefile changes made this easy: let's add a "make
    -    check-pot" target and run it as part of the "static-analysis" CI
    -    target, this will ensure that we catch any such issues in the future.
    +    check-pot" target with the same prerequisites as the "po/git.pot"
    +    target, but without changing the file "po/git.pot". Running it as part
    +    of the "static-analysis" CI target will ensure that we catch any such
    +    issues in the future. E.g.:
    +
    +        $ make check-pot
    +            XGETTEXT .build/pot/po/builtin/submodule--helper.c.po
    +        xgettext: Non-ASCII string at builtin/submodule--helper.c:3381.
    +                  Please specify the source encoding through --from-code.
    +        make: *** [.build/pot/po/builtin/submodule--helper.c.po] Error 1
     
         1. cd5513a7168 (i18n: Makefile: "pot" target to extract messages
            marked for translation, 2011-02-22)
    @@ Makefile: po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO)
      pot: po/git.pot
      
     +.PHONY: check-pot
    -+check-pot: pot
    ++check-pot: $(LOCALIZED_ALL_GEN_PO)
     +
      ifdef NO_GETTEXT
      POFILES :=
 5:  720a00b348 =  5:  65f87c5503 po/git.pot: this is now a generated file
 6:  f97113a370 !  6:  fe5f27a88b po/git.pot: don't check in result of "make pot"
    @@ Commit message
         Makefile: "pot" target to extract messages marked for translation,
         2011-02-22).
     
    -    The actual "git rm" of po/git.pot is deferred until the subsequent
    -    commit, to make this change easier to review, and to preempt the
    -    mailing list from blocking it due to it being too large.
    +    The actual "git rm" of po/git.pot was in preceding commit to make this
    +    change easier to review, and to preempt the mailing list from blocking
    +    it due to it being too large.
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <[email-masked]>
         Signed-off-by: Jiang Xin <[email-masked]>
 7:  be23a1c8b0 !  7:  710aff9d66 Makefile: add "po-update" rule to update po/XX.po
    @@ Makefile: 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
    -+ifndef PO_FILE
    -+	$(error not define variable "PO_FILE")
    -+else
    -+ifeq ($(filter po/%.po,$(PO_FILE)),)
    -+	$(error PO_FILE should match pattern: "po/%.po")
    -+endif
    -+endif
    ++	$(check_po_file_envvar)
     +	@if test ! -e $(PO_FILE); then \
     +		echo >&2 "error: $(PO_FILE) does not exist"; \
     +		exit 1; \
    @@ Makefile: po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO)
     +	$(QUIET_MSGMERGE)$(MSGMERGE) $(MSGMERGE_FLAGS) $(PO_FILE) po/git.pot
     +
      .PHONY: check-pot
    - check-pot: pot
    + check-pot: $(LOCALIZED_ALL_GEN_PO)

      ## shared.mak ##
 8:  176a80587a !  8:  fc9d3f5603 Makefile: add "po-init" rule to initialize po/XX.po
    @@ Commit message
         Signed-off-by: Junio C Hamano <[email-masked]>
     
      ## Makefile ##
    -@@ Makefile: endif
    - endif
    +@@ Makefile: po-update: po/git.pot
    + 	$(check_po_file_envvar)
      	@if test ! -e $(PO_FILE); then \
      		echo >&2 "error: $(PO_FILE) does not exist"; \
     +		echo >&2 'To create an initial po file, use: "make po-init PO_FILE=po/XX.po"'; \
      		exit 1; \
      	fi
      	$(QUIET_MSGMERGE)$(MSGMERGE) $(MSGMERGE_FLAGS) $(PO_FILE) po/git.pot
    -@@ Makefile: endif
    +@@ Makefile: po-update: po/git.pot
      .PHONY: check-pot
    - check-pot: pot
    + check-pot: $(LOCALIZED_ALL_GEN_PO)
      
     +### TODO FIXME: Translating everything in these files is a bad
     +### heuristic for "core", as we'll translate obscure error() messages
    @@ Makefile: endif
     +
     +.PHONY: po-init
     +po-init: po/git-core.pot
    -+ifndef PO_FILE
    -+	$(error not define variable "PO_FILE")
    -+else
    -+ifeq ($(filter po/%.po,$(PO_FILE)),)
    -+	$(error PO_FILE should match pattern: "po/%.po")
    -+endif
    -+endif
    ++	$(check_po_file_envvar)
     +	@if test -e $(PO_FILE); then \
     +		echo >&2 "error: $(PO_FILE) exists already"; \
     +		exit 1; \
 9:  f2491b96ab =  9:  10fafa5bf9 l10n: Document the new l10n workflow

---

Jiang Xin (3):
  Makefile: sort "po/git.pot" by file location
  Makefile: generate "po/git.pot" from stable LOCALIZED_C
  Makefile: add "po-update" rule to update po/XX.po

Junio C Hamano (1):
  po/git.pot: this is now a generated file

Ævar Arnfjörð Bjarmason (5):
  Makefile: have "make pot" not "reset --hard"
  i18n CI: stop allowing non-ASCII source messages in po/git.pot
  po/git.pot: don't check in result of "make pot"
  Makefile: add "po-init" rule to initialize po/XX.po
  l10n: Document the new l10n workflow

 .gitignore                  |     1 +
 Makefile                    |   144 +-
 builtin/submodule--helper.c |     2 +-
 ci/run-static-analysis.sh   |     2 +
 po/.gitignore               |     2 +
 po/README.md                |   191 +-
 po/git.pot                  | 25151 ----------------------------------
 shared.mak                  |     2 +
 8 files changed, 217 insertions(+), 25278 deletions(-)
 delete mode 100644 po/git.pot

-- 
2.36.0.1.g15c4090757