diff --git a/tools/translate.sh b/tools/translate.sh index c5a4ab895e..10be78aa05 100755 --- a/tools/translate.sh +++ b/tools/translate.sh @@ -1,109 +1,125 @@ #!/bin/sh # # Copyright (c) 2021 Danilo G. Baio # Copyright (c) 2021 Fernando Apesteguia # # 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. ######################################################### # This is a temporary fix for po4a-translate command # # po4a: Fix YAML Front Matter / tags and trademarks # # https://wiki.freebsd.org/Doc/IdeaList#Translation # # $1: File to fix # ######################################################### fixup_lists() { sed -i '' -E -e "s/(tags|trademarks).*'\[(.*)]'/\1: [\2]/g" "${1}" } ######################################################### # Fix includes. In a few cases we want to include the # # master (aka English) version of the includes # # $1: file to fix # # $2: language # ######################################################### fixup_includes() { # Replace ...shared/en/... with shared/$LANGUAGE # content/en with content/$LANGUAGE in includes sed -i '' -E -e "s,include::(.*)shared/en/,include::\1shared/${2}/," \ -e "s,\{include-path\}(contrib*),content/en/articles/contributors/\1," \ -e "s,include-path: content/en/,include-path: content/${2}/," \ -e "s,(include::.*)contrib-develinmemoriam(.*),include::{include-path}contrib-develinmemoriam\2," \ -e "s,(:chapters-path: |include::)content/en/books,\1content/${2}/books," \ "${1}" } if [ "$1" = "" ] || [ "$2" = "" ]; then - echo "Need to inform which component and|or language." - echo "$0 documentation|website pt_BR|es" + echo "Need to inform component and language:" + echo " $0 documentation es" + echo "A third (optional) argument can be informed to translate only a specific document:" + echo " $0 documentation pt-br articles/bsdl-gpl" exit 1 fi COMPONENT="$1" LANGUAGE="$2" +SEARCH_RESTRICT="$3" # 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 +for pofile in $(find "$COMPONENT/content/$LANGUAGE/$SEARCH_RESTRICT" -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-updatepo \ + --format asciidoc \ + --option compat=asciidoctor \ + --option yfm_keys=title,part,description \ + --master "$adoc_orig" \ + --master-charset "UTF-8" \ + --copyright-holder "The FreeBSD Project" \ + --package-name "FreeBSD Documentation" \ + --po "$pofile" + if [ -f "${pofile}~" ]; then + rm -f "${pofile}~" + fi + po4a-translate \ --format asciidoc \ --option compat=asciidoctor \ --option yfm_keys=title,part,description \ --master "$adoc_orig" \ --master-charset "UTF-8" \ --po "$pofile" \ --localized "$adoc_lang" \ --localized-charset "UTF-8" \ --keep "$KEEP" fixup_lists "${adoc_lang}" fixup_includes "${adoc_lang}" "${LANGUAGE}" done