function ventoy_replace_slash(str) {\r
var str1 = str.replace(/\\/g, '/');\r
var str2 = str1.replace(/\/\//g, '/');\r
+ \r
+ if (str2 && str2.length > 0) {\r
+ if (str2.substr(-1) === "/") {\r
+ return str2.substr(0, str2.length - 1);\r
+ }\r
+ }\r
+ \r
return str2;\r
}\r
\r
\r
"STR_PATH_TOO_LONG": "The path exceeds the maximum supported length, please check!",\r
"STR_INPUT_TOO_LONG": "The string exceeds the maximum supported length, please check!",\r
- "STR_INVALID_FILE_PATH": "Invalid full file path, please check!",\r
- "STR_INVALID_FILE_PATH1": "The 1st file path is invalid!", \r
- "STR_INVALID_FILE_PATH2": "The 2nd file path is invalid!", \r
- "STR_INVALID_NEW_FILE_PATH": "The full file path of new is invalid, please check!",\r
+ "STR_INVALID_FILE_PATH": "Invalid or nonexist full file path, please check!",\r
+ "STR_INVALID_FILE_PATH1": "The 1st file path is invalid or nonexist!", \r
+ "STR_INVALID_FILE_PATH2": "The 2nd file path is invalid or nonexist!", \r
+ "STR_INVALID_NEW_FILE_PATH": "The full file path of new is invalid or nonexist, please check!",\r
"STR_INVALID_DIR_PATH": "Invalid directory path, please check!",\r
"STR_INVALID_NUMBER": "Please input valid non-negative integer!",\r
"STR_INVALID_AUTOSEL": "autosel exceeds the length of the list!",\r
"STR_SET_TIP_FOR_DIR": "Set Menu Tip For Directory",\r
"STR_SET_INJECTION_FOR_FILE": "[image] Set injection for a file",\r
"STR_SET_INJECTION_FOR_DIR": "[parent] Set the same injection for all the files under a directory.",\r
- "STR_INVALID_ARCHIVE_PATH": "Invalid archive file path, please check!",\r
+ "STR_INVALID_ARCHIVE_PATH": "Invalid or nonexist archive file path, please check!",\r
"STR_SET_PWD_FOR_FILE": "[file] Set password for a file.",\r
"STR_SET_PWD_FOR_DIR": "[parent] Set the same password for all the files under a directory.",\r
"STR_SET_AUTO_INSTALL_FOR_FILE": "[image] Set auto install template for a file",\r
"STR_SECURE_BOOT_ENABLE": "Enable",\r
"STR_SECURE_BOOT_DISABLE": "Disable",\r
"STR_SYNTAX_ERROR_TIP": "Syntax error detected in ventoy.json, so the configuration is not loaded!",\r
+ "STR_INVALID_CONFIG_TIP": "Invalid configuration detected in ventoy.json, so the configuration is not loaded!",\r
+ "STR_CONFIG_SAVE_ERROR_TIP": "Failed to write ventoy.json file. Check VentoyPlugson.log for more details!",\r
\r
"STR_XXX": "xxx"\r
};\r
\r
"STR_PATH_TOO_LONG": "路径超过最大支持长度,请检查!",\r
"STR_INPUT_TOO_LONG": "字符串超过最大支持长度,请检查!",\r
- "STR_INVALID_FILE_PATH": "文件路径不合法,请检查!", \r
- "STR_INVALID_FILE_PATH1": "第1个文件路径不合法,请检查!", \r
- "STR_INVALID_FILE_PATH2": "第2个文件路径不合法,请检查!", \r
- "STR_INVALID_NEW_FILE_PATH": "new 文件路径不合法,请检查!", \r
+ "STR_INVALID_FILE_PATH": "文件路径不合法或不存在,请检查!", \r
+ "STR_INVALID_FILE_PATH1": "第1个文件路径不合法或不存在,请检查!", \r
+ "STR_INVALID_FILE_PATH2": "第2个文件路径不合法或不存在,请检查!", \r
+ "STR_INVALID_NEW_FILE_PATH": "new 文件路径不合法或不存在,请检查!", \r
"STR_INVALID_DIR_PATH": "文件夹路径不合法,请检查!",\r
"STR_INVALID_NUMBER": "请输入合法的非负整数!",\r
"STR_INVALID_AUTOSEL": "autosel 的值超过了列表实际长度!",\r
"STR_SET_TIP_FOR_DIR": "为目录设置菜单提示信息",\r
"STR_SET_INJECTION_FOR_FILE": "[image] 为某一个文件设置注入",\r
"STR_SET_INJECTION_FOR_DIR": "[parent] 为某个目录下的所有文件设置相同的注入",\r
- "STR_INVALID_ARCHIVE_PATH": "Archive 文件路径非法,请检查!",\r
+ "STR_INVALID_ARCHIVE_PATH": "Archive 文件路径非法或不存在,请检查!",\r
"STR_SET_PWD_FOR_FILE": "[file] 为指定文件设置密码",\r
"STR_SET_PWD_FOR_DIR": "[parent] 为某个目录下的所有文件设置相同的密码",\r
"STR_SET_AUTO_INSTALL_FOR_FILE": "[image] 为某个镜像文件设置自动安装脚本",\r
"STR_SECURE_BOOT_ENABLE": "开启",\r
"STR_SECURE_BOOT_DISABLE": "未开启",\r
"STR_SYNTAX_ERROR_TIP": "ventoy.json 文件中存在语法错误,配置未加载!",\r
-\r
+ "STR_INVALID_CONFIG_TIP": "ventoy.json 文件中存在错误配置,配置未加载!",\r
+ "STR_CONFIG_SAVE_ERROR_TIP": "ventoy.json 文件写入失败,详细信息请参考 VentoyPlugson.log 文件!",\r
\r
\r
"STR_XXX": "xxx"\r
utfmaxlen: $.validator.format("The string exceeds the maximum supported length"),\r
start_slash: $.validator.format("Must start with /"),\r
noquotes: $.validator.format("Can not include double quotes"),\r
+ filenamepart:$.validator.format("As part of file name, can not include invalid characters"),\r
printascii: $.validator.format("Can not include non-ascii characters.")\r
});\r
\r
utfmaxlen: $.validator.format("超过最大长度"),\r
start_slash: $.validator.format("必须以反斜杠 / 开头"),\r
noquotes: $.validator.format("不能包含双引号"),\r
+ filenamepart:$.validator.format("作为文件名的一部分,不能包含特殊的符号"),\r
printascii: $.validator.format("不能包含中文或其他非 ascii 字符。")\r
});\r
\r
function VtoySelectType(cb, para) {\r
\r
$('#TypeSelectForm #TypeSelForm_lang_1').text(g_vtoy_cur_language.STR_SELECT);\r
-\r
+ \r
if (g_current_language === 'en') {\r
- $('#SetDirForm #SetDirForm_lang_2').text(" OK");\r
- $('#SetDirForm #SetDirForm_lang_3').text("Cancel");\r
+ $('#TypeSelectForm #TypeSelForm_lang_2').text(" OK");\r
+ $('#TypeSelectForm #TypeSelForm_lang_3').text("Cancel");\r
} else {\r
- $('#SetDirForm #SetDirForm_lang_2').text("确定");\r
- $('#SetDirForm #SetDirForm_lang_3').text("取消");\r
+ $('#TypeSelectForm #TypeSelForm_lang_2').text("确定");\r
+ $('#TypeSelectForm #TypeSelForm_lang_3').text("取消");\r
}\r
\r
var $tbl = $("#id_type_select_table tbody");\r
},\r
SetKeyValue : {\r
required: true,\r
- utfmaxlen: true \r
+ utfmaxlen: true,\r
+ filenamepart: true \r
}\r
},\r
\r
$('#SetKeyForm #SetKeyForm_lang_3').text(para.title2);\r
\r
if (g_current_language === 'en') {\r
- $('#SetDirForm #SetDirForm_lang_4').text(" OK");\r
- $('#SetDirForm #SetDirForm_lang_5').text("Cancel");\r
+ $('#SetKeyForm #SetKeyForm_lang_4').text(" OK");\r
+ $('#SetKeyForm #SetKeyForm_lang_5').text("Cancel");\r
} else {\r
- $('#SetDirForm #SetDirForm_lang_4').text("确定");\r
- $('#SetDirForm #SetDirForm_lang_5').text("取消");\r
+ $('#SetKeyForm #SetKeyForm_lang_4').text("确定");\r
+ $('#SetKeyForm #SetKeyForm_lang_5').text("取消");\r
}\r
\r
g_set_key_callback = cb;\r
$('#SetDirFileModal #SetDirFileForm_label2').text(para.label2);\r
\r
if (g_current_language === 'en') {\r
- $('#SetDirFileModal #SetDirFileModal_ok').text(" OK");\r
- $('#SetDirFileModal #SetDirFileModal_cancel').text("Cancel");\r
+ $('#SetDirFileModal #SetDirFileForm_ok').text(" OK");\r
+ $('#SetDirFileModal #SetDirFileForm_cancel').text("Cancel");\r
\r
$('#SetDirFileModal #id_note_dirfile_cn').hide();\r
$('#SetDirFileModal #id_note_dirfile_en').show();\r
\r
} else {\r
- $('#SetDirFileModal #SetDirFileModal_ok').text("确定");\r
- $('#SetDirFileModal #SetDirFileModal_cancel').text("取消");\r
+ $('#SetDirFileModal #SetDirFileForm_ok').text("确定");\r
+ $('#SetDirFileModal #SetDirFileForm_cancel').text("取消");\r
\r
$('#SetDirFileModal #id_note_dirfile_en').hide();\r
$('#SetDirFileModal #id_note_dirfile_cn').show();\r