chore: improve missing-translations.sh

This commit is contained in:
Gregor Kleen 2020-02-28 08:52:46 +01:00
parent 7462e03e70
commit 50442a02d1

View File

@ -2,6 +2,10 @@
set -e set -e
typeset -a requiredLangs
requiredLangs=(de en)
function translations() { function translations() {
msgFile=$1 msgFile=$1
@ -10,7 +14,7 @@ function translations() {
} }
typeset -a msgFiles typeset -a msgFiles
msgFiles=(messages/**/*.msg) msgFiles=(messages/**/*.msg(.N))
typeset -a msgDirectories typeset -a msgDirectories
msgDirectories=() msgDirectories=()
@ -20,7 +24,7 @@ for msgFile (${msgFiles}); do
fi fi
done done
difference=0 msgDifference=0
for msgDirectory (${msgDirectories}); do for msgDirectory (${msgDirectories}); do
typeset -a dirMsgFiles typeset -a dirMsgFiles
@ -30,7 +34,21 @@ for msgDirectory (${msgDirectories}); do
dirMsgFiles+=(${msgFile}) dirMsgFiles+=(${msgFile})
fi fi
done done
for lang (${requiredLangs}); do
foundLang=0
for msgFile (${dirMsgFiles}); do
[[ ${msgFile:t} =~ "^${lang}[-.]" ]] || continue
foundLang=1
break
done
if [[ $foundLang -ne 1 ]]; then
msgDifference=1
printf "%s missing required language %s\n" $msgDirectory $lang
fi
done
( (
diffDir="" diffDir=""
function cleanup() { function cleanup() {
@ -45,14 +63,49 @@ for msgDirectory (${msgDirectories}); do
for msgFile (${dirMsgFiles}); do for msgFile (${dirMsgFiles}); do
translations ${msgFile} > ${diffDir}/${msgFile:t} translations ${msgFile} > ${diffDir}/${msgFile:t}
diffArgs+=(${diffDir}/${msgFile:t}) diffArgs+=(-L ${msgFile} ${diffDir}/${msgFile:t})
done done
printf ">>> %s\n" ${msgDirectory} # printf ">>> %s\n" ${msgDirectory}
diff --suppress-common-lines -wB ${diffArgs} diff -u0 --suppress-common-lines -wB ${diffArgs} | grep -vE '^@@.*@@'
) || difference=1 ) || msgDifference=1
done done
if [[ $difference -ne 0 ]]; then
typeset -a templateFiles
templateFiles=(templates/i18n/**/*(.))
templateDifference=0
for templateDirectory (templates/i18n/**/*(FN)); do
# printf ">>> %s\n" ${templateDirectory}
typeset -a templateExtensions
templateExtensions=()
for templateFile (${templateFiles}); do
[[ ${templateFile:h} == ${templateDirectory} ]] || continue
if ! [[ ${templateExtensions[(ie)${templateFile:e}]} -le ${#templateExtensions} ]]; then
templateExtensions+=(${templateFile:e})
fi
done
for ext (${templateExtensions}); do
for lang (${requiredLangs}); do
foundLang=0
for templateFile (${templateDirectory}/*.${ext}); do
[[ ${templateFile:t} =~ "(^|.)${lang}[-.]" ]] || continue
foundLang=1
break
done
if [[ $foundLang -ne 1 ]]; then
templateDifference=1
printf "%s: %s (%s)\n" $templateDirectory $lang $ext
fi
done
done
done
if [[ $msgDifference -ne 0 || $templateDifference -ne 0 ]]; then
exit 1 exit 1
fi fi