Browse Source

add doc-tools-build-lang for build project docs with translations

this script should called by 'tox -edocs' in project documentation
if translations are available and need to build additionaly.

Change-Id: I016494185ba168ba72a8ad67eb0afe4a2875f5c5
changes/68/604568/1
Frank Kloeker 1 year ago
parent
commit
49cfcaf379
2 changed files with 78 additions and 0 deletions
  1. 77
    0
      bin/doc-tools-build-lang
  2. 1
    0
      setup.cfg

+ 77
- 0
bin/doc-tools-build-lang 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/

+ 1
- 0
setup.cfg View File

@@ -27,6 +27,7 @@ data_files =
scripts =
bin/doc-tools-check-languages
bin/doc-tools-build-rst
bin/doc-tools-build-lang

[global]
setup-hooks =

Loading…
Cancel
Save