Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Apr 2021 01:03:34 GMT
From:      "Danilo G. Baio" <dbaio@FreeBSD.org>
To:        doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org
Subject:   git: b5f7b600ed - main - Add helper scripts for translations
Message-ID:  <202104080103.13813YWF082313@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dbaio (ports committer):

URL: https://cgit.FreeBSD.org/doc/commit/?id=b5f7b600edd24cd1eca235f8fab631821de98e78

commit b5f7b600edd24cd1eca235f8fab631821de98e78
Author:     Danilo G. Baio <dbaio@FreeBSD.org>
AuthorDate: 2021-04-08 00:54:11 +0000
Commit:     Danilo G. Baio <dbaio@FreeBSD.org>
CommitDate: 2021-04-08 00:58:05 +0000

    Add helper scripts for translations
    
    Already using them on Weblate FreeBSD,
    https://translate-dev.freebsd.org/.
    
    Approved by:   bcr, gjb (doceng)
    Differential Revision:  https://reviews.freebsd.org/D29569
---
 tools/translate.sh                 | 78 +++++++++++++++++++++++++++++++
 tools/update_translate_template.sh | 94 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 172 insertions(+)

diff --git a/tools/translate.sh b/tools/translate.sh
new file mode 100755
index 0000000000..cb4005611d
--- /dev/null
+++ b/tools/translate.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# Copyright (c) 2021 Danilo G. Baio <dbaio@FreeBSD.org>
+#
+# 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
index 0000000000..4bb5699d2e
--- /dev/null
+++ b/tools/update_translate_template.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+#
+# Copyright (c) 2021 Danilo G. Baio <dbaio@FreeBSD.org>
+#
+# 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
+



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104080103.13813YWF082313>