Skip to content

Commit 06567fc

Browse files
authored
lang.sh:优化识别方案
1 parent f040336 commit 06567fc

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

lang/lang.sh

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,37 @@
11
#!/system/bin/sh
22

3-
LANGUAGE=$(getprop persist.sys.locale | tr '-' '_')
3+
LANG_DIR="$MODPATH/lang"
4+
SYSTEM_LOCALE=$(getprop persist.sys.locale | tr '-' '_')
5+
[ -z "$SYSTEM_LOCALE" ] && SYSTEM_LOCALE="zh_CN"
46

5-
. "$MODPATH/lang/lang_${LANGUAGE}.sh" \
6-
|| . "$MODPATH/lang/lang_en_US.sh"
7+
try_source() {
8+
[ -f "$1" ] && . "$1" && return 0
9+
return 1
10+
}
11+
12+
LANGUAGE_LOADED=0
13+
14+
LANG_CODE=$(echo "$SYSTEM_LOCALE" | cut -d_ -f1 | tr 'A-Z' 'a-z')
15+
LOCALE_SUFFIX=$(echo "$SYSTEM_LOCALE" | cut -s -d_ -f2-)
16+
17+
if [ -n "$LOCALE_SUFFIX" ]; then
18+
try_source "$LANG_DIR/lang_${LANG_CODE}_$(echo $LOCALE_SUFFIX | tr 'a-z' 'A-Z').sh" && LANGUAGE_LOADED=1
19+
fi
20+
21+
if [ "$LANGUAGE_LOADED" -eq 0 ] && [ "$LANG_CODE" = "zh" ] && [ -n "$LOCALE_SUFFIX" ]; then
22+
SCRIPT_TYPE=$(echo "$LOCALE_SUFFIX" | cut -d_ -f1)
23+
REGION_CODE=$(echo "$LOCALE_SUFFIX" | cut -s -d_ -f2)
24+
if [ "$SCRIPT_TYPE" = "Hans" ] || [ "$SCRIPT_TYPE" = "Hant" ]; then
25+
[ -n "$REGION_CODE" ] && try_source "$LANG_DIR/lang_${LANG_CODE}_${REGION_CODE}.sh" && LANGUAGE_LOADED=1
26+
fi
27+
fi
28+
29+
if [ "$LANGUAGE_LOADED" -eq 0 ]; then
30+
EXISTING_FILE=$(ls "$LANG_DIR"/lang_"$LANG_CODE"_*.sh 2>/dev/null | head -n1)
31+
[ -n "$EXISTING_FILE" ] && try_source "$EXISTING_FILE" && LANGUAGE_LOADED=1
32+
fi
33+
34+
[ "$LANGUAGE_LOADED" -eq 0 ] && . "$LANG_DIR/lang_zh_CN.sh"
735

836
msg() {
937
eval "echo \"\${$1}\""

0 commit comments

Comments
 (0)