diff --git a/.github/workflows/validate-locales.yml b/.github/workflows/validate-locales.yml deleted file mode 100644 index 54c6d862..00000000 --- a/.github/workflows/validate-locales.yml +++ /dev/null @@ -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 diff --git a/bin/compile b/bin/compile new file mode 100755 index 00000000..7ef19351 --- /dev/null +++ b/bin/compile @@ -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 diff --git a/bin/validate b/bin/validate deleted file mode 100755 index e22321f9..00000000 --- a/bin/validate +++ /dev/null @@ -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