Android app for Mumble voice conference system https://mumla-app.gitlab.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

79 lines
2.1 KiB

#!/bin/bash
set -eu
cd "${0%/*}"
langdirs=(app/src/main/res/values-?? app/src/main/res/values-??-r?? app/src/main/res/values-???)
readarray -td '' langdirs < <(printf '%s\0' "${langdirs[@]}" | sort -z)
count_strings() {
code=$1
[[ -n "$code" ]] && code="-$code"
files=()
for f in "app/src/main/res/values$code/"{strings,preference}.xml "libraries/humla/src/main/res/values$code/strings.xml"; do
if [[ -e "$f" ]]; then
files+=("$f")
fi
done
grep -h -c "</string>" "${files[@]}" | awk '{s+=$1} END {print s}'
}
en=$(count_strings "")
declare -a langs
declare -a excluded
for lang in "${langdirs[@]}"; do
lang=${lang##*/}
lang=${lang#values-}
percent=$(( $(count_strings "$lang") * 100 / en ))
if (( percent < 40 )); then
excluded+=("$lang($percent%)")
elif (( percent < 99 )); then
langs+=("$lang($percent%)")
else
langs+=("$lang")
fi
done
langs+=("en-US")
printf "Included languages: %s\n" "${langs[*]}"
printf "Excluded languages: %s\n" "${excluded[*]}"
IFS=$'\n' langssorted=($(sort <<<"${langs[*]}")); unset IFS
localf=app/src/main/res/xml/local_config.xml
cat >"$localf" <<-EOF
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
EOF
for lang in "${langssorted[@]}"; do
lang="${lang%%(*}"
# Must not have an "r" there for the locales we support
lang="${lang//-r/-}"
printf >>"$localf" ' <locale android:name="%s" />\n' "$lang"
done
printf >>"$localf" "</locale-config>\n"
printf "Wrote %s\n" "$localf"
langf=app/src/main/res/values/language_notranslate.xml
cat >"$langf" <<-EOF
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="languageValues">
EOF
for lang in "${langssorted[@]}"; do
lang="${lang%%(*}"
# Must not have an "r" there for the preference display
lang="${lang//-r/-}"
if [[ "$lang" = "en-US" ]]; then
lang="en"
fi
printf >>"$langf" ' <item>%s</item>\n' "$lang"
done
cat >>"$langf" <<-EOF
</string-array>
</resources>
EOF
printf "Wrote %s\n" "$langf"
printf "Running git diff %s %s\n" "$localf" "$langf"
git diff "$localf" "$langf"