Build translated docs in tox

As an early bird for project doc translation we build translated docs
here with an extra script. This procedure is usual in the main doc
project, but there are different versions of the same script.
Later we to centralize such things.

Change-Id: I906be044021c93b9aeb644bcd3c550df123a3c83
This commit is contained in:
Frank Kloeker 2018-09-22 23:07:13 +02:00 committed by Jesse Pretorius (odyssey4me)
parent e1aabd05b8
commit 138fdef0a6
5 changed files with 83 additions and 2 deletions

View File

@ -38,3 +38,5 @@ libsemanage-python [platform:redhat]
# Required for compressing collected log files in CI
gzip
# Required to build language docs
gettext

View File

@ -8,3 +8,4 @@ openstackdocstheme>=1.18.1 # Apache-2.0
reno>=2.5.0 # Apache-2.0
sphinxmark>=0.1.14 # Apache-2.0
doc8>=0.6.0 # Apache-2.0
bashate>=0.5.1 # Apache-2.0

View File

@ -353,3 +353,4 @@ sphinxmark_image = 'text'
sphinxmark_text = watermark
sphinxmark_text_color = (128, 128, 128)
sphinxmark_text_size = 70
locale_dirs = ['locale/']

77
tools/build-docs.sh Executable file
View File

@ -0,0 +1,77 @@
#!/bin/bash -xe
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# Build English and translated version of project documentation
DOCNAME=doc
DIRECTORY=doc
# clean build dir
rm -rf ${DIRECTORY}/build/
# create pot files
sphinx-build -a -b gettext \
-d ${DIRECTORY}/build/doctrees.gettext \
${DIRECTORY}/source ${DIRECTORY}/source/locale/
# check all language translation resouce
for locale in `find ${DIRECTORY}/source/locale/ -maxdepth 1 -type d` ; do
# skip if it is not a valid language translation resource.
if [ ! -d ${locale}/LC_MESSAGES/ ]; then
continue
fi
language=$(basename $locale)
echo "===== Building $language translation ====="
# prepare all translation resources
for pot in ${DIRECTORY}/source/locale/*.pot ; do
# get filename
potname=$(basename $pot)
resname=${potname%.pot}
# skip if it is not a valid language translation resource.
if [ ! -e ${locale}/LC_MESSAGES/${DOCNAME}-${resname}.po ]; then
continue
fi
# merge all translation resources
msgmerge -q -o \
${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.po \
${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}-${resname}.po \
${DIRECTORY}/source/locale/${potname}
# compile all translation resources
msgfmt -o \
${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.mo \
${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${resname}.po
done
# build lamguage version
sphinx-build -a -b html -D language=${language} \
-d ${DIRECTORY}/build/doctrees.languages/${language} \
${DIRECTORY}/source ${DIRECTORY}/build/html/${language}
# remove newly created files
git clean -f -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/*.po
git clean -f -x -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/*.mo
git clean -f -x -q ${DIRECTORY}/source/locale/.doctrees
# revert changes to po file
git reset -q ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}.po
git checkout -q -- ${DIRECTORY}/source/locale/${language}/LC_MESSAGES/${DOCNAME}.po
done
# remove generated pot files
git clean -f -q ${DIRECTORY}/source/locale/*.pot
# build english version
sphinx-build -a -b html \
-d ${DIRECTORY}/build/doctrees \
${DIRECTORY}/source ${DIRECTORY}/build/html/

View File

@ -42,9 +42,9 @@ setenv =
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
commands=
bash -c "rm -rf doc/build"
doc8 doc
sphinx-build -b html doc/source doc/build/html
bashate tools/build-docs.sh
{toxinidir}/tools/build-docs.sh