diff --git a/tools/po_check_entry.sh b/tools/po_check_entry.sh new file mode 100755 --- /dev/null +++ b/tools/po_check_entry.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# 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. + +# Check for aspell. Everything else is in base. +COMMAND=aspell +if ! command -v ${COMMAND} >/dev/null ; then + echo "I need ${COMMAND} from textproc/aspell!" + exit 0 +fi + +LANG="${1}" + +if [ -z "${LANG}" ]; then + echo "No language specified" + exit 0 +fi + +translation=$(cat /dev/stdin) + +# Build a grep(1) filter with all the words aspell(1) could not find in this +# translated text. + +filter= +for word in $(echo "${translation}" | aspell list --lang="${LANG}");do + tmp=$(printf "%s" "${word}|") + filter="${filter}${tmp}" +done + +filter=$(echo "${filter}" | sed -e 's/|$//g') + +# Hilight the translation in the text providing the user with some context about +# where the reported words are used. +if [ -n "${filter}" ]; then + echo "----------- translation -----------" + echo "${translation}" | grep -Ew --color "${filter}" + echo +fi diff --git a/tools/po_spellcheck.sh b/tools/po_spellcheck.sh new file mode 100755 --- /dev/null +++ b/tools/po_spellcheck.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# +# 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. + +# Check for aspell. Everything else is in base. +COMMAND=msgexec +if ! command -v ${COMMAND} >/dev/null ; then + echo "I need ${COMMAND} from devel/gettext-tools!" + exit 0 +fi + +usage() +{ + echo "${0} " + echo "Example: ./${0} documentation/content/es/articles/bsdl-gpl/_index.po es" +} + +if [ ${#} -ne 2 ]; then + usage + exit 0 +fi + +PO_FILE="${1}" +LANG="${2}" + +# msgexec acts as a driver, invoking a command for every +# translated text + +msgexec -i "${PO_FILE}" ./po_check_entry.sh "${LANG}"