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:
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user