Index: share/mk/doc.commands.mk =================================================================== --- share/mk/doc.commands.mk +++ share/mk/doc.commands.mk @@ -70,8 +70,13 @@ 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 Index: share/mk/doc.docbook.mk =================================================================== --- share/mk/doc.docbook.mk +++ share/mk/doc.docbook.mk @@ -270,6 +270,51 @@ ${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/} +# ISO639 two-char language code, like "es" for Spanish +ISO_LANG?= ${LANGCODE:C/_.*$//} +NORMALIZE_CMD= ${XMLLINT} --nonet --noent --valid --xinclude +# filter redundant namespace attributes +FILTER_CMD= ${XMLLINT} --nsclean + +# fix settings in PO file +POSET_CMD= ${SED} -i '' -e 's,^\"Language: \\n,\"Language: ${ISO_LANG}\\n,' \ + -e 's,^\"Content-Type: text/plain; charset=CHARSET\\n,\"Content-Type: text/plain; charset=UTF-8\\n,' + +${DOC}.translate.xml: + ${NORMALIZE_CMD} ${MASTERDOC_EN} > ${.TARGET}.tmp + ${FILTER_CMD} ${.TARGET}.tmp > ${.TARGET} + ${RM} ${.TARGET}.tmp +CLEANFILES+= ${DOC}.translate.xml + +po: ${ISO_LANG}.po +.PHONY: po +${ISO_LANG}.po: ${DOC}.translate.xml + ${ITSTOOL} -k -o ${ISO_LANG}.po.tmp ${DOC}.translate.xml + @( if [ -f "${ISO_LANG}.po" ]; then \ + echo "${ISO_LANG}.po exists, merging" ; \ + ${MSGMERGE} -o ${ISO_LANG}.po.new ${ISO_LANG}.po ${ISO_LANG}.po.tmp ;\ + ${MV} ${ISO_LANG}.po.new ${ISO_LANG}.po ; \ + ${RM} ${ISO_LANG}.po.tmp ; \ + else \ + ${ECHO} "New PO file created." ; \ + ${ECHO} "Please check and correct the settings in the header of ${ISO_LANG}.po." ; \ + ${MV} ${ISO_LANG}.po.tmp ${ISO_LANG}.po ; \ + ${POSET_CMD} ${.TARGET} ; \ + fi ) + +${ISO_LANG}.mo: ${ISO_LANG}.po + ${MSGFMT} -o ${.TARGET} ${.ALLSRC} +CLEANFILES+= ${ISO_LANG}.mo + +tran ${DOC}.xml: ${DOC}.translate.xml ${ISO_LANG}.mo + ${ITSTOOL} -l ${ISO_LANG} -m ${ISO_LANG}.mo -o ${DOC}.xml ${DOC}.translate.xml + # XHTML ------------------------------------------------------------- index.html: ${DOC}.parsed.xml ${LOCAL_IMAGES_LIB} ${LOCAL_IMAGES_PNG} \