git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 1/2] l10n: Introduce framework for localizing man pages

From
Jean-Noel Avila <jn.avila@free.fr>
Date
Mar 20, 2017, 21:02 UTC
Message-ID
<20170320210225.13046-2-jn.avila@free.fr>
In-Reply-To
<20170320210225.13046-1-jn.avila@free.fr>

Providing git in localized version is a good step for general adoption of the tool. But as of now, if one needs to refer to the manual pages, they are still confronted to english. The aim is to provide documentation to users in their own language.

The translation of the source asciidoc files is managed via po4a driven by the conf file Documentation/po4a.conf.

Only the manpages are generated and installed by using the `install-man-l10n` target of the Makefile. The localized manpages for all the translated languages are installed in the man path in their own language folder, so that they can be accessed by man.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
---
 Documentation/Makefile  | 21 ++++++++++++++++++++-
 Documentation/po4a.conf |  5 +++++
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/po4a.conf
diff --git a/Documentation/Makefile b/Documentation/Makefile
index b5be2e2d3..e721c7149 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,4 +1,5 @@
 # Guard against environment variables
+MAN1_L10N_TXT =
 MAN1_TXT =
 MAN5_TXT =
 MAN7_TXT =
@@ -10,6 +11,7 @@ OBSOLETE_HTML =
 MAN1_TXT += $(filter-out \
 		$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
 		$(wildcard git-*.txt))
+MAN1_L10N_TXT += $(wildcard po/*/man1/git-*.txt)
 MAN1_TXT += git.txt
 MAN1_TXT += gitk.txt
 MAN1_TXT += gitremote-helpers.txt
@@ -86,6 +88,7 @@ DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
 DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
 DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
 DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
+DOC_MAN1_L10N = $(patsubst %.txt,%.1,$(MAN1_L10N_TXT))
 
 prefix ?= $(HOME)
 bindir ?= $(prefix)/bin
@@ -209,6 +212,7 @@ endif
 
 ifneq ($(findstring $(MAKEFLAGS),s),s)
 ifndef V
+	QUIET_PO4A      = @echo '   ' PO4A $@;
 	QUIET_ASCIIDOC	= @echo '   ' ASCIIDOC $@;
 	QUIET_XMLTO	= @echo '   ' XMLTO $@;
 	QUIET_DB2TEXI	= @echo '   ' DB2TEXI $@;
@@ -234,6 +238,15 @@ man1: $(DOC_MAN1)
 man5: $(DOC_MAN5)
 man7: $(DOC_MAN7)
 
+man_l10n: po4a man1_p_l10n
+po4a: po4a.conf
+	$(QUIET_PO4A)po4a po4a.conf
+
+man1_p_l10n: po4a
+	$(MAKE) man1_l10n
+
+man1_l10n: $(DOC_MAN1_L10N)
+
 info: git.info gitman.info
 
 pdf: user-manual.pdf
@@ -247,6 +260,11 @@ install-man: man
 	$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
 	$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
 	$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
+	$(MAKE) install-man-l10n
+
+install-man-l10n: $(DOC_MAN1_L10N)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(mandir)/$(firstword $(subst /man1/, ,$(subst po/,,$<)))/man1
+	$(INSTALL) -m 644 $< $(DESTDIR)$(mandir)$(subst po,,$<)
 
 install-info: info
 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
@@ -323,6 +341,7 @@ clean:
 	$(RM) technical/*.html technical/api-index.txt
 	$(RM) $(cmds_txt) $(mergetools_txt) *.made
 	$(RM) manpage-base-url.xsl
+	$(RM) po/*/*.1 po/*/*.txt
 
 $(MAN_HTML): %.html : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@@ -339,7 +358,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
 
 %.1 %.5 %.7 : %.xml manpage-base-url.xsl
 	$(QUIET_XMLTO)$(RM) $@ && \
-	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+	$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) -o $(dir $<) man $<
 
 %.xml : %.txt asciidoc.conf
 	$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
diff --git a/Documentation/po4a.conf b/Documentation/po4a.conf
new file mode 100644
index 000000000..b6ee8b4a6
--- /dev/null
+++ b/Documentation/po4a.conf
@@ -0,0 +1,5 @@
+[po4a_langs] fr
+[po4a_paths] po/documentation.pot $lang:po/documentation.$lang.po
+[options] opt: " -k 80"
+
+[type: asciidoc] ./git-add.txt $lang:./po/$lang/man1/git-add.txt
-- 
2.12.0
Previous: Junio C HamanoNext: Junio C Hamano
Message 36 of 37 in “l10n: add framework for localizing the manpages”
  1. l10n: add framework for localizing the manpagesJean-Noel Avila, Mar 12, 2017
  2. l10n: add framework for localizing the manpagesJean-Noel Avila, Mar 12, 2017
  3. Jean-Noël AVILAMar 12, 2017
  4. Junio C HamanoMar 13, 2017
  5. Ævar Arnfjörð BjarmasonMar 14, 2017
  6. Junio C HamanoMar 14, 2017
  7. Jean-Noël AvilaMar 15, 2017
  8. Ævar Arnfjörð BjarmasonMar 15, 2017
  9. Jean-Noël AvilaMar 15, 2017
  10. Junio C HamanoMar 15, 2017
  11. Stefan BellerMar 15, 2017
  12. 1/2 l10n: Introduce framework for localizing man pagesJean-Noel Avila, Mar 18, 2017
  13. 2/2 l10n: Add git-add.txt to localized man pagesJean-Noel Avila, Mar 18, 2017
  14. Junio C HamanoMar 18, 2017
  15. Jean-Noël AVILAMar 18, 2017
  16. Junio C HamanoMar 18, 2017
  17. Junio C HamanoMar 20, 2017
  18. Jean-Noël AvilaMar 20, 2017
  19. Jean-Noël AVILAMar 20, 2017
  20. Junio C HamanoMar 20, 2017
  21. Rework manpage localisationJean-Noel Avila, Mar 20, 2017
  22. 2/2 l10n: Add git-add.txt to localized man pagesJean-Noel Avila, Mar 20, 2017
  23. Junio C HamanoMar 20, 2017
  24. Jean-Noël AvilaMar 22, 2017
  25. Junio C HamanoMar 22, 2017
  26. Stefan BellerMar 22, 2017
  27. Junio C HamanoMar 22, 2017
  28. Stefan BellerMar 22, 2017
  29. Michael J GruberMar 24, 2017
  30. Jean-Noël AVILAMar 25, 2017
  31. Junio C HamanoMar 26, 2017
  32. Jean-Noël AVILAMar 27, 2017
  33. Junio C HamanoMar 27, 2017
  34. Ævar Arnfjörð BjarmasonMar 24, 2017
  35. Junio C HamanoMar 24, 2017
  36. 1/2 l10n: Introduce framework for localizing man pagesJean-Noel Avila, Mar 20, 2017
  37. Junio C HamanoMar 21, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.