From 50442a02d137c66e47b87faeb81762940b770217 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 28 Feb 2020 08:52:46 +0100 Subject: [PATCH] chore: improve missing-translations.sh --- missing-translations.sh | 69 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 8 deletions(-) diff --git a/missing-translations.sh b/missing-translations.sh index 080a38620..1dc0db869 100755 --- a/missing-translations.sh +++ b/missing-translations.sh @@ -2,6 +2,10 @@ set -e +typeset -a requiredLangs +requiredLangs=(de en) + + function translations() { msgFile=$1 @@ -10,7 +14,7 @@ function translations() { } typeset -a msgFiles -msgFiles=(messages/**/*.msg) +msgFiles=(messages/**/*.msg(.N)) typeset -a msgDirectories msgDirectories=() @@ -20,7 +24,7 @@ for msgFile (${msgFiles}); do fi done -difference=0 +msgDifference=0 for msgDirectory (${msgDirectories}); do typeset -a dirMsgFiles @@ -30,7 +34,21 @@ for msgDirectory (${msgDirectories}); do dirMsgFiles+=(${msgFile}) fi 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="" function cleanup() { @@ -45,14 +63,49 @@ for msgDirectory (${msgDirectories}); do for msgFile (${dirMsgFiles}); do translations ${msgFile} > ${diffDir}/${msgFile:t} - diffArgs+=(${diffDir}/${msgFile:t}) + diffArgs+=(-L ${msgFile} ${diffDir}/${msgFile:t}) done - printf ">>> %s\n" ${msgDirectory} - diff --suppress-common-lines -wB ${diffArgs} - ) || difference=1 + # printf ">>> %s\n" ${msgDirectory} + diff -u0 --suppress-common-lines -wB ${diffArgs} | grep -vE '^@@.*@@' + ) || msgDifference=1 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 fi