From owner-svn-doc-head@freebsd.org Mon Aug 24 15:54:11 2015 Return-Path: Delivered-To: svn-doc-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D27DC9C13C2; Mon, 24 Aug 2015 15:54:11 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C321C1FE9; Mon, 24 Aug 2015 15:54:11 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7OFsBFo005046; Mon, 24 Aug 2015 15:54:11 GMT (envelope-from wblock@FreeBSD.org) Received: (from wblock@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7OFsBhm005044; Mon, 24 Aug 2015 15:54:11 GMT (envelope-from wblock@FreeBSD.org) Message-Id: <201508241554.t7OFsBhm005044@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wblock set sender to wblock@FreeBSD.org using -f From: Warren Block Date: Mon, 24 Aug 2015 15:54:11 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r47306 - head/share/mk X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the doc tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Aug 2015 15:54:12 -0000 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} \