refactor: replace numeric translation keys with named keys

- Extract shared i18n.sh library with tr() function (replaces 5 duplicated text_lang functions)
- Replace numeric IDs (001, 002, ...) with human-readable keys (already_started, delete, etc.)
- Update all language files (en_US, en_GB, de_DE) to use named key format
- Update all scripts (jdautoenc, rename, addrename, removerename, config) to use tr() from i18n.sh
This commit is contained in:
2026-08-12 05:57:20 +02:00
parent a862b7be7c
commit 4b2e40c59f
21 changed files with 1915 additions and 2193 deletions
+68
View File
@@ -0,0 +1,68 @@
# Shared i18n library for JDownloader-Autoenc-rename
# Source this file from your scripts, then use tr("key") to get translations.
# Determine script name (jdautoenc, rename, addrename, removerename, config)
SCRIPT_NAME=$(basename "${BASH_SOURCE[1]}" .sh 2>/dev/null)
if [[ -z "$SCRIPT_NAME" ]]; then
SCRIPT_NAME=$(basename "$0" .sh 2>/dev/null)
fi
# Find language folder
if [[ -n "$language_folder" ]]; then
: # already set
elif [[ -n "$JDAutoConfig" && -f "$JDAutoConfig" ]]; then
language_folder=$(grep "language_folder=" "$JDAutoConfig" 2>/dev/null | sed 's/.*=//g')
fi
# Determine language
if [[ -z "$language" ]]; then
if [[ -n "$JDAutoConfig" && -f "$JDAutoConfig" && -n "$(grep "language=" "$JDAutoConfig" 2>/dev/null | sed 's/.*=//g')" ]]; then
language=$(grep "language=" "$JDAutoConfig" | sed 's/.*=//g')
else
language=$(locale 2>/dev/null | head -n 1 | sed 's/.*=\|\..*//g')
fi
fi
if [[ "$language" == "C" ]] || [[ ! -d "$language_folder/$language" ]]; then
language=en_US
fi
# The lang file for the current script
LANG_FILE="$language_folder/$language/${SCRIPT_NAME}.lang"
FALLBACK_LANG_FILE="$language_folder/en_US/${SCRIPT_NAME}.lang"
tr() {
local key="$1"
# Try local lang file
if [[ -f "$LANG_FILE" ]]; then
local result
result=$(grep "^${key} " "$LANG_FILE" 2>/dev/null | head -n 1 | sed "s/^${key} //")
if [[ -n "$result" ]]; then
echo "$result"
return
fi
fi
# Try fallback (en_US)
if [[ -f "$FALLBACK_LANG_FILE" ]]; then
local result
result=$(grep "^${key} " "$FALLBACK_LANG_FILE" 2>/dev/null | head -n 1 | sed "s/^${key} //")
if [[ -n "$result" ]]; then
echo "$result"
return
fi
fi
# Try remote fallback
local remote_url="https://raw.githubusercontent.com/Pakobbix/JDownloader-Autoenc-rename/main/lang/en_US/${SCRIPT_NAME}.lang"
local result
result=$(curl -s "$remote_url" 2>/dev/null | grep "^${key} " | head -n 1 | sed "s/^${key} //")
if [[ -n "$result" ]]; then
echo "$result"
return
fi
# Return the key itself as last resort
echo "$key"
}