i18n CI: stop allowing non-ASCII source messages in po/git.pot

In the preceding commit we moved away from using xgettext(1) to both generate the po/git.pot, and to merge the incrementally generated po/git.pot+ file as we sourced translations from C, shell and Perl. Doing it this way, which dates back to my initial implementation[1][2][3] was conflating two things: With xgettext(1) the --from-code both controls what encoding is specified in the po/git.pot's header, and what encoding we allow in source messages. We don't ever want to allow non-ASCII in *source messages*, and doing so has hid e.g. a buggy message introduced in a6226fd772b (submodule--helper: convert the bulk of cmd_add() to C, 2021-08-10) from us, we'd warn about it before, but only when running "make pot", but the operation would still succeed. Now we'll error out on it when running "make pot". Since the preceding Makefile changes made this easy: let's add a "make 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) 2. adc3b2b2767 (Makefile: add xgettext target for *.sh files, 2011-05-14) 3. 5e9637c6297 (i18n: add infrastructure for translating Git with gettext, 2011-11-18) Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed May 26, 2022 at 22:50 UTC 6dd9a91c324a696a0d547ff57c1fc7f4e5e9938c
3 files changed +7 -3
Makefile
+4 -2
@@ -2708,8 +2708,7 @@ XGETTEXT_FLAGS = \
2708 --force-po \
2709 --add-comments=TRANSLATORS: \
2710 --msgid-bugs-address="Git Mailing List <git@vger.kernel.org>" \
2711 - --package-name=Git \
2712 - --from-code=UTF-8
2711 + --package-name=Git
2712 XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \
2713 --keyword=_ --keyword=N_ --keyword="Q_:1,2"
2714 XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \
@@ -2793,6 +2792,9 @@ po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO) FORCE
2792 .PHONY: pot
2793 pot: po/git.pot
2794
2795 +.PHONY: check-pot
2796 +check-pot: $(LOCALIZED_ALL_GEN_PO)
2797 +
2798 ifdef NO_GETTEXT
2799 POFILES :=
2800 MOFILES :=
builtin/submodule--helper.c
+1 -1
@@ -3378,7 +3378,7 @@ static int module_add(int argc, const char **argv, const char *prefix)
3378 N_("reference repository")),
3379 OPT_BOOL(0, "dissociate", &dissociate, N_("borrow the objects from reference repositories")),
3380 OPT_STRING(0, "name", &add_data.sm_name, N_("name"),
3381 - N_("sets the submodule’s name to the given string "
3381 + N_("sets the submodule's name to the given string "
3382 "instead of defaulting to its path")),
3383 OPT_INTEGER(0, "depth", &add_data.depth, N_("depth for shallow clones")),
3384 OPT_END()
ci/run-static-analysis.sh
+2
@@ -29,4 +29,6 @@ fi
29 make hdr-check ||
30 exit 1
31
32 +make check-pot
33 +
34 save_good_tree