Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Aug 2015 15:54:11 +0000 (UTC)
From:      Warren Block <wblock@FreeBSD.org>
To:        doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org
Subject:   svn commit: r47306 - head/share/mk
Message-ID:  <201508241554.t7OFsBhm005044@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: wblock
Date: Mon Aug 24 15:54:10 2015
New Revision: 47306
URL: https://svnweb.freebsd.org/changeset/doc/47306

Log:
  Add PO translation support.
  
  Reviewed by:	hrs (earlier version), blackend
  Approved by:	doceng (implicit)
  Differential Revision:	https://reviews.freebsd.org/D2947

Modified:
  head/share/mk/doc.commands.mk
  head/share/mk/doc.docbook.mk

Modified: head/share/mk/doc.commands.mk
==============================================================================
--- head/share/mk/doc.commands.mk	Mon Aug 24 13:45:32 2015	(r47305)
+++ head/share/mk/doc.commands.mk	Mon Aug 24 15:54:10 2015	(r47306)
@@ -70,8 +70,13 @@ HTML2PDBOPTS?=	-y -d0 -Idef ${HTML2PDBFL
 HTML2TXT?=	${PREFIX}/bin/links
 HTML2TXTOPTS?=	-dump ${HTML2TXTFLAGS}
 
+ITSTOOL?=	${PREFIX}/bin/itstool
+
 JING?=		${PREFIX}/bin/jing
 
+MSGFMT?=	${PREFIX}/bin/msgfmt
+MSGMERGE?=	${PREFIX}/bin/msgmerge
+
 XMLLINT?=	${PREFIX}/bin/xmllint
 XSLTPROC?=	${PREFIX}/bin/xsltproc
 

Modified: head/share/mk/doc.docbook.mk
==============================================================================
--- head/share/mk/doc.docbook.mk	Mon Aug 24 13:45:32 2015	(r47305)
+++ head/share/mk/doc.docbook.mk	Mon Aug 24 15:54:10 2015	(r47306)
@@ -270,6 +270,58 @@ ${DOC}.parsed.xml: ${SRCS} ${XML_INCLUDE
 	${SED} 's|@@URL_RELPREFIX@@|http://www.FreeBSD.org|g' < ${.TARGET} > ${DOC}.parsed.print.xml
 	${SED} -i '' -e 's|@@URL_RELPREFIX@@|../../../..|g' ${.TARGET}
 
+# translation -------------------------------------------------------
+
+# Master English document
+MASTERDOC_EN?=	${MASTERDOC:S/${LANGCODE}/en_US.ISO8859-1/}
+TRAN_DIR?=	${MASTERDOC:H}
+EN_DIR?=	${TRAN_DIR:S/${LANGCODE}/en_US.ISO8859-1/}
+PO_LANG?=	${LANGCODE:C/\..*$//}
+PO_CHARSET?=	${LANGCODE:tl:C/^.*\.//:S/^iso/iso-/:S/utf-8/UTF-8/}
+CLEANFILES+=	${DOC}.translate.xml ${PO_LANG}.mo ${PO_LANG}.mo
+
+# fix settings in PO file
+POSET_CMD=	${SED} -i '' -e 's,^\(\"Language-Team:.*\\n\"\),\1\${.newline}\"Language: ${PO_LANG}\\n\",' \
+			     -e 's,^\"Content-Type: text/plain; charset=.*\\n,\"Content-Type: text/plain; charset=${PO_CHARSET}\\n,'
+
+.if ${.TARGETS:Mpo} || ${.TARGETS:Mtran}
+${DOC}.translate.xml:
+	@if [ "${TRAN_DIR}" == "${EN_DIR}" ]; then \
+		${ECHO} "build PO file in a non-English dir" ; \
+		exit 1 ; \
+	 fi
+	# normalize the English original into a single file
+	@${XMLLINT} --nonet --noent --valid --xinclude ${MASTERDOC_EN} > ${.TARGET}.tmp
+	# remove redundant namespace attributes
+	@${XMLLINT} --nsclean ${.TARGET}.tmp > ${.TARGET}
+	@${RM} ${.TARGET}.tmp
+
+po: ${PO_LANG}.po
+.PHONY:	po
+${PO_LANG}.po:	${DOC}.translate.xml
+	@${ITSTOOL} -o ${PO_LANG}.po.tmp ${DOC}.translate.xml
+	@( if [ -f "${PO_LANG}.po" ]; then \
+		echo "${PO_LANG}.po exists, merging" ; \
+		${MSGMERGE} -o ${PO_LANG}.po.new ${PO_LANG}.po ${PO_LANG}.po.tmp ;\
+		${MV} ${PO_LANG}.po.new ${PO_LANG}.po ; \
+		${RM} ${PO_LANG}.po.tmp ; \
+	  else \
+	  	${ECHO} "${PO_LANG}.po created, please check and correct the settings in the header" ; \
+		${MV} ${PO_LANG}.po.tmp ${PO_LANG}.po ; \
+		${POSET_CMD} ${.TARGET} ; \
+	  fi )
+
+${PO_LANG}.mo:	${PO_LANG}.po
+	@${MSGFMT} -o ${.TARGET} ${.ALLSRC}
+
+tran ${DOC}.xml:	${DOC}.translate.xml ${PO_LANG}.mo
+	@if [ "${TRAN_DIR}" = "${EN_DIR}" ]; then \
+		${ECHO} "build translation in a non-English dir" ; \
+		exit 1 ; \
+	 fi
+	${ITSTOOL} -l ${PO_LANG} -m ${PO_LANG}.mo -o ${DOC}.xml ${DOC}.translate.xml
+.endif
+
 # XHTML -------------------------------------------------------------
 
 index.html: ${DOC}.parsed.xml ${LOCAL_IMAGES_LIB} ${LOCAL_IMAGES_PNG} \



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508241554.t7OFsBhm005044>