171 lines
3.9 KiB
Bash
171 lines
3.9 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -o errexit
|
||
|
# We need stable text format
|
||
|
export LANG=C
|
||
|
|
||
|
if ! test -d po-full ; then
|
||
|
echo >&2 "$0: You need \"po-full\" directory. Call this script only after ./upstream-collect.sh"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
cd po-full
|
||
|
ALL_LNG="$(
|
||
|
for PO in */*.po ; do
|
||
|
LNG=${PO%.po}
|
||
|
LNG=${LNG##*/}
|
||
|
echo "$LNG"
|
||
|
done |
|
||
|
sort -u |
|
||
|
tr '\n' ' '
|
||
|
)"
|
||
|
#echo >&2 "$0 DBG: ALL_LNG=\"$ALL_LNG\""
|
||
|
|
||
|
for DOMAIN in * ; do
|
||
|
for LNG in $ALL_LNG ; do
|
||
|
# Sanitize to not contain "," or ".":
|
||
|
LNG_SN=${LNG//,/__COMMA__}
|
||
|
LNG_SN=${LNG_SN//./__PERIOD__}
|
||
|
DOMAIN_SN=${DOMAIN//,/__COMMA__}
|
||
|
DOMAIN_SN=${DOMAIN_SN//./__PERIOD__}
|
||
|
echo -n "$LNG_SN,$DOMAIN_SN,"
|
||
|
PO=$DOMAIN/$LNG.po
|
||
|
if test -f "$PO" ; then
|
||
|
msgfmt --statistics -o /dev/null $PO 2>&1
|
||
|
else
|
||
|
msgfmt --statistics -o /dev/null ../pot/$DOMAIN.pot 2>&1
|
||
|
fi
|
||
|
done
|
||
|
done |
|
||
|
#tee ../check-translation-completeness-DBG1.log |
|
||
|
(
|
||
|
# "F1 translated messages, F2 fuzzy translations, F3 untranslated messages." Some fields can be missing
|
||
|
IFS=,.
|
||
|
while read LNG DOMAIN F1 F2 F3 F4 ; do
|
||
|
LNG=${LNG//__COMMA__/,}
|
||
|
LNG=${LNG//__PERIOD__/.}
|
||
|
DOMAIN=${DOMAIN//__COMMA__/,}
|
||
|
DOMAIN=${DOMAIN//__PERIOD__/.}
|
||
|
TRANSLATED=0
|
||
|
UNTRANSLATED=0
|
||
|
FUZZY=0
|
||
|
if test -n "$F4" ; then
|
||
|
echo >&2 "$0: Too long output of \"msgfmt --statistics -o /dev/null po-full/$DOMAIN/$LNG.po\": \"$F4\""
|
||
|
exit 1
|
||
|
fi
|
||
|
for STRING in "$F1" "$F2" "$F3" "$F4" ; do
|
||
|
STRING=${STRING# }
|
||
|
case "$STRING" in
|
||
|
*" translated message" )
|
||
|
TRANSLATED=${STRING% translated message}
|
||
|
;;
|
||
|
*" translated messages" )
|
||
|
TRANSLATED=${STRING% translated messages}
|
||
|
;;
|
||
|
*" fuzzy translation" )
|
||
|
FUZZY=${STRING% fuzzy translation}
|
||
|
;;
|
||
|
*" fuzzy translations" )
|
||
|
FUZZY=${STRING% fuzzy translations}
|
||
|
;;
|
||
|
*" untranslated message" )
|
||
|
UNTRANSLATED=${STRING% untranslated message}
|
||
|
;;
|
||
|
*" untranslated messages" )
|
||
|
UNTRANSLATED=${STRING% untranslated messages}
|
||
|
;;
|
||
|
"" )
|
||
|
;;
|
||
|
* )
|
||
|
echo >&2 "$0: Unknown format of \"msgfmt --statistics -o /dev/null po-full/$DOMAIN/$LNG.po\": \"$STRING\""
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
#echo >&2 -n "$0 DBG: LNG=$LNG DOMAIN=$DOMAIN F1=\"$F1\" F2=\"$F2\" F3=\"$F3\" F4=\"$F4\" TRANSLATED=$TRANSLATED UNTRANSLATED=$UNTRANSLATED FUZZY=$FUZZY"
|
||
|
let UNTRANSLATED+=FUZZY || :
|
||
|
let ALL=TRANSLATED+UNTRANSLATED || :
|
||
|
#echo >&2 " DBG: ALL=$ALL all_UNTRANSLATED=$UNTRANSLATED"
|
||
|
let PERCENTAGE=100"*"TRANSLATED/ALL || :
|
||
|
echo "\"$LNG\",\"$DOMAIN\",$PERCENTAGE,$UNTRANSLATED,$ALL"
|
||
|
done
|
||
|
) |
|
||
|
#tee ../check-translation-completeness-DBG2.log |
|
||
|
(
|
||
|
echo >../check-translation-completeness-by-domain.csv "\"Language\",\"Domain\",\"Translated %\",\"Untranslated #\",\"All #\""
|
||
|
tee -a ../check-translation-completeness-by-domain.csv
|
||
|
) |
|
||
|
sort |
|
||
|
(
|
||
|
echo >../check-translation-completeness-by-language.csv "\"Language\",\"Domain\",\"Translated %\",\"Untranslated #\",\"All #\""
|
||
|
tee -a ../check-translation-completeness-by-language.csv
|
||
|
) |
|
||
|
(
|
||
|
IFS=","
|
||
|
while read LNG DOMAIN PERCENTAGE UNTRANSLATED ALL ; do
|
||
|
LNG=${LNG//\"}
|
||
|
case $LNG in
|
||
|
ar )
|
||
|
LNG_NAME="Arabic"
|
||
|
;;
|
||
|
pt_BR )
|
||
|
LNG_NAME="Brazilian Portuguese"
|
||
|
;;
|
||
|
zh_CN )
|
||
|
LNG_NAME="Chinese Simplified"
|
||
|
;;
|
||
|
zh_TW )
|
||
|
LNG_NAME="Chinese Traditional"
|
||
|
;;
|
||
|
cs )
|
||
|
LNG_NAME="Czech"
|
||
|
;;
|
||
|
nl )
|
||
|
LNG_NAME="Dutch"
|
||
|
;;
|
||
|
fr )
|
||
|
LNG_NAME="French"
|
||
|
;;
|
||
|
de )
|
||
|
LNG_NAME="German"
|
||
|
;;
|
||
|
hu )
|
||
|
LNG_NAME="Hungarian"
|
||
|
;;
|
||
|
it )
|
||
|
LNG_NAME="Italian"
|
||
|
;;
|
||
|
ja )
|
||
|
LNG_NAME="Japanese"
|
||
|
;;
|
||
|
ko )
|
||
|
LNG_NAME="Korean"
|
||
|
;;
|
||
|
pl )
|
||
|
LNG_NAME="Polish"
|
||
|
;;
|
||
|
ru )
|
||
|
LNG_NAME="Russian"
|
||
|
;;
|
||
|
es )
|
||
|
LNG_NAME="Spanish"
|
||
|
;;
|
||
|
sv )
|
||
|
LNG_NAME="Swedish"
|
||
|
;;
|
||
|
* )
|
||
|
continue
|
||
|
;;
|
||
|
esac
|
||
|
echo "\"$LNG_NAME\",$DOMAIN,$PERCENTAGE,$UNTRANSLATED,$ALL"
|
||
|
done
|
||
|
) |
|
||
|
sort |
|
||
|
(
|
||
|
echo >../check-translation-completeness-supported.csv "\"Language\",\"Domain\",\"Translated %\",\"Untranslated #\",\"All #\""
|
||
|
cat >../check-translation-completeness-supported.csv
|
||
|
)
|
||
|
|
||
|
cd ..
|
||
|
zip check-translation-completeness.zip check-translation-completeness*.csv
|