diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-11-27 21:54:49 -0500 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-11-27 21:54:49 -0500 |
commit | 78b1b83be0cf04b4cba707751b7ad4d97787fe37 (patch) | |
tree | 0260daae62c3c0c055b7ec73b274fa82b31b344f /markup/pod/live-manual/media/text/bin/find-untranslated.sh |
track document samples used
Diffstat (limited to 'markup/pod/live-manual/media/text/bin/find-untranslated.sh')
-rwxr-xr-x | markup/pod/live-manual/media/text/bin/find-untranslated.sh | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/markup/pod/live-manual/media/text/bin/find-untranslated.sh b/markup/pod/live-manual/media/text/bin/find-untranslated.sh new file mode 100755 index 0000000..d39b6fe --- /dev/null +++ b/markup/pod/live-manual/media/text/bin/find-untranslated.sh @@ -0,0 +1,198 @@ +#!/bin/sh + +set -e + +# Script to assist translators in finding and fixing untranslated strings in live-manual. + +# First, we prepare to count the total number of untranslated strings. + +Count_untranslated_strings () +{ + for POFILE in manual/po/*/* + do + if [ "$(sed '$!d' ${POFILE})" = 'msgstr ""' ] + then + sed '$G' ${POFILE} | grep --extended-regexp --before-context=1 '^$' | grep --count '^msgstr ""$' || continue + else + grep --extended-regexp --before-context=1 '^$' ${POFILE} | grep --count '^msgstr ""$' || continue + fi + done +} + +# Then, if there is not any untranslated string the script exits. + +Check_untranslated_strings () +{ + if [ "$(Count_untranslated_strings | awk '{ sum += $1 } END { print sum }')" -eq "0" ] + then + echo "There are 0 untranslated strings." + exit 0 + fi +} + +Check_untranslated_strings + +# Creating other functions. + +# An untranslated string is an empty 'msgstr ""' followed by a blank line. We +# grep blank lines and ensure that the previous line only contains 'msgstr ""'. +# +# If the last string in a po file is not translated, there is no blank line at +# the end so we need to add one with "sed '$G''". +# + +Find_untranslated () +{ +echo "" +echo " * Searching for 'untranslated strings' in ${LANGUAGE} ..." +echo "" + +for POFILE in manual/po/"${LANGUAGE}"/* + do + echo "Untranslated strings in ${POFILE}" + + if [ "$(sed '$!d' ${POFILE})" = 'msgstr ""' ] + then + sed '$G' ${POFILE} | grep --extended-regexp --before-context=1 '^$' | grep --count '^msgstr ""$' || continue + else + grep --extended-regexp --before-context=1 '^$' ${POFILE} | grep --count '^msgstr ""$' || continue + fi + done +} + +# Showing *only* untranslated strings: +# pros: finer granularity, easier to read... +# cons: Some languages with accents and other similar stuff may greatly benefit +# from a quick glance at the translated strings, too. And then some... +# +# If there is not any untranslated string in the selected language, then exit. + +Show_strings () +{ +if [ "$(Find_untranslated | awk '{ sum += $1 } END { print sum }')" -eq "0" ] + then + echo "" + echo "There are 0 untranslated strings in language: ${LANGUAGE}" | grep --color ${LANGUAGE} + echo "" + + exit 0 +fi + +echo "" +echo "Do you want to see the $(Find_untranslated | awk '{ sum += $1 } END { print sum }') strings before starting work? [yes/no] ['q' to quit]" + +POFILES="$(Find_untranslated | grep --extended-regexp --before-context=1 '[1-9]'| sed -e 's|Untranslated strings in ||' -e 's|--||' -e 's|[0-9]*||g')" + +read ANSWER +case "${ANSWER}" in + y*|Y*) + for POFILE in ${POFILES} + do + echo "" + echo "Untranslated strings in $(basename ${POFILE})" | grep --color $(basename ${POFILE}) + echo "" + + msggrep --invert-match --msgstr --regexp='' ${POFILE} + done + + Open_editor + ;; + + n*|N*) + Open_editor + ;; + + q) + exit 0 + ;; + + *) + echo "You didn't type 'yes'. Exiting..." + exit 0 + ;; +esac +} + +# Searches untranslated strings and offers to open editor to fix them. +# +# Editor defaults to vim unless otherwise specified in the environment. + +EDITOR="${EDITOR:-vim}" + +Open_editor () +{ +echo "" +echo "Do you want to launch your text editor to start fixing them? [yes/no] ['q' to quit]" + +POFILESTOEDIT="$(Find_untranslated | grep --extended-regexp --before-context=1 '[1-9]'| sed -e 's|Untranslated strings in ||' -e 's|--||' -e 's|[0-9]*||g')" + +read OPENEDITOR + +case "$OPENEDITOR" in + y*|Y*) + if [ -z "${POFILESTOEDIT}" ] + then + echo "No po files to edit." + exit 0 + else + ${EDITOR} ${POFILESTOEDIT} + fi + ;; + + n*|N*) + echo "You typed 'no'. Exiting..." + exit 0 + ;; + + q) + exit 0 + ;; + + *) + echo "You didn't type 'yes'. Exiting..." + exit 0 + ;; +esac +} + +# Main menu. + +echo "Counting untranslated strings...please wait..." +echo "" +echo "There are $(Count_untranslated_strings | awk '{ sum += $1 } END { print sum }') untranslated strings in live-manual." +echo "This script can help you find and fix them. What is your language?." +echo "Type: $(ls -C manual/po) ['a' to see all]['q' to quit]" + +read LANGUAGE +case "$LANGUAGE" in + + ca|de|es|fr|it|ja|pl|pt_BR|ro) + Find_untranslated + Show_strings + ;; + + en) + echo "Nothing to be done, really." + echo "Translation English-English not implemented yet!" + ;; + + a) + for LANGUAGE in $(ls manual/po) + do + Find_untranslated + if [ "$(Find_untranslated | awk '{ sum += $1 } END { print sum }')" -eq "0" ] + then + echo "" + echo "There are 0 untranslated strings in language: ${LANGUAGE}" | grep --color ${LANGUAGE} + echo "" + fi + done + ;; + + q) + exit 0 + ;; + + *) + echo "No language chosen. Exiting..." +esac |