From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> Changes since v4: 1. Patch 1/10: use sort function instead of passing option "--sort-by-file". 2. Patch 3/10: when finding source files, ignore ".build" directory. 3. New patch 5/10: remove duplicate and unwanted files in FOUND_SOURCE_FILES 4. Patch 7/10: no "--sort-by-file" option $(MSGCAT_FLAGS) for msgcat. 5. Patch 9/10: no "--sort-by-file" option $(MSGCAT_FLAGS) for msgcat, and remove unused "core-pot" target. Range-diff vs v4: 1: 325868b993 ! 1: 6a5409fd4f Makefile: sort "po/git.pot" by file location @@ Metadata Author: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> ## Commit message ## - Makefile: sort "po/git.pot" by file location + Makefile: sort source files before feeding to xgettext 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. + the number and order of input source files, we sort the c, perl, and + shell source files in groups before feeding them to xgettext. + + Ævar suggested that we should not pass the option "--sort-by-file" to + xgettext to sort the translatable strings, as it will mix the three + groups of source files (c, perl and shell) in the file "po/git.pot", + and change the order of translatable strings in the same line of a file. With this update, the newly generated "po/git.pot" will have the same entries while in a different order. @@ Commit message We won't checkin the newly generated "po/git.pot", because we will remove it from tree in a later commit. + Suggested-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> ## Makefile ## -@@ Makefile: XGETTEXT_FLAGS = \ - --force-po \ - --add-comments=TRANSLATORS: \ - --msgid-bugs-address="Git Mailing List <git@xxxxxxxxxxxxxxx>" \ -+ --sort-by-file \ - --from-code=UTF-8 - XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \ - --keyword=_ --keyword=N_ --keyword="Q_:1,2" +@@ Makefile: 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" +-LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H) +-LOCALIZED_SH = $(SCRIPT_SH) +-LOCALIZED_SH += git-sh-setup.sh +-LOCALIZED_PERL = $(SCRIPT_PERL) ++LOCALIZED_C = $(sort $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)) ++LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh) ++LOCALIZED_PERL = $(sort $(SCRIPT_PERL)) + + ifdef XGETTEXT_INCLUDE_TESTS + LOCALIZED_C += t/t0200/test.c 2: acf2f62e66 ! 2: 976f75ce00 Makefile: generate "po/git.pot" from stable LOCALIZED_C @@ Makefile: 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" --LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H) -+LOCALIZED_C = $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ -+ $(GENERATED_H) - LOCALIZED_SH = $(SCRIPT_SH) - LOCALIZED_SH += git-sh-setup.sh - LOCALIZED_PERL = $(SCRIPT_PERL) +-LOCALIZED_C = $(sort $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)) ++LOCALIZED_C = $(sort $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ ++ $(GENERATED_H)) + LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh) + LOCALIZED_PERL = $(sort $(SCRIPT_PERL)) + 3: 775c37bc69 ! 3: c881176a8f Makefile: have "make pot" not "reset --hard" @@ Makefile: INSTALL = install MSGFMT = msgfmt CURL_CONFIG = curl-config GCOV = gcov +@@ Makefile: SOURCES_CMD = ( \ + -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ + -o \( -name contrib -type d -prune \) \ + -o \( -name build -type d -prune \) \ ++ -o \( -name .build -type d -prune \) \ + -o \( -name 'trash*' -type d -prune \) \ + -o \( -name '*.[hcS]' -type f -print \) \ + -o \( -name '*.sh' -type f -print \) \ @@ Makefile: XGETTEXT_FLAGS = \ --force-po \ --add-comments=TRANSLATORS: \ --msgid-bugs-address="Git Mailing List <git@xxxxxxxxxxxxxxx>" \ + --package-name=Git \ - --sort-by-file \ --from-code=UTF-8 XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \ -@@ Makefile: 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" -+MSGCAT_FLAGS = --sort-by-file - LOCALIZED_C = $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ - $(GENERATED_H) - LOCALIZED_SH = $(SCRIPT_SH) + --keyword=_ --keyword=N_ --keyword="Q_:1,2" @@ Makefile: LOCALIZED_SH += t/t0200/test.sh LOCALIZED_PERL += t/t0200/test.perl endif @@ Makefile: LOCALIZED_SH += t/t0200/test.sh - git reset --hard - mv $@+ $@ +po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO) FORCE -+ $(QUIET_GEN)$(MSGCAT) $(MSGCAT_FLAGS) $(filter-out FORCE,$^) >$@ ++ $(QUIET_GEN)$(MSGCAT) $(filter-out FORCE,$^) >$@ .PHONY: pot pot: po/git.pot 4: 55ee049b0a ! 4: 672c91c341 i18n CI: stop allowing non-ASCII source messages in po/git.pot @@ Commit message ## Makefile ## @@ Makefile: XGETTEXT_FLAGS = \ + --force-po \ --add-comments=TRANSLATORS: \ --msgid-bugs-address="Git Mailing List <git@xxxxxxxxxxxxxxx>" \ - --package-name=Git \ -- --sort-by-file \ +- --package-name=Git \ - --from-code=UTF-8 -+ --sort-by-file ++ --package-name=Git XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \ --keyword=_ --keyword=N_ --keyword="Q_:1,2" XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \ -: ---------- > 5: 475680c594 Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES 5: 69338521aa = 6: 9023b94c65 po/git.pot: this is now a generated file 6: 6f80bd0461 ! 7: a46dca5e0d po/git.pot: don't check in result of "make pot" @@ Makefile: endef $(QUIET_GEN)$(gen_pot_header) -po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO) FORCE -- $(QUIET_GEN)$(MSGCAT) $(MSGCAT_FLAGS) $(filter-out FORCE,$^) >$@ +- $(QUIET_GEN)$(MSGCAT) $(filter-out FORCE,$^) >$@ +po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO) -+ $(QUIET_GEN)$(MSGCAT) $(MSGCAT_FLAGS) $^ >$@ ++ $(QUIET_GEN)$(MSGCAT) $^ >$@ .PHONY: pot pot: po/git.pot 7: 5cd2c0741d ! 8: 2077310e57 Makefile: add "po-update" rule to update po/XX.po @@ Makefile: TCLTK_PATH = wish GCOV = gcov STRIP = strip @@ Makefile: 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" - MSGCAT_FLAGS = --sort-by-file +MSGMERGE_FLAGS = --add-location --backup=off --update - LOCALIZED_C = $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ - $(GENERATED_H) - LOCALIZED_SH = $(SCRIPT_SH) + LOCALIZED_C = $(sort $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ + $(GENERATED_H)) + LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh) @@ Makefile: po/git.pot: .build/pot/git.header $(LOCALIZED_ALL_GEN_PO) .PHONY: pot pot: po/git.pot 8: 246720695a ! 9: bd810adb20 Makefile: add "po-init" rule to initialize po/XX.po @@ Commit message translation" that a new l10n contributor must complete before sending pull request to the l10n coordinator. - By pulling in some parts of the git-po-helper[^1] logic, we add rule - "core-pot" to create this core translation message "po/git-core.pot": + By pulling in some parts of the git-po-helper[^1] logic, we add a new + rule to create this core translation message "po/git-core.pot": - make core-pot + make po/git-core.pot To help new l10n contributors to initialized their "po/XX.pot" from "po/git-core.pot", we also add new rules "po-init": @@ Makefile: po-update: po/git.pot + +LOCALIZED_C_CORE_GEN_PO = $(LOCALIZED_C_CORE:%=.build/pot/po/%.po) + -+.PHONY: core-pot -+core-pot: po/git-core.pot -+ +.build/pot/git-core.header: $(LOCALIZED_C_CORE_GEN_PO) + $(call mkdir_p_parent_template) + $(QUIET_GEN)$(gen_pot_header) + +po/git-core.pot: .build/pot/git-core.header $(LOCALIZED_C_CORE_GEN_PO) -+ $(QUIET_GEN)$(MSGCAT) $(MSGCAT_FLAGS) $^ >$@ ++ $(QUIET_GEN)$(MSGCAT) $^ >$@ + +.PHONY: po-init +po-init: po/git-core.pot 9: 131f52ac3a = 10: 38ab065c55 l10n: Document the new l10n workflow --- Jiang Xin (5): Makefile: sort source files before feeding to xgettext Makefile: generate "po/git.pot" from stable LOCALIZED_C Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES 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 | 153 +- 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(+), 25293 deletions(-) delete mode 100644 po/git.pot -- 2.36.0.1.g15c4090757