diff --git a/tools/translate.sh b/tools/translate.sh new file mode 100755 --- /dev/null +++ b/tools/translate.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Copyright (c) 2021 Danilo G. Baio +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +if [ "$1" = "" ] || [ "$2" = "" ]; then + echo "Need to inform which component and|or language." + echo "$0 documentation|website pt_BR|es" + exit 1 +fi + +COMPONENT="$1" +LANGUAGE="$2" + +# po4a-translate option: -k, --keep +# Minimal threshold for translation percentage to keep (i.e. write) +# the resulting file (default: 80). I.e. by default, files have to be +# translated at least at 80% to get written. +# # KEEP_ENV=10 ./tools/translate.sh documentation pt_BR +KEEP="${KEEP_ENV:-80}" + +if [ "$LANGUAGE" = "en" ]; then + echo "Language 'en' can't be translated." + exit 1 +fi + +if [ ! -d "$COMPONENT/content/$LANGUAGE" ]; then + echo "$COMPONENT/content/$LANGUAGE does not exist." + exit 1 +fi + +for pofile in $(find "$COMPONENT/content/$LANGUAGE/" -name "*.po" ); do + name=$(basename -s .po "$pofile") + if [ "$name" = "chapters-order" ]; then + continue + fi + + dirbase=$(dirname "$pofile") + adoc_lang="$dirbase/$name.adoc" + adoc_orig=$(echo "$adoc_lang" | sed s,$COMPONENT/content/$LANGUAGE,$COMPONENT/content/en,) + + echo "....." + echo "$pofile" + + po4a-translate \ + --format asciidoc \ + --option compat=asciidoctor \ + --option yfm_keys=title,part \ + --master "$adoc_orig" \ + --master-charset "UTF-8" \ + --po "$pofile" \ + --localized "$adoc_lang" \ + --localized-charset "UTF-8" \ + --keep "$KEEP" + +done + diff --git a/tools/update_translate_template.sh b/tools/update_translate_template.sh new file mode 100755 --- /dev/null +++ b/tools/update_translate_template.sh @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Copyright (c) 2021 Danilo G. Baio +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +ALL_COMPONENTS="documentation +website" + +COMPONENTS="${1:-$ALL_COMPONENTS}" + +GIT_IGNORE_FILES="toc-examples.adoc +toc-figures.adoc +toc-tables.adoc +toc.adoc +toc-1.adoc +toc-2.adoc +toc-3.adoc +toc-4.adoc +toc-5.adoc" + +for remove_file in $GIT_IGNORE_FILES; do + find documentation/content/en/ -name "$remove_file" -delete -print || exit 1 +done + +for component in $COMPONENTS; do + + if [ ! -d "$component/content/en" ]; then + echo "Directory '$component/content/en' not found." + exit 1 + fi + + for document in $(find "$component/content/en/" -name "*.adoc" ); do + name=$(basename -s .adoc "$document") + + # Ignore some files + if [ "$name" = "chapters-order" ]; then + continue + fi + + if [ "$document" = "documentation/content/en/books/books.adoc" ]; then + continue + fi + + dirbase=$(dirname "$document") + echo "$document" + + if [ -f "$dirbase/$name.po" ]; then + po4a-updatepo \ + --format asciidoc \ + --option compat=asciidoctor \ + --option yfm_keys=title,part \ + --master "$document" \ + --master-charset "UTF-8" \ + --copyright-holder "The FreeBSD Project" \ + --package-name "FreeBSD Documentation" \ + --po "$dirbase/$name.po" + if [ -f "$dirbase/$name.po~" ]; then + rm -f "$dirbase/$name.po~" + fi + else + po4a-gettextize \ + --format asciidoc \ + --option compat=asciidoctor \ + --option yfm_keys=title,part \ + --master "$document" \ + --master-charset "UTF-8" \ + --copyright-holder "The FreeBSD Project" \ + --package-name "FreeBSD Documentation" \ + --po "$dirbase/$name.po" + fi + done +done +