mirror of https://github.com/quite/mumla.git
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
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"
|