bin/validate: Rename to `bin/compile`

This commit is contained in:
Johannes Meyer 2021-12-13 10:10:29 +01:00
parent 6d83bca90d
commit 85f49b4d6a
3 changed files with 20 additions and 80 deletions

View File

@ -1,24 +0,0 @@
name: Locale Validation
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
validate:
name: Locale Validation
runs-on: ubuntu-latest
steps:
- name: Checkout code base
uses: actions/checkout@v2
- name: Setup dependencies
run: sudo apt-get -y install gettext
- name: Validate locale files
run: cd ./locale/ && ../bin/validate

20
bin/compile Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
declare -A CATALOGS=()
COMPONENTS=$(find . -mindepth 1 -maxdepth 1 -type d -not -name "sources.d" -printf "%P ")
for component_name in $COMPONENTS; do
echo "Checking $component_name for catalogs"
LOCALES=$(find $component_name -mindepth 1 -maxdepth 1 -type d -printf "%P ")
echo "Component locales found: $LOCALES"
for locale_name in $LOCALES; do
CATALOGS[$locale_name]+=" $component_name/$locale_name/LC_MESSAGES/icinga.po"
done
done
for locale_name in "${!CATALOGS[@]}"; do
echo "Compiling catalogs for $locale_name"
mkdir -p ../locale/$locale_name/LC_MESSAGES
echo "${CATALOGS[$locale_name]}" | xargs msgcat -o ../locale/$locale_name/LC_MESSAGES/icinga.po --lang $locale_name
msgfmt -o ../locale/$locale_name/LC_MESSAGES/icinga.mo -c ../locale/$locale_name/LC_MESSAGES/icinga.po
done

View File

@ -1,56 +0,0 @@
#!/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