phpmyadmin/phpmyadmin

View on GitHub
bin/remove-incomplete-mo

Summary

Maintainability
Test Coverage
#!/bin/sh
#
# Removes mo files for incomplete translations
#

# Do not run as CGI
if [ -n "$GATEWAY_INTERFACE" ] ; then
    echo 'Can not invoke as CGI!'
    exit 1
fi

set -e

#
# How many percent needs to be translated
#
THRESHOLD=40

#
# Generated output file
#
TMPOUTPUTFILE=app/language_stats.inc.php.tmp
OUTPUTFILE=app/language_stats.inc.php

if [ -n "$1" ] ; then
    THRESHOLD=$1
fi

{
    echo '<?php'
    echo '/**'
    echo ' * Automatically generated file, do not edit!'
    echo ' * Generated by bin/remove-incomplete-mo'
    echo ' */'
    echo ''
    echo "\$GLOBALS['language_stats'] = ["
} > $TMPOUTPUTFILE

check() {
    TMPOUTPUTFILE=$2
    lang=$(echo "$1" | sed 's@resources/po/\(.*\)\.po@\1@')
    STATS=$(LC_ALL=C  msgfmt --statistics -o /dev/null "$1" 2>&1)
    if echo "$STATS" | grep -q ' translated ' ; then
        TRANSLATED=$(echo "$STATS" | sed 's/\(^\|.* \)\([0-9]*\) translated.*/\2/')
    else
        TRANSLATED=0
    fi
    if echo "$STATS" | grep -q ' fuzzy ' ; then
        FUZZY=$(echo "$STATS" | sed 's/\(^\|.* \)\([0-9]*\) fuzzy.*/\2/')
    else
        FUZZY=0
    fi
    if echo "$STATS" | grep -q ' untranslated ' ; then
        UNTRANSLATED=$(echo "$STATS" | sed 's/\(^\|.* \)\([0-9]*\) untranslated.*/\2/')
    else
        UNTRANSLATED=0
    fi
    PERCENT=$((100 * TRANSLATED / ( TRANSLATED + FUZZY + UNTRANSLATED )))
    echo "    '$lang' => $PERCENT," >> "$TMPOUTPUTFILE"

    if [ "$PERCENT" -lt "$THRESHOLD" ] ; then
        echo "Removing $lang, only $PERCENT%"
        rm -f resources/locale/"$lang"/LC_MESSAGES/phpmyadmin.mo
        rmdir resources/locale/"$lang"/LC_MESSAGES
        rmdir resources/locale/"$lang"
    fi
}

for x in resources/po/*.po  ; do
    check "$x" "$TMPOUTPUTFILE"
done

echo '];' >> "$TMPOUTPUTFILE"

mv "$TMPOUTPUTFILE" $OUTPUTFILE