From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> Changes since v3: 1. Remove Junio's s-o-b introduced in v3. 2. Reword patch 1/9, 2/9 and 3/9. 3. Patch 6/9: should remove "po/git.pot" in "clean" instead of "distclean". 4. Patch 8/9: forget to remove "po/git-core.pot". Range-diff vs v3: 1: 362cd0cbe1 ! 1: 325868b993 Makefile: sort "po/git.pot" by file location @@ Metadata ## Commit message ## Makefile: sort "po/git.pot" by file location - We will feed xgettext with more C souce files and in different order in - subsequent commit. To generate a stable "po/git.pot" regardless of the - number and order of input source files, we add a new option + We will feed xgettext with more C source files and in different order + in subsequent commit. To generate a stable "po/git.pot" regardless of + the number and order of input source files, we pass the option "--sort-by-file" to xgettext program. - With this update, the newly generated "po/git.pot" will has the same + With this update, the newly generated "po/git.pot" will have the same entries while in a different order. With the help of a custom diff driver as shown below, @@ Commit message git config --global diff.gettext-fmt.textconv \ "msgcat --no-location --sort-by-file" - and appending a new entry "*.po diff=gettext-fmt" to git attributes, + and appending a new entry "*.pot diff=gettext-fmt" to git attributes, we can see that there are no substantial changes in "po/git.pot". We won't checkin the newly generated "po/git.pot", because we will remove it from tree in a later commit. Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: XGETTEXT_FLAGS = \ 2: 096e700171 ! 2: acf2f62e66 Makefile: generate "po/git.pot" from stable LOCALIZED_C @@ Metadata ## Commit message ## Makefile: generate "po/git.pot" from stable LOCALIZED_C - When running "make pot" on different platform, we may get a different - message template file "po/git.pot". This is because the "LOCALIZED_C" - variable may have different C source files on different platforms or - different compiler conditions. - - We can make a stable "LOCALIZED_C" variable by applying patch snippets - as follows: - - ifdef NO_LIBGEN_H - COMPAT_CFLAGS += -DNO_LIBGEN_H - COMPAT_OBJS += compat/basename.o - +else - + LOCALIZED_C += compat/basename.c - endif - - But it is much simpler to use variables "$(FOUND_C_SOURCES)" and - "$(FOUND_C_SOURCES)" to form a stable "LOCALIZED_C". We also add - "$(SCALAR_SOURCES)" files, which are part of C_OBJ but not included in - "$(FOUND_C_SOURCES)" because they are in the "contrib/" directory. + Different users may generate a different message template file + "po/git.pot". This is because the POT file is generated from + "$(LOCALIZED_C)", which is supposed to list all the sources that we + extract the strings to be translated from. But "$(LOCALIZED_C)" + includes "$(C_OBJ)", which only lists the source files used in the + current build for a specific platform and specific compiler + conditions. + + Instead of using "$(C_OBJ)", we use "$(FOUND_C_SOURCES)", which lists + all source files we keep track of (or ship in a tarball extract), to + form a stable "LOCALIZED_C". We also add "$(SCALAR_SOURCES)", which + is part of "$(C_OBJ)" but not included in "$(FOUND_C_SOURCES)". With this update, the newly generated "po/git.pot" will have 30 new entries coming from the following C source files: @@ Commit message * compat/simple-ipc/ipc-win32.c Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \ 3: dff3751260 ! 3: 775c37bc69 Makefile: have "make pot" not "reset --hard" @@ Commit message Makefile: have "make pot" not "reset --hard" Before commit fc0fd5b23b (Makefile: help gettext tools to cope with our - custom PRItime format, 2017-07-20) we'd consider source files as-is + custom PRItime format, 2017-07-20), we'd consider source files as-is with gettext, but because we need to understand PRItime in the same way - that gettext itself understands PRIuMAX we'd first check if we had a + that gettext itself understands PRIuMAX, we'd first check if we had a clean checkout, then munge all of the processed files in-place with "sed", generate "po/git.pot", and then finally "reset --hard" to undo our changes. @@ Commit message Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## .gitignore ## @@ 4: 1b7efb21ae ! 4: 55ee049b0a i18n CI: stop allowing non-ASCII source messages in po/git.pot @@ Commit message Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: XGETTEXT_FLAGS = \ 5: 8ce274b31f = 5: 69338521aa po/git.pot: this is now a generated file 6: 4585be63f7 ! 6: 6f80bd0461 po/git.pot: don't check in result of "make pot" @@ Commit message Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: endef @@ Makefile: endef .PHONY: pot pot: po/git.pot -@@ Makefile: dist-doc: git$X +@@ Makefile: cocciclean: - distclean: clean - $(RM) configure + clean: profile-clean coverage-clean cocciclean + $(RM) -r .build + $(RM) po/git.pot - $(RM) config.log config.status config.cache - $(RM) config.mak.autogen config.mak.append - $(RM) -r autom4te.cache + $(RM) *.res + $(RM) $(OBJECTS) + $(RM) $(LIB_FILE) $(XDIFF_LIB) $(REFTABLE_LIB) $(REFTABLE_TEST_LIB) ## po/.gitignore ## @@ 7: b8f43b520c ! 7: 5cd2c0741d Makefile: add "po-update" rule to update po/XX.po @@ Commit message $ make po-update PO_FILE=po/zh_CN.po Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: TCLTK_PATH = wish 8: 019633c7a4 ! 8: 246720695a Makefile: add "po-init" rule to initialize po/XX.po @@ Commit message [^1]: https://github.com/git-l10n/git-po-helper/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> - Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## Makefile ## @@ Makefile: po-update: po/git.pot @@ Makefile: po-update: po/git.pot ifdef NO_GETTEXT POFILES := MOFILES := +@@ Makefile: cocciclean: + + clean: profile-clean coverage-clean cocciclean + $(RM) -r .build +- $(RM) po/git.pot ++ $(RM) po/git.pot po/git-core.pot + $(RM) *.res + $(RM) $(OBJECTS) + $(RM) $(LIB_FILE) $(XDIFF_LIB) $(REFTABLE_LIB) $(REFTABLE_TEST_LIB) ## po/.gitignore ## @@ 9: 334117bf48 ! 9: 131f52ac3a l10n: Document the new l10n workflow @@ Commit message Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> - Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> ## po/README.md ## @@ po/README.md: coordinates our localization effort in the l10 coordinator repository: --- Jiang Xin (4): Makefile: sort "po/git.pot" by file location Makefile: generate "po/git.pot" from stable LOCALIZED_C po/git.pot: this is now a generated file Makefile: add "po-update" rule to update po/XX.po Æ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 | 148 +- builtin/submodule--helper.c | 2 +- ci/run-static-analysis.sh | 2 + po/.gitignore | 2 + po/README.md | 230 +- po/git.pot | 25151 ---------------------------------- shared.mak | 2 + 8 files changed, 250 insertions(+), 25288 deletions(-) delete mode 100644 po/git.pot -- 2.36.0.1.g15c4090757