feat(i18n): localize uninstall and subconverter menus

This commit is contained in:
juewuy
2026-03-11 17:56:55 +08:00
parent ed635b871a
commit c5da0da08a
6 changed files with 154 additions and 58 deletions

View File

@@ -0,0 +1,33 @@
SUBCONVERTER_MENU_GEN="生成包含全部节点、订阅的配置文件"
SUBCONVERTER_MENU_EXCLUDE="设置\033[31m排除节点正则\033[0m"
SUBCONVERTER_MENU_INCLUDE="设置\033[32m包含节点正则\033[0m"
SUBCONVERTER_MENU_RULE="选择\033[33m在线规则模版\033[0m"
SUBCONVERTER_MENU_SERVER="选择Subconverter服务器"
SUBCONVERTER_MENU_UA="自定义浏览器UA"
SUBCONVERTER_INPUT="请输入"
SUBCONVERTER_BACK="或输入 0 返回上级菜单"
SUBCONVERTER_EXCLUDE_HINT1="匹配关键字的节点会在导入时被【屏蔽】!"
SUBCONVERTER_INCLUDE_HINT1="仅有匹配关键字的节点才会被【导入】!!!"
SUBCONVERTER_KEYWORD_SPLIT="多个关键字可以用\033[30;47m | \033[0m号分隔"
SUBCONVERTER_REGEX_HINT="\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
SUBCONVERTER_EXCLUDE_INPUT="请直接输入节点过滤关键字"
SUBCONVERTER_INCLUDE_INPUT="请直接输入节点匹配关键字"
SUBCONVERTER_EXCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点过滤关键字"
SUBCONVERTER_INCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点匹配关键字"
SUBCONVERTER_RULE_CURRENT="当前使用规则为:"
SUBCONVERTER_SERVER_HINT="以下为互联网采集的第三方服务器,具体安全性请自行斟酌!"
SUBCONVERTER_SERVER_THANKS="感谢以下作者的无私奉献!!!"
SUBCONVERTER_SERVER_CURRENT="当前使用后端为:"
SUBCONVERTER_SET_OK="设置成功!返回上级菜单"
SUBCONVERTER_UA_HINT="无法正确获取配置文件时可尝试使用"
SUBCONVERTER_UA_CURRENT="当前UA"
SUBCONVERTER_UA_AUTO="使用自动UA默认"
SUBCONVERTER_UA_NONE="不使用UA"
SUBCONVERTER_UA_CUSTOM="使用自定义UA"
SUBCONVERTER_UA_CLEAR="清空UA"
SUBCONVERTER_UA_CUSTOM_WARN="注意:\n自定义UA不可包含空格或特殊符号"
SUBCONVERTER_UA_CUSTOM_INPUT="请直接输入自定义UA"

View File

@@ -0,0 +1,13 @@
UNINSTALL_WARN="警告:该操作不可逆!"
UNINSTALL_CONFIRM="是否确认卸载ShellCrash"
UNINSTALL_YES="是"
UNINSTALL_NO="否"
UNINSTALL_KEEP_CONFIRM="是否保留脚本配置及订阅文件?"
UNINSTALL_ENV_ERROR="环境变量配置有误,请尝试手动移除安装目录!"
UNINSTALL_DONE="已卸载ShellCrash相关文件有缘再会"
UNINSTALL_CLOSE_HINT="请手动关闭当前窗口以重置环境变量!"
UNINSTALL_CANCELED="操作已取消!"
UNINSTALL_CRON_CLASH="clash服务"
UNINSTALL_CRON_SUB="订阅链接"
UNINSTALL_CRON_INIT="ShellCrash初始化"
UNINSTALL_SSH_MARK="启用外网访问SSH服务"

View File

@@ -0,0 +1,33 @@
SUBCONVERTER_MENU_GEN="Generate config including all nodes and subscriptions"
SUBCONVERTER_MENU_EXCLUDE="Set \033[31mexclude node regex\033[0m"
SUBCONVERTER_MENU_INCLUDE="Set \033[32minclude node regex\033[0m"
SUBCONVERTER_MENU_RULE="Select \033[33monline rule template\033[0m"
SUBCONVERTER_MENU_SERVER="Select Subconverter server"
SUBCONVERTER_MENU_UA="Custom browser UA"
SUBCONVERTER_INPUT="Please enter"
SUBCONVERTER_BACK="or enter 0 to return"
SUBCONVERTER_EXCLUDE_HINT1="Nodes matching keywords will be blocked during import!"
SUBCONVERTER_INCLUDE_HINT1="Only nodes matching keywords will be imported!!!"
SUBCONVERTER_KEYWORD_SPLIT="Use \033[30;47m | \033[0m to separate multiple keywords"
SUBCONVERTER_REGEX_HINT="\033[32mRegex is supported\033[0m. Use \033[30;47m + \033[0m instead of spaces"
SUBCONVERTER_EXCLUDE_INPUT="Enter exclude keyword(s) directly"
SUBCONVERTER_INCLUDE_INPUT="Enter include keyword(s) directly"
SUBCONVERTER_EXCLUDE_CLEAR="or enter d to \033[31mclear\033[0m exclude keywords"
SUBCONVERTER_INCLUDE_CLEAR="or enter d to \033[31mclear\033[0m include keywords"
SUBCONVERTER_RULE_CURRENT="Current rule: "
SUBCONVERTER_SERVER_HINT="The following third-party servers are collected from the internet. Please evaluate their security by yourself!"
SUBCONVERTER_SERVER_THANKS="Thanks to the contributors below for their great work!!!"
SUBCONVERTER_SERVER_CURRENT="Current backend: "
SUBCONVERTER_SET_OK="Settings saved. Returning to previous menu"
SUBCONVERTER_UA_HINT="Try this if the config file cannot be fetched correctly"
SUBCONVERTER_UA_CURRENT="Current UA: "
SUBCONVERTER_UA_AUTO="Use auto UA (default)"
SUBCONVERTER_UA_NONE="Do not use UA"
SUBCONVERTER_UA_CUSTOM="Use custom UA"
SUBCONVERTER_UA_CLEAR="Clear UA"
SUBCONVERTER_UA_CUSTOM_WARN="Note:\nCustom UA cannot contain spaces or special symbols!"
SUBCONVERTER_UA_CUSTOM_INPUT="Enter custom UA"

View File

@@ -0,0 +1,13 @@
UNINSTALL_WARN="Warning: this action is irreversible!"
UNINSTALL_CONFIRM="Are you sure you want to uninstall ShellCrash?"
UNINSTALL_YES="Yes"
UNINSTALL_NO="No"
UNINSTALL_KEEP_CONFIRM="Keep script configs and subscription files?"
UNINSTALL_ENV_ERROR="Environment variable configuration is incorrect. Please remove the installation directory manually!"
UNINSTALL_DONE="ShellCrash related files have been removed. Goodbye!"
UNINSTALL_CLOSE_HINT="Please close the current terminal window manually to reset environment variables!"
UNINSTALL_CANCELED="Operation canceled!"
UNINSTALL_CRON_CLASH="clash service"
UNINSTALL_CRON_SUB="subscription link"
UNINSTALL_CRON_INIT="ShellCrash initialization"
UNINSTALL_SSH_MARK="Enable SSH access from WAN"

View File

@@ -7,18 +7,20 @@ __IS_MODULE_SUBCONVERTER=1
[ -z "$rule_link" ] && rule_link=1
[ -z "$server_link" ] && server_link=1
load_lang subconverter
# Subconverter在线订阅转换
subconverter() {
while true; do
comp_box "1) \033[32m生成\033[0m包含全部节点、订阅的配置文件"\
"2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m"\
"3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m"\
"4) 选择\033[33m在线规则模版\033[0m"\
"5) 选择\033[0mSubconverter服务器\033[0m"\
"6) 自定义浏览器UA \033[32m$user_agent\033[0m"\
comp_box "1) \033[32m$SUBCONVERTER_MENU_GEN\033[0m"\
"2) $SUBCONVERTER_MENU_EXCLUDE \033[47;30m$exclude\033[0m"\
"3) $SUBCONVERTER_MENU_INCLUDE \033[47;30m$include\033[0m"\
"4) $SUBCONVERTER_MENU_RULE"\
"5) $SUBCONVERTER_MENU_SERVER"\
"6) $SUBCONVERTER_MENU_UA \033[32m$user_agent\033[0m"\
""\
"0) $COMMON_BACK"
read -r -p "请输入对应数字> " num
read -r -p "$COMMON_INPUT> " num
case "$num" in
"" | 0)
break
@@ -57,13 +59,13 @@ subconverter() {
# 排除节点正则
gen_link_flt() {
comp_box "\033[33m匹配关键字的节点会在导入时被【屏蔽】!\033[0m" \
"多个关键字可以用\033[30;47m | \033[0m号分隔" \
"\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
btm_box "\033[36m请直接输入节点过滤关键字\033[0m" \
"或输入 d \033[31m清空\033[0m节点过滤关键字" \
"或输入 0 返回上级菜单"
read -r -p "请输入> " res
comp_box "\033[33m$SUBCONVERTER_EXCLUDE_HINT1\033[0m" \
"$SUBCONVERTER_KEYWORD_SPLIT" \
"$SUBCONVERTER_REGEX_HINT"
btm_box "\033[36m$SUBCONVERTER_EXCLUDE_INPUT\033[0m" \
"$SUBCONVERTER_EXCLUDE_CLEAR" \
"$SUBCONVERTER_BACK"
read -r -p "$SUBCONVERTER_INPUT> " res
case "$res" in
0)
return 0
@@ -85,13 +87,13 @@ gen_link_flt() {
# 包含节点正则
gen_link_ele() {
comp_box "\033[33m仅有匹配关键字的节点才会被【导入】!!!\033[0m" \
"多个关键字可以用\033[30;47m | \033[0m号分隔" \
"\033[32m支持正则表达式\033[0m空格请使用\033[30;47m + \033[0m号替代"
btm_box "\033[36m请直接输入节点匹配关键字\033[0m" \
"或输入 d \033[31m清空\033[0m节点匹配关键字" \
"或输入 0 返回上级菜单"
read -r -p "请输入> " res
comp_box "\033[33m$SUBCONVERTER_INCLUDE_HINT1\033[0m" \
"$SUBCONVERTER_KEYWORD_SPLIT" \
"$SUBCONVERTER_REGEX_HINT"
btm_box "\033[36m$SUBCONVERTER_INCLUDE_INPUT\033[0m" \
"$SUBCONVERTER_INCLUDE_CLEAR" \
"$SUBCONVERTER_BACK"
read -r -p "$SUBCONVERTER_INPUT> " res
case "$res" in
0)
return 0
@@ -115,11 +117,11 @@ gen_link_ele() {
gen_link_config() {
list=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | awk '{print $2$4}')
now=$(grep -aE '^5' "$CRASHDIR"/configs/servers.list | sed -n ""$rule_link"p" | awk '{print $2}')
comp_box "当前使用规则为:\033[33m$now\033[0m"
comp_box "$SUBCONVERTER_RULE_CURRENT\033[33m$now\033[0m"
list_box "$list"
content_line ""
common_back
read -r -p "请输入对应数字> " num
read -r -p "$COMMON_INPUT> " num
totalnum=$(grep -acE '^5' "$CRASHDIR"/configs/servers.list)
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
errornum
@@ -129,7 +131,7 @@ gen_link_config() {
# 将对应标记值写入配置
rule_link=$num
if setconfig rule_link "$rule_link"; then
msg_alert "\033[32m设置成功!返回上级菜单\033[0m"
msg_alert "\033[32m$SUBCONVERTER_SET_OK\033[0m"
else
common_failed
fi
@@ -141,14 +143,14 @@ gen_link_server() {
list=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | awk '{print $3" "$2}')
now=$(grep -aE '^3|^4' "$CRASHDIR"/configs/servers.list | sed -n ""$server_link"p" | awk '{print $3}')
comp_box "\033[36m以下为互联网采集的第三方服务器,具体安全性请自行斟酌!\033[0m" \
"\033[32m感谢以下作者的无私奉献!!!\033[0m" \
comp_box "\033[36m$SUBCONVERTER_SERVER_HINT\033[0m" \
"\033[32m$SUBCONVERTER_SERVER_THANKS\033[0m" \
"" \
"当前使用后端为:\033[33m$now\033[0m"
"$SUBCONVERTER_SERVER_CURRENT\033[33m$now\033[0m"
list_box "$list"
content_line ""
common_back
read -r -p "请输入对应数字> " num
read -r -p "$COMMON_INPUT> " num
totalnum=$(grep -acE '^3|^4' "$CRASHDIR"/configs/servers.list)
if [ -z "$num" ] || [ "$num" -gt "$totalnum" ]; then
errornum
@@ -158,7 +160,7 @@ gen_link_server() {
# 将对应标记值写入配置
server_link=$num
if setconfig server_link "$server_link"; then
content_line "\033[32m设置成功!返回上级菜单\033[0m"
content_line "\033[32m$SUBCONVERTER_SET_OK\033[0m"
else
common_failed
fi
@@ -167,16 +169,16 @@ gen_link_server() {
set_sub_ua() {
while true; do
comp_box "\033[36m无法正确获取配置文件时可尝试使用\033[0m" \
comp_box "\033[36m$SUBCONVERTER_UA_HINT\033[0m" \
"" \
"当前UA$user_agent"
btm_box "1) 使用自动UA默认"\
"2) 不使用UA"\
"3) 使用自定义UA"\
"4) 清空UA"\
"$SUBCONVERTER_UA_CURRENT$user_agent"
btm_box "1) $SUBCONVERTER_UA_AUTO"\
"2) $SUBCONVERTER_UA_NONE"\
"3) $SUBCONVERTER_UA_CUSTOM"\
"4) $SUBCONVERTER_UA_CLEAR"\
""\
"0) 返回上级菜单"
read -r -p "请输入对应数字> " num
"0) $COMMON_BACK"
read -r -p "$COMMON_INPUT> " num
case "$num" in
0)
break
@@ -188,10 +190,10 @@ set_sub_ua() {
user_agent='none'
;;
3)
comp_box "\033[33m注意:\n自定义UA不可包含空格或特殊符号\033[0m"
btm_box "\033[36m请直接输入自定义UA\033[0m" \
"或输入 0 返回上级菜单"
read -r -p "请输入> " text
comp_box "\033[33m$SUBCONVERTER_UA_CUSTOM_WARN\033[0m"
btm_box "\033[36m$SUBCONVERTER_UA_CUSTOM_INPUT\033[0m" \
"$SUBCONVERTER_BACK"
read -r -p "$SUBCONVERTER_INPUT> " text
if [ "$text" = 0 ]; then
continue
elif [ -n "$text" ]; then

View File

@@ -1,26 +1,28 @@
#!/bin/sh
# Copyright (C) Juewuy
load_lang uninstall
# 卸载
uninstall() {
comp_box "\033[31m警告:该操作不可逆!\033[0m" \
"是否确认卸载ShellCrash"
btm_box "1) " \
"0) "
comp_box "\033[31m$UNINSTALL_WARN\033[0m" \
"$UNINSTALL_CONFIRM"
btm_box "1) $UNINSTALL_YES" \
"0) $UNINSTALL_NO"
read -r -p "$COMMON_INPUT> " res
if [ "$res" = '1' ]; then
# 停止服务
"$CRASHDIR"/start.sh stop 2>/dev/null
"$CRASHDIR"/start.sh cronset "clash服务" 2>/dev/null
"$CRASHDIR"/start.sh cronset "订阅链接" 2>/dev/null
"$CRASHDIR"/start.sh cronset "ShellCrash初始化" 2>/dev/null
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_CLASH" 2>/dev/null
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_SUB" 2>/dev/null
"$CRASHDIR"/start.sh cronset "$UNINSTALL_CRON_INIT" 2>/dev/null
"$CRASHDIR"/start.sh cronset "task.sh" 2>/dev/null
# 移除安装目录
if [ -n "$CRASHDIR" ] && [ "$CRASHDIR" != '/' ]; then
comp_box "是否保留脚本配置及订阅文件?"
btm_box "1) " \
"0) "
comp_box "$UNINSTALL_KEEP_CONFIRM"
btm_box "1) $UNINSTALL_YES" \
"0) $UNINSTALL_NO"
read -r -p "$COMMON_INPUT> " res
if [ "$res" = '1' ]; then
mv -f "$CRASHDIR"/configs /tmp/ShellCrash/configs_bak
@@ -34,7 +36,7 @@ uninstall() {
rm -rf "$CRASHDIR"
fi
else
msg_alert "\033[31m环境变量配置有误,请尝试手动移除安装目录!\033[0m"
msg_alert "\033[31m$UNINSTALL_ENV_ERROR\033[0m"
fi
# 移除其他内容
@@ -48,9 +50,9 @@ uninstall() {
}
sed -i '/all_proxy/'d /etc/profile 2>/dev/null
sed -i '/ALL_PROXY/'d /etc/profile 2>/dev/null
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user 2>/dev/null
sed -i '/ShellCrash初始化/'d /etc/storage/started_script.sh 2>/dev/null
sed -i '/ShellCrash初始化/'d /jffs/.asusrouter 2>/dev/null
sed -i "/$UNINSTALL_SSH_MARK/d" /etc/firewall.user 2>/dev/null
sed -i "/$UNINSTALL_CRON_INIT/d" /etc/storage/started_script.sh 2>/dev/null
sed -i "/$UNINSTALL_CRON_INIT/d" /jffs/.asusrouter 2>/dev/null
[ "$BINDIR" != "$CRASHDIR" ] && rm -rf "$BINDIR"
rm -rf /etc/init.d/shellcrash
rm -rf /etc/systemd/system/shellcrash.service
@@ -62,12 +64,12 @@ uninstall() {
userdel -r shellcrash 2>/dev/null
nvram set script_usbmount="" 2>/dev/null
nvram commit 2>/dev/null
comp_box "\033[36m已卸载ShellCrash相关文件有缘再会\033[0m" \
"\033[33m请手动关闭当前窗口以重置环境变量!\033[0m"
comp_box "\033[36m$UNINSTALL_DONE\033[0m" \
"\033[33m$UNINSTALL_CLOSE_HINT\033[0m"
line_break
sleep 1
exit 0
else
msg_alert "\033[31m操作已取消!\033[0m"
msg_alert "\033[31m$UNINSTALL_CANCELED\033[0m"
fi
}