#!/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