L10n/bin/validate

57 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
FAIL=0
LOCALES=$(find . -mindepth 1 -maxdepth 1 -type d -regextype grep -regex '\./[a-z]\{2\}_[A-Z]\{2\}' -printf "%P ")
for locale_name in $LOCALES; do
echo "Checking locale $locale_name"
OUTPUT=$(LC_ALL=C msgfmt -cvf --statistics $locale_name/LC_MESSAGES/icinga.po 2>&1 >/dev/null)
ECODE=$?
if [ -f "messages.mo" ]; then
rm "messages.mo"
fi
echo "$OUTPUT"
if [ $ECODE -gt 0 ]; then
FAIL=1
fi
TRANSLATED=0
UNTRANSLATED=0
FUZZY=0
RE="[0-9]+"
LAST_LINE=$(echo "$OUTPUT" | tail -1)
for chars in $LAST_LINE; do
if [[ "$chars" =~ $RE ]] && [[ ${BASH_REMATCH[0]} ]]; then
LAST_CNT="${BASH_REMATCH[0]}"
else
case $chars in
"translated")
TRANSLATED=$LAST_CNT
;;
"fuzzy")
FUZZY=$LAST_CNT
;;
"untranslated")
UNTRANSLATED=$LAST_CNT
;;
esac
fi
done
if [ $FUZZY -gt 0 ]; then
echo "$locale_name still contains $FUZZY fuzzy messages"
FAIL=1
fi
PROGRESS=$(python -c "print (int(round(($TRANSLATED.0 / ($TRANSLATED + $UNTRANSLATED + $FUZZY)) * 100)))")
echo "$locale_name is at $PROGRESS%"
echo
done
exit $FAIL