eden/tools/stale-translations.sh
lizzie df653d6ca4
[android, tools] remove unused XML strings; add script to find unused XML strings (#2777)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2777
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-10-19 04:57:47 +02:00

34 lines
No EOL
1.2 KiB
Bash
Executable file

#!/bin/sh -e
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
ANDROID=src/android/app/src/main
STRINGS=$ANDROID/res/values/strings.xml
TMP_DIR=$(mktemp -d)
SRC="$TMP_DIR"/src
LOCALES="$TMP_DIR"/locales
TRANSLATED="$TMP_DIR"/translated
COMBINED="$TMP_DIR"/combined
# We start out by getting the list of source strings so we can compare all locale strings to this
grep -e "string name" $STRINGS | grep -v 'translatable="false"' | cut -d'"' -f2 > "$SRC"
# ... then we determine what locales to check
find $ANDROID/res/values-* -name 'strings.xml' > "$LOCALES"
while IFS= read -r locale; do
echo "Locale $(echo "$locale" | cut -d"-" -f2- | cut -d"/" -f1)"
grep -e "string name" "$locale" | cut -d'"' -f2 > "$TRANSLATED"
cat "$TRANSLATED" "$SRC" | sort | uniq -u > "$COMBINED"
# This will also include strings that are present in the source but NOT translated, so we filter those out now:
while IFS= read -r unused; do
{ grep -e "string name=\"$unused\"" "$STRINGS" >/dev/null; } || \
{ echo "-- Removing unused translation $unused" && sed "/string name=\"$unused\"/d" "$locale" > "$locale.new" && mv "$locale.new" "$locale"; }
done < "$COMBINED"
echo "-- done"
done < "$LOCALES"