- 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
68 lines
2.0 KiB
Bash
68 lines
2.0 KiB
Bash
# 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"
|
|
} |