Compare commits

...

32 Commits

Author SHA1 Message Date
longpanda
e85c02756b 1.0.83 release 2022-12-04 13:15:18 +08:00
wiz64
c1d68bd787 Add Russian Tranlsation (json/txt) grub menu (#2022) 2022-12-04 11:18:33 +08:00
wiz64
a35a822723 add Bengali (bn_BN.json/txt) (#2019) 2022-12-04 09:22:26 +08:00
Tayfun Akkoyun
05137c83e2 Update tr_TR.txt (#2020)
tr_TR.txt Help file is updated.
2022-12-04 09:21:58 +08:00
VenusGirl❤
8058856182 Update ko_KR.json (#2021) 2022-12-04 09:21:36 +08:00
longpanda
33b958e112 Update language json files 2022-12-03 21:37:09 +08:00
Tayfun Akkoyun
9eb50a85e4 Update tr_TR.json (#2018)
Master hi!
I translated lines again. Can you UPDATE this file again?
2022-12-03 20:17:13 +08:00
Steve
3cc7e3772e german translation (grub and related help) (#2016)
* updated german translation

translated the new strings

* german translation updated

* fixed STR_INSTALL_YES_TIP2

* german translation

* fix for F6

* german translation
2022-12-03 20:16:31 +08:00
longpanda
9c8292867f Update menu langauge json file 2022-12-03 17:53:42 +08:00
wiz64
a4053d2d05 add grub/menu hi.json (hindi) (#2014)
* add grub/menu hi.json (hindi)

* Update hi.json

* Update hotkey and rename

* Update and rename hi_HI.json to hi.json

* Rename hi.json to hi_HI.json

* Update hi_HI.json

* add grub/help/hi_HI.txt (hindi)
2022-12-03 17:45:47 +08:00
longpanda
5c14ea0a4a Add some menu language xx.json template. (copy from English) 2022-12-03 16:51:03 +08:00
longpanda
194e948cb6 Remove VTOY_HELP_TXT_LANGUAGE option from Global Control Plugin. 2022-12-03 14:33:52 +08:00
K.B.Dharun Krishna
c896c03efe language.json: Update Tamil translation (#2009) 2022-12-03 13:52:47 +08:00
wiz64
574b4d850c Update French [languages.json] (#2015) 2022-12-03 13:52:23 +08:00
wiz64
68a98325e6 Update German [languages.json] (#2006) 2022-12-03 13:52:08 +08:00
longpanda
25b055bb0f Hotkey change:
1. Change F1 from Memdisk to help
2. Add d/Ctrl+d for Memdisk
3. Add L for Language selection

So update the help txt files and menu json files at the same time.
2022-12-03 13:44:46 +08:00
longpanda
bda74cd89b VentoyPlugson supports multi-language menu option. 2022-12-02 20:46:57 +08:00
longpanda
511b8091eb Add muli-languages support for Ventoy menu.
F5 ---> Menu Language Select
Language files are in INSTALL/grub/menu/ directory.
2022-12-02 20:35:59 +08:00
VenusGirl❤
3be4aacd78 Update languages.json (#2003) 2022-12-02 20:26:34 +08:00
wiz64
2d8b27b172 Update Hindi & Bengali languages (#2002) 2022-12-02 20:26:21 +08:00
wiz64
c174410d35 Update Romanian Translation (#2001)
Co-authored-by: cezarlacatus 42448787+cezarlacatus@users.noreply.github.com
2022-12-02 20:26:06 +08:00
wiz64
f83e84f868 Fixed syntax errors for recent PRs (#1999) 2022-12-02 20:25:50 +08:00
dmitrygribenchuk
a39078b87a add belarussian and update ukranian and russian (#1998) 2022-12-02 11:42:59 +08:00
Tayfun Akkoyun
2576235f97 Turkish update_language.json (#1996)
New Turkish translate rows are completed
2022-12-02 11:42:31 +08:00
longpanda
ee04af5243 Ventoy2Disk update:
1. Add UDF filesytem option.
2. Add Cluster Size option.
3. Support FAT32 for disk bigger than 32GB.
4. Fix the format fail issue.
5. Add a tip bubble with cluster size when mouse hover on the file system type string.
6. The secure boot lock character can not show in early Windows, change it to a yellow icon.
2022-11-30 21:12:43 +08:00
Ida Bagus
118bedd546 Indonesian translation update (#1978)
translating STR_PART_VENTOY_FS row & little change
2022-11-30 20:54:37 +08:00
longpanda
44ff3dd8d4 VentoyPlugson: Fix the garbled preview json for unicode characters. 2022-11-23 14:27:58 +08:00
wiz64
9da5a6ce65 Update Romanian Translation (languages.json) (#1968)
* Updated Romanian (languages.json)

Co-authored-by: cezarlacatus <42448787+cezarlacatus@users.noreply.github.com>

* Updated Romanian (languages.json)

Co-authored-by: cezarlacatus <42448787+cezarlacatus@users.noreply.github.com>

Co-authored-by: cezarlacatus <42448787+cezarlacatus@users.noreply.github.com>
2022-11-19 19:17:38 +08:00
marcellogianola
604b25ec82 Update languages.json (#1965) 2022-11-19 19:17:14 +08:00
Vasilis
0918355035 Update languages.json (#1963)
Updated Greek translation
2022-11-18 15:28:32 +08:00
wiz64
ce76fd5649 Update German, French (#1962)
Co-authored-by: galaxy2211 <56916688+galaxy2211@users.noreply.github.com>

Co-authored-by: galaxy2211 <56916688+galaxy2211@users.noreply.github.com>
2022-11-18 15:28:17 +08:00
MELERIX
42535f35bc Update Spanish (Latinoamérica) translation (#1961)
* Update Spanish (Latinoamérica) translation

* Delete languages.json.bak
2022-11-18 15:25:38 +08:00
95 changed files with 2870 additions and 408 deletions

View File

@@ -21,7 +21,7 @@ body:
attributes:
label: Ventoy Version
description: What version of ventoy are you running?
placeholder: 1.0.82
placeholder: 1.0.83
validations:
required: true
- type: dropdown

View File

@@ -25,6 +25,10 @@
#include <grub/i18n.h>
#include <grub/normal.h>
typedef const char * (*get_vmenu_title_pf)(const char *vMenu);
static get_vmenu_title_pf g_pfvmenu_title = NULL;
static const struct grub_arg_option options[] =
{
{"class", 1, GRUB_ARG_OPTION_REPEATABLE,
@@ -86,6 +90,8 @@ grub_normal_add_menu_entry (int argc, const char **args,
char *menu_title = NULL;
char *menu_sourcecode = NULL;
char *menu_id = NULL;
const char *vmenu = NULL;
const char *vaddr = NULL;
struct grub_menu_entry_class *menu_classes = NULL;
grub_menu_t menu;
@@ -145,7 +151,17 @@ grub_normal_add_menu_entry (int argc, const char **args,
goto fail;
}
menu_title = grub_strdup (args[0]);
if (!g_pfvmenu_title) {
vaddr = grub_env_get("VTOY_VMENU_FUNC_ADDR");
if (vaddr)
g_pfvmenu_title = (get_vmenu_title_pf)(unsigned long)grub_strtoul(vaddr, NULL, 16);
}
if (g_pfvmenu_title && grub_strncmp(args[0], "@VTMENU_", 8) == 0)
vmenu = g_pfvmenu_title(args[0] + 1);
menu_title = grub_strdup (vmenu ? vmenu : args[0]);
if (! menu_title)
goto fail;

View File

@@ -31,6 +31,7 @@ extern int g_ventoy_iso_raw;
extern int g_ventoy_grub2_mode;
extern int g_ventoy_wimboot_mode;
extern int g_ventoy_iso_uefi_drv;
extern char g_ventoy_hotkey_tip[256];
static const char *align_options[] =
{
@@ -230,10 +231,7 @@ label_set_property (void *vself, const char *name, const char *value)
value = g_ventoy_iso_uefi_drv ? grub_env_get("VTOY_ISO_UEFI_DRV_STR") : " ";
}
else if (grub_strcmp (value, "@VTOY_HOTKEY_TIP@") == 0) {
value = grub_env_get("VTOY_HOTKEY_TIP");
if (value == NULL) {
value = _(" ");
}
value = g_ventoy_hotkey_tip;
}
self->template = grub_strdup (value);

View File

@@ -50,6 +50,30 @@ int g_ventoy_menu_esc = 0;
int g_ventoy_fn_mutex = 0;
int g_ventoy_secondary_menu_on = 0;
int g_ventoy_terminal_output = 0;
char g_ventoy_hotkey_tip[256];
static int g_vt_key_num = 0;
static int g_vt_key_code[128];
static int ventoy_menu_pop_key(void)
{
if (g_vt_key_num > 0 && g_vt_key_num < (int)(sizeof(g_vt_key_code) / sizeof(g_vt_key_code[0])))
{
g_vt_key_num--;
return g_vt_key_code[g_vt_key_num];
}
return -1;
}
int ventoy_menu_push_key(int code)
{
if (g_vt_key_num >= 0 && g_vt_key_num < (int)(sizeof(g_vt_key_code) / sizeof(g_vt_key_code[0])))
{
g_vt_key_code[g_vt_key_num++] = code;
return 0;
}
return -1;
}
#define VTOY_COMM_HOTKEY(cmdkey) \
if (0 == g_ventoy_fn_mutex && 0 == g_ventoy_secondary_menu_on) { \
@@ -796,7 +820,11 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
return default_entry;
}
c = grub_getkey_noblock ();
if (g_vt_key_num > 0) {
c = ventoy_menu_pop_key();
} else {
c = grub_getkey_noblock ();
}
/* Negative values are returned on error. */
if ((c != GRUB_TERM_NO_KEY) && (c > 0))
@@ -934,6 +962,21 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
goto refresh;
case GRUB_TERM_KEY_F1:
case '1':
if (0 == g_ventoy_secondary_menu_on)
{
cmdstr = grub_env_get("VTOY_HELP_CMD");
if (cmdstr)
{
grub_script_execute_sourcecode(cmdstr);
while (grub_getkey() != GRUB_TERM_ESC)
;
menu_fini ();
goto refresh;
}
}
break;
case (GRUB_TERM_CTRL | 'd'):
case 'd':
if (0 == g_ventoy_secondary_menu_on)
{
menu_fini ();
@@ -982,21 +1025,14 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
goto refresh;
}
break;
case (GRUB_TERM_CTRL | 'h'):
case 'h':
case (GRUB_TERM_CTRL | 'l'):
case (GRUB_TERM_CTRL | 'L'):
case (GRUB_TERM_SHIFT | 'l'):
case (GRUB_TERM_SHIFT | 'L'):
case 'l':
case 'L':
{
if (0 == g_ventoy_secondary_menu_on)
{
cmdstr = grub_env_get("VTOY_HELP_CMD");
if (cmdstr)
{
grub_script_execute_sourcecode(cmdstr);
while (grub_getkey() != GRUB_TERM_ESC)
;
menu_fini ();
goto refresh;
}
}
VTOY_COMM_HOTKEY("VTOY_LANG_CMD");
break;
}
case (GRUB_TERM_CTRL | 'm'):

View File

@@ -31,6 +31,8 @@
static grub_uint8_t grub_color_menu_normal;
static grub_uint8_t grub_color_menu_highlight;
extern char g_ventoy_hotkey_tip[256];
struct menu_viewer_data
{
int first, offset;
@@ -204,7 +206,7 @@ command-line or ESC to discard edits and return to the GRUB menu."),
ret += grub_print_message_indented_real(szLine, STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run);
ret += grub_print_message_indented_real("\n", STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run);
ret += grub_print_message_indented_real(grub_env_get("VTOY_HOTKEY_TIP"),
ret += grub_print_message_indented_real(g_ventoy_hotkey_tip,
3, 6, term, dry_run);
}
}

View File

@@ -616,13 +616,15 @@ grub_err_t ventoy_cmd_browser_disk(grub_extcmd_context_t ctxt, int argc, char **
if (g_tree_view_menu_style == 0)
{
browser_ssprintf(&mbuf, "menuentry \"%-10s [Return]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n}\n", "<--");
browser_ssprintf(&mbuf, "menuentry \"%-10s [%s]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n}\n", "<--",
ventoy_get_vmenu_title("VTMENU_BROWER_RETURN"));
}
else
{
browser_ssprintf(&mbuf, "menuentry \"[Return]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n}\n");
browser_ssprintf(&mbuf, "menuentry \"[%s]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n}\n",
ventoy_get_vmenu_title("VTMENU_BROWER_RETURN"));
}
grub_disk_dev_iterate(ventoy_browser_iterate_disk, &mbuf);

View File

@@ -2346,16 +2346,16 @@ static int ventoy_dynamic_tree_menu(img_iterator_node *node)
if (g_tree_view_menu_style == 0)
{
vtoy_ssprintf(g_tree_script_buf, g_tree_script_pos,
"menuentry \"%-10s [Return to ListView]\" --class=\"vtoyret\" VTOY_RET {\n "
"menuentry \"%-10s [%s]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n"
"}\n", "<--");
"}\n", "<--", ventoy_get_vmenu_title("VTMENU_RET_TO_LISTVIEW"));
}
else
{
vtoy_ssprintf(g_tree_script_buf, g_tree_script_pos,
"menuentry \"[Return to ListView]\" --class=\"vtoyret\" VTOY_RET {\n "
"menuentry \"[%s]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n"
"}\n");
"}\n", ventoy_get_vmenu_title("VTMENU_RET_TO_LISTVIEW"));
}
}
@@ -2934,9 +2934,9 @@ static grub_err_t ventoy_cmd_list_img(grub_extcmd_context_t ctxt, int argc, char
if (g_default_menu_mode == 1)
{
vtoy_ssprintf(g_list_script_buf, g_list_script_pos,
"menuentry \"%s [Return to TreeView]\" --class=\"vtoyret\" VTOY_RET {\n "
"menuentry \"%s [%s]\" --class=\"vtoyret\" VTOY_RET {\n "
" echo 'return ...' \n"
"}\n", "<--");
"}\n", "<--", ventoy_get_vmenu_title("VTMENU_RET_TO_TREEVIEW"));
}
for (cur = g_ventoy_img_list; cur; cur = cur->next)
@@ -3705,13 +3705,14 @@ static grub_err_t ventoy_cmd_sel_auto_install(grub_extcmd_context_t ctxt, int ar
vtoy_ssprintf(buf, pos, "set timeout=%d\n", node->timeout);
}
vtoy_ssprintf(buf, pos, "menuentry \"Boot without auto installation template\" --class=\"sel_auto_install\" {\n"
vtoy_ssprintf(buf, pos, "menuentry \"@VTMENU_NO_AUTOINS_SCRIPT\" --class=\"sel_auto_install\" {\n"
" echo %s\n}\n", "");
for (i = 0; i < node->templatenum; i++)
{
vtoy_ssprintf(buf, pos, "menuentry \"Boot with %s\" --class=\"sel_auto_install\" {\n"
vtoy_ssprintf(buf, pos, "menuentry \"%s %s\" --class=\"sel_auto_install\" {\n"
" echo \"\"\n}\n",
ventoy_get_vmenu_title("VTMENU_AUTOINS_USE"),
node->templatepath[i].path);
}
@@ -3811,13 +3812,14 @@ static grub_err_t ventoy_cmd_sel_persistence(grub_extcmd_context_t ctxt, int arg
vtoy_ssprintf(buf, pos, "set timeout=%d\n", node->timeout);
}
vtoy_ssprintf(buf, pos, "menuentry \"Boot without persistence\" --class=\"sel_persistence\" {\n"
vtoy_ssprintf(buf, pos, "menuentry \"@VTMENU_NO_PERSISTENCE\" --class=\"sel_persistence\" {\n"
" echo %s\n}\n", "");
for (i = 0; i < node->backendnum; i++)
{
vtoy_ssprintf(buf, pos, "menuentry \"Boot with %s\" --class=\"sel_persistence\" {\n"
vtoy_ssprintf(buf, pos, "menuentry \"%s %s\" --class=\"sel_persistence\" {\n"
" echo \"\"\n}\n",
ventoy_get_vmenu_title("VTMENU_PERSIST_USE"),
node->backendpath[i].path);
}
@@ -6073,26 +6075,26 @@ static grub_err_t ventoy_cmd_show_secondary_menu(grub_extcmd_context_t ctxt, int
fsize = grub_strtoull(args[2], NULL, 10);
vtoy_dummy_menuentry(cmd, pos, len, "Boot in normal mode", "second_normal"); seldata[n++] = 1;
vtoy_dummy_menuentry(cmd, pos, len, "@VTMENU_NORMAL_MODE", "second_normal"); seldata[n++] = 1;
if (grub_strcmp(args[1], "Unix") != 0)
{
if (grub_strcmp(args[1], "Windows") == 0)
{
vtoy_dummy_menuentry(cmd, pos, len, "Boot in wimboot mode", "second_wimboot"); seldata[n++] = 2;
vtoy_dummy_menuentry(cmd, pos, len, "@VTMENU_WIMBOOT_MODE", "second_wimboot"); seldata[n++] = 2;
}
else
{
vtoy_dummy_menuentry(cmd, pos, len, "Boot in grub2 mode", "second_grub2"); seldata[n++] = 3;
vtoy_dummy_menuentry(cmd, pos, len, "@VTMENU_GRUB2_MODE", "second_grub2"); seldata[n++] = 3;
}
if (fsize <= VTOY_SIZE_1GB)
{
vtoy_dummy_menuentry(cmd, pos, len, "Boot in memdisk mode", "second_memdisk"); seldata[n++] = 4;
vtoy_dummy_menuentry(cmd, pos, len, "@VTMENU_MEMDISK_MODE", "second_memdisk"); seldata[n++] = 4;
}
}
vtoy_dummy_menuentry(cmd, pos, len, "File checksum", "second_checksum"); seldata[n++] = 5;
vtoy_dummy_menuentry(cmd, pos, len, "@VTMENU_FILE_CHKSUM", "second_checksum"); seldata[n++] = 5;
do {
g_ventoy_menu_esc = 1;
@@ -6175,6 +6177,15 @@ static grub_err_t ventoy_cmd_fs_ignore_case(grub_extcmd_context_t ctxt, int argc
return 0;
}
static grub_err_t ventoy_cmd_load_menu_lang(grub_extcmd_context_t ctxt, int argc, char **args)
{
(void)ctxt;
(void)argc;
ventoy_plugin_load_menu_lang(args[0]);
VENTOY_CMD_RETURN(0);
}
int ventoy_env_init(void)
{
int i;
@@ -6216,6 +6227,10 @@ int ventoy_env_init(void)
grub_snprintf(buf, sizeof(buf), "0x%lx", (ulong)ventoy_chain_file_read);
grub_env_set("vtoy_chain_file_read", buf);
grub_env_export("vtoy_chain_file_read");
grub_snprintf(buf, sizeof(buf), "0x%lx", (ulong)ventoy_get_vmenu_title);
grub_env_set("VTOY_VMENU_FUNC_ADDR", buf);
grub_env_export("VTOY_VMENU_FUNC_ADDR");
return 0;
}
@@ -6383,6 +6398,8 @@ static cmd_para ventoy_cmds[] =
{ "vt_systemd_menu", ventoy_cmd_linux_systemd_menu, 0, NULL, "", "", NULL },
{ "vt_limine_menu", ventoy_cmd_linux_limine_menu, 0, NULL, "", "", NULL },
{ "vt_secondary_recover_mode", ventoy_cmd_secondary_recover_mode, 0, NULL, "", "", NULL },
{ "vt_load_menu_lang", ventoy_cmd_load_menu_lang, 0, NULL, "", "", NULL },
{ "vt_cur_menu_lang", ventoy_cmd_cur_menu_lang, 0, NULL, "", "", NULL },
};
int ventoy_register_all_cmd(void)

View File

@@ -1053,6 +1053,9 @@ extern int g_ventoy_case_insensitive;
extern int g_ventoy_fn_mutex;
extern grub_uint8_t g_ventoy_chain_type;
extern int g_vhdboot_enable;
extern int g_default_menu_mode;
extern char g_ventoy_hotkey_tip[256];
extern int g_ventoy_menu_refresh;
#define VENTOY_IMG_WHITE_LIST 1
#define VENTOY_IMG_BLACK_LIST 2
@@ -1258,6 +1261,10 @@ grub_err_t ventoy_cmd_browser_disk(grub_extcmd_context_t ctxt, int argc, char **
int ventoy_get_fs_type(const char *fs);
int ventoy_img_name_valid(const char *filename, grub_size_t namelen);
void * ventoy_alloc_chain(grub_size_t size);
int ventoy_plugin_load_menu_lang(const char *lang);
const char *ventoy_get_vmenu_title(const char *vMenu);
grub_err_t ventoy_cmd_cur_menu_lang(grub_extcmd_context_t ctxt, int argc, char **args);
extern int ventoy_menu_push_key(int code);
#endif /* __VENTOY_DEF_H__ */

View File

@@ -56,12 +56,14 @@ static injection_config *g_injection_head = NULL;
static auto_memdisk *g_auto_memdisk_head = NULL;
static image_list *g_image_list_head = NULL;
static conf_replace *g_conf_replace_head = NULL;
static VTOY_JSON *g_menu_lang_json = NULL;
static int g_theme_id = 0;
static int g_theme_num = 0;
static theme_list *g_theme_head = NULL;
static int g_theme_random = vtoy_theme_random_boot_second;
static char g_theme_single_file[256];
static char g_cur_menu_language[32] = {0};
static int ventoy_plugin_is_parent(const char *pat, int patlen, const char *isopath)
{
@@ -3369,7 +3371,7 @@ grub_err_t ventoy_cmd_select_theme_cfg(grub_extcmd_context_t ctxt, int argc, cha
}
pos += grub_snprintf(buf + pos, bufsize - pos,
"menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {\n"
"menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {\n"
"echo 'Return ...'\n"
"}\n");
@@ -3467,3 +3469,94 @@ grub_err_t ventoy_cmd_set_theme_path(grub_extcmd_context_t ctxt, int argc, char
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
}
const char *ventoy_get_vmenu_title(const char *vMenu)
{
return vtoy_json_get_string_ex(g_menu_lang_json->pstChild, vMenu);
}
int ventoy_plugin_load_menu_lang(const char *lang)
{
int ret = 1;
grub_file_t file = NULL;
char *buf = NULL;
if (grub_strcmp(lang, g_cur_menu_language) == 0)
{
debug("Same menu lang %s\n", lang);
return 0;
}
grub_snprintf(g_cur_menu_language, sizeof(g_cur_menu_language), "%s", lang);
debug("Load menu lang %s\n", g_cur_menu_language);
if (g_menu_lang_json)
{
vtoy_json_destroy(g_menu_lang_json);
g_menu_lang_json = NULL;
}
g_menu_lang_json = vtoy_json_create();
if (!g_menu_lang_json)
{
goto end;
}
file = ventoy_grub_file_open(GRUB_FILE_TYPE_LINUX_INITRD, "(vt_menu_tarfs)/menu/%s.json", lang);
if (!file)
{
goto end;
}
buf = grub_malloc(file->size + 1);
if (!buf)
{
grub_printf("Failed to malloc memory %lu.\n", (ulong)(file->size + 1));
goto end;
}
buf[file->size] = 0;
grub_file_read(file, buf, file->size);
vtoy_json_parse(g_menu_lang_json, buf);
if (g_default_menu_mode == 0)
{
grub_snprintf(g_ventoy_hotkey_tip, sizeof(g_ventoy_hotkey_tip), "%s", ventoy_get_vmenu_title("VTMENU_STR_HOTKEY_TREE"));
}
else
{
grub_snprintf(g_ventoy_hotkey_tip, sizeof(g_ventoy_hotkey_tip), "%s", ventoy_get_vmenu_title("VTMENU_STR_HOTKEY_LIST"));
}
ventoy_menu_push_key(GRUB_TERM_ESC);
ventoy_menu_push_key(GRUB_TERM_ESC);
g_ventoy_menu_refresh = 1;
ret = 0;
end:
check_free(file, grub_file_close);
grub_check_free(buf);
return ret;
}
grub_err_t ventoy_cmd_cur_menu_lang(grub_extcmd_context_t ctxt, int argc, char **args)
{
(void)ctxt;
(void)argc;
if (argc > 0)
{
grub_env_set(args[0], g_cur_menu_language);
}
else
{
grub_printf("%s\n", g_cur_menu_language);
grub_printf("%s\n", g_ventoy_hotkey_tip);
grub_refresh();
}
VENTOY_CMD_RETURN(0);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
INSTALL/EFI/BOOT/grub.efi Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,7 +1,7 @@
if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" ]; then
set default=0
menuentry "Calculate and check md5sum" --class=checksum_md5 {
menuentry "@VTMENU_CHKSUM_MD5_CALC_CHK" --class=checksum_md5 {
md5sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" vtReadChecksum
@@ -18,7 +18,7 @@ if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" ]; then
read vtInputKey
}
else
menuentry "Calculate md5sum" --class=checksum_md5 {
menuentry "@VTMENU_CHKSUM_MD5_CALC" --class=checksum_md5 {
md5sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
echo -e "\n\npress ENTER to exit ..."
@@ -28,7 +28,7 @@ fi
if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" ]; then
set default=1
menuentry "Calculate and check sha1sum" --class=checksum_sha1 {
menuentry "@VTMENU_CHKSUM_SHA1_CALC_CHK" --class=checksum_sha1 {
sha1sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" vtReadChecksum
@@ -45,7 +45,7 @@ if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" ]; then
read vtInputKey
}
else
menuentry "Calculate sha1sum" --class=checksum_sha1 {
menuentry "@VTMENU_CHKSUM_SHA1_CALC" --class=checksum_sha1 {
sha1sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
echo -e "\n\npress ENTER to exit ..."
@@ -57,7 +57,7 @@ fi
if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" ]; then
set default=2
menuentry "Calculate and check sha256sum" --class=checksum_sha256 {
menuentry "@VTMENU_CHKSUM_SHA256_CALC_CHK" --class=checksum_sha256 {
sha256sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" vtReadChecksum
@@ -74,7 +74,7 @@ if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" ]; then
read vtInputKey
}
else
menuentry "Calculate sha256sum" --class=checksum_sha256 {
menuentry "@VTMENU_CHKSUM_SHA256_CALC" --class=checksum_sha256 {
sha256sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
echo -e "\n\npress ENTER to exit ..."
@@ -86,7 +86,7 @@ fi
if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" ]; then
set default=3
menuentry "Calculate and check sha512sum" --class=checksum_sha512{
menuentry "@VTMENU_CHKSUM_SHA512_CALC_CHK" --class=checksum_sha512{
sha512sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" vtReadChecksum
@@ -103,7 +103,7 @@ if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" ]; then
read vtInputKey
}
else
menuentry "Calculate sha512sum" --class=checksum_sha512{
menuentry "@VTMENU_CHKSUM_SHA512_CALC" --class=checksum_sha512{
sha512sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
echo -e "\n\npress ENTER to exit ..."
@@ -112,6 +112,6 @@ else
fi
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}

View File

@@ -1,10 +1,13 @@
submenu "@VTMENU_MENU_LANG" --class=debug_menu_lang --class=F5tool {
source $prefix/menulang.cfg
}
source $prefix/power.cfg
source $prefix/hwinfo.cfg
source $prefix/keyboard.cfg
submenu "Resolution Configuration" --class=debug_resolution --class=F5tool {
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
submenu "@VTMENU_RESOLUTION_CFG" --class=debug_resolution --class=F5tool {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
@@ -28,27 +31,27 @@ submenu "Resolution Configuration" --class=debug_resolution --class=F5tool {
done
}
submenu "Screen Display Mode" --class=debug_screen_mode --class=F5tool {
menuentry 'Force Text Mode' --class=debug_text_mode --class=debug_screen_mode --class=F5tool {
submenu "@VTMENU_SCREEN_MODE" --class=debug_screen_mode --class=F5tool {
menuentry '@VTMENU_SCREEN_TEXT_MODE' --class=debug_text_mode --class=debug_screen_mode --class=F5tool {
terminal_output console
}
menuentry 'Force Graphics Mode' --class=debug_gui_mode --class=debug_screen_mode --class=F5tool {
menuentry '@VTMENU_SCREEN_GUI_MODE' --class=debug_gui_mode --class=debug_screen_mode --class=F5tool {
terminal_output gfxterm
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
if [ $VTOY_THEME_COUNT -gt 1 ]; then
submenu "Theme Select" --class=debug_theme_select --class=F5tool {
if [ -n "$VTOY_THEME_COUNT" -a $VTOY_THEME_COUNT -gt 1 ]; then
submenu "@VTMENU_THEME_SELECT" --class=debug_theme_select --class=F5tool {
vt_select_theme_cfg
}
fi
if [ "$grub_platform" != "pc" ]; then
submenu 'Ventoy UEFI Utilities' --class=debug_util --class=F5tool {
menuentry 'Show EFI Drivers' --class=debug_util_efidrv --class=debug_util --class=F5tool {
menuentry '@VTMENU_UTIL_SHOW_EFI_DRV' --class=debug_util_efidrv --class=debug_util --class=F5tool {
vt_push_pager
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=show_efi_drivers
boot
@@ -57,22 +60,22 @@ if [ "$grub_platform" != "pc" ]; then
read vtInputKey
}
menuentry 'Fixup Windows BlinitializeLibrary Failure' --class=debug_util_blinit --class=debug_util --class=F5tool {
menuentry '@VTMENU_UTIL_FIX_BLINIT_FAIL' --class=debug_util_blinit --class=debug_util --class=F5tool {
chainloader ${vtoy_path}/vtoyutil_${VTOY_EFI_ARCH}.efi env_param=${env_param} ${vtdebug_flag} feature=fix_windows_mmap
boot
echo -e "\npress ENTER to exit ..."
read vtInputKey
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
fi
submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --class=F5tool {
menuentry 'Check global control plugin configuration' --class=debug_control --class=debug_json --class=F5tool {
submenu '@VTMENU_JSON_CHK_JSON' --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_CONTROL' --class=debug_control --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path control $vtoy_iso_part
@@ -81,7 +84,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check theme plugin configuration' --class=debug_theme --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_THEME' --class=debug_theme --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path theme $vtoy_iso_part
@@ -90,7 +93,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check auto install plugin configuration' --class=debug_autoinstall --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_AUTOINS' --class=debug_autoinstall --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path auto_install $vtoy_iso_part
@@ -99,7 +102,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check persistence plugin configuration' --class=debug_persistence --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_PERSIST' --class=debug_persistence --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path persistence $vtoy_iso_part
@@ -111,7 +114,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check menu alias plugin configuration' --class=debug_menualias --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_MENU_ALIAS' --class=debug_menualias --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path menu_alias $vtoy_iso_part
@@ -120,7 +123,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check menu tip plugin configuration' --class=debug_menutip --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_MENU_TIP' --class=debug_menutip --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path menu_tip $vtoy_iso_part
@@ -129,7 +132,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check menu class plugin configuration' --class=debug_menuclass --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_MENU_CLASS' --class=debug_menuclass --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path menu_class $vtoy_iso_part
@@ -138,7 +141,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check injection plugin configuration' --class=debug_injection --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_INJECTION' --class=debug_injection --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path injection $vtoy_iso_part
@@ -147,7 +150,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check auto memdisk plugin configuration' --class=debug_automemdisk --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_AUTO_MEMDISK' --class=debug_automemdisk --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path auto_memdisk $vtoy_iso_part
@@ -156,7 +159,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check image list plugin configuration' --class=debug_imagelist --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_IMG_LIST' --class=debug_imagelist --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path image_list $vtoy_iso_part
@@ -165,7 +168,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check image blacklist plugin configuration' --class=debug_imageblacklist --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_IMG_BLIST' --class=debug_imageblacklist --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path image_blacklist $vtoy_iso_part
@@ -174,7 +177,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check boot conf replace plugin configuration' --class=debug_bootconf_replace --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_CONF_REPLACE' --class=debug_bootconf_replace --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path conf_replace $vtoy_iso_part
@@ -183,7 +186,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check dud plugin configuration' --class=debug_dud --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_DUD' --class=debug_dud --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path dud $vtoy_iso_part
@@ -192,7 +195,7 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check password plugin configuration' --class=debug_pwd --class=debug_json --class=F5tool {
menuentry '@VTMENU_JSON_CHK_PASSWORD' --class=debug_pwd --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path password $vtoy_iso_part
@@ -201,21 +204,12 @@ submenu 'Check plugin json configuration (ventoy.json)' --class=debug_json --cla
unset pager
}
menuentry 'Check custom boot plugin configuration' --class=debug_custom_boot --class=debug_json --class=F5tool {
set pager=1
vt_check_plugin_json $vt_plugin_path custom_boot $vtoy_iso_part
echo -e "\npress ENTER to exit ..."
read vtInputKey
unset pager
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}

View File

@@ -65,6 +65,10 @@ function ventoy_vcfg_proc {
fi
}
function ventoy_language {
configfile $prefix/menulang.cfg
}
function ventoy_diagnosis {
vt_enum_video_mode
configfile $prefix/debug.cfg
@@ -99,8 +103,9 @@ function ventoy_show_help {
fi
loopback vt_help_tarfs mem:${vtoy_help_txt_mem_addr}:size:${vtoy_help_txt_mem_size}
if [ -f "(vt_help_tarfs)/help/${VTOY_HELP_TXT_LANGUAGE}.txt" ]; then
cat "(vt_help_tarfs)/help/${VTOY_HELP_TXT_LANGUAGE}.txt"
vt_cur_menu_lang vtCurLang
if [ -f "(vt_help_tarfs)/help/${vtCurLang}.txt" ]; then
cat "(vt_help_tarfs)/help/${vtCurLang}.txt"
else
cat "(vt_help_tarfs)/help/en_US.txt"
fi
@@ -108,6 +113,11 @@ function ventoy_show_help {
fi
}
function ventoy_load_menu_lang_file {
vt_load_file_to_mem "auto" $vtoy_efi_part/grub/menu.tar.gz vtoy_menu_lang_mem
loopback vt_menu_tarfs mem:${vtoy_menu_lang_mem_addr}:size:${vtoy_menu_lang_mem_size}
}
function get_os_type {
set vtoy_os=Linux
@@ -2344,7 +2354,7 @@ function img_unsupport_menuentry {
#############################################################
#############################################################
set VENTOY_VERSION="1.0.82"
set VENTOY_VERSION="1.0.83"
#ACPI not compatible with Window7/8, so disable by default
set VTOY_PARAM_NO_ACPI=1
@@ -2368,6 +2378,7 @@ set VTOY_HELP_CMD="ventoy_show_help"
set VTOY_CHKSUM_CMD="ventoy_checksum"
set VTOY_HELP_TXT_LANGUAGE="en_US"
set VTOY_CHKSUM_FILE_PATH="X"
set VTOY_LANG_CMD="ventoy_language"
if [ "$grub_platform" = "pc" ]; then
@@ -2433,6 +2444,9 @@ fi
#Load Partition Table
vt_load_part_table $vtoydev
#Load menu lang file
ventoy_load_menu_lang_file
#Load Plugin
if [ -f $vtoy_iso_part/ventoy/ventoy.json ]; then
clear
@@ -2442,6 +2456,12 @@ else
vt_check_json_path_case $vtoy_iso_part
fi
if [ -n "$VTOY_MENU_LANGUAGE" ]; then
vt_load_menu_lang "$VTOY_MENU_LANGUAGE"
else
vt_load_menu_lang en_US
fi
if [ -n "$VTOY_MENU_TIMEOUT" ]; then
set timeout=$VTOY_MENU_TIMEOUT
else
@@ -2463,10 +2483,8 @@ fi
if [ $VTOY_DEFAULT_MENU_MODE -eq 0 ]; then
set VTOY_F3_CMD="vt_dynamic_menu 1 1"
set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Browser F3:TreeView F4:Localboot F5:Tools F6:ExMenu"
else
set VTOY_F3_CMD="vt_dynamic_menu 1 0"
set VTOY_HOTKEY_TIP="h:Help F1:Memdisk F2:Browser F3:ListView F4:Localboot F5:Tools F6:ExMenu"
fi
terminal_output console
@@ -2575,7 +2593,7 @@ export VTOY_HELP_CMD
export VTOY_CHKSUM_CMD
export VTOY_HELP_TXT_LANGUAGE
export VTOY_CHKSUM_FILE_PATH
export VTOY_HOTKEY_TIP
export VTOY_LANG_CMD
#colect all image files (iso files)

View File

@@ -0,0 +1,19 @@
L - ভাষা নির্বাচন করুন
F1 - এই সাহায্য তথ্য প্রদর্শন করুন
F2 - স্থানীয় ডিস্কে ফাইলটি browse করুন এবং boot করুন
F3 - Treeview <-> ListView এর মধ্যে মেনু মোড পরিবর্তন করুন
F4 - স্থানীয় ডিস্কে Windows/Linux boot করুন
F5 - ইউটিলিটিস
F6 - কাস্টম Grub2 মেনু লোড করুন
F7 - GUI মোড <-> TEXT মোডের মধ্যে স্যুইচ করুন
m/Ctrl+m - চেকসাম ইমেজ ফাইল (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk মোড (শুধুমাত্র ছোট WinPE/LiveCD ISO/IMG জন্য)
w/Ctrl+w - WIMBOOT মোড (শুধুমাত্র standard Windows ISO জন্য)
r/Ctrl+r - Grub2 মোড (শুধুমাত্র কিছু Linux distro জন্য)
i/Ctrl+i - Compatible মোড (শুধুমাত্র debug জন্য)
u/Ctrl+u - ISO efi ড্রাইভার লোড করুন (শুধুমাত্র debug জন্য, সরকারীভাবে ব্যবহার করা যাবে না)
ফিরে আসতে ESC টিপুন ......

View File

@@ -1,18 +1,19 @@
h - Zeigt dieses Hilfe Menu
F1 - Memdisk Modus (Nur für kleine WinPE/LiveCD ISO/IMG)
F2 - Browse and boot files in local disk
F3 - Menu wechsel zwischen Baum <-> Listen Ansicht
F4 - Windows/Linux vom lokalem Datenträger starten
F5 - Dienstprogramme
L - Sprache auswählen
F1 - Zeigt dieses Hilfemenü
F2 - Durchsuchen und starten von Dateien auf lokalem Datenträger
F3 - Wechsel zwischen Baum-/Listenansicht
F4 - Windows/Linux von lokalem Datenträger starten
F5 - Werkzeuge
F6 - Benutzerdefiniertes Grub2-Menü laden
F7 - Wechseln zwischen GUI-Modus <-> TEXT-Modus
F7 - Wechseln zwischen Grafik-/Text-Modus
m - Prüfsummencheck Image Dateien (md5/sha1/sha256/sha512)
w/Ctrl+w - WIMBOOT Modus (Nur für Standard Windows ISO)
r/Ctrl+r - Grub2 Modus (Nur für einige Linux distros)
i/Ctrl+i - Kompatibilitäts Modus (Nur für Fehleranalyse)
u/Ctrl+u - Lade ISO efi Treiber (Nur für Fehleranalyse, darf nicht offiziel benutzt werden)
m/Strg+m - Prüfsumme von Abbilddatei prüfen (md5/sha1/sha256/sha512)
d/Strg+d - Memdisk-Modus (Nur für kleine WinPE/LiveCD ISO/IMG)
w/Strg+w - WIMBOOT-Modus (Nur für Standard Windows ISO)
r/Strg+r - Grub2-Modus (Nur für einige Linux-Distributionen)
i/Strg+i - Kompatibilitäts-Modus (Nur für Fehleranalyse)
u/Strg+u - ISO EFI-Treiber laden (Nur für Fehleranalyse, darf offiziell nicht benutzt werden)
Drücke ESC für Zurück ......
ESC für Zurück drücken......

View File

@@ -1,5 +1,5 @@
h - Display this help information
F1 - Memdisk Mode (Only for small WinPE/LiveCD ISO/IMG)
L - Language Select
F1 - Display this help information
F2 - Browse and boot files in local disk
F3 - Switch menu mode between Treeview <-> ListView
F4 - Boot Windows/Linux in local disk
@@ -7,7 +7,8 @@ F5 - Utilities
F6 - Load Custom Grub2 Menu
F7 - Switch between GUI Mode <-> TEXT Mode
m - Checksum image files (md5/sha1/sha256/sha512)
m/Ctrl+m - Checksum image files (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk Mode (Only for small WinPE/LiveCD ISO/IMG)
w/Ctrl+w - WIMBOOT Mode (Only for standard Windows ISO)
r/Ctrl+r - Grub2 Mode (Only for some Linux distros)
i/Ctrl+i - Compatible Mode (Just only for debug)

View File

@@ -1,5 +1,5 @@
h - Afficher cette aide
F1 - Mode Memdisk (Seulement pour WinPE/LiveCD ISO/IMG)
L - Sélection de la langue
F1 - Afficher cette aide
F2 - Browse and boot files in local disk
F3 - Basculer l'affichage 'Vue en arbre' <-> 'Vue en liste'
F4 - Démarrer le système Windows/Linux local
@@ -7,10 +7,13 @@ F5 - Utilitaires
F6 - Charger le menu Grub2 personnalisé
F7 - Basculer entre le mode graphique <-> mode texte
m - Somme de contrôle des images (md5/sha1/sha256/sha512)
m/Ctrl+m - Somme de contrôle des images (md5/sha1/sha256/sha512)
d/Ctrl+d - Mode Memdisk (Seulement pour WinPE/LiveCD ISO/IMG)
w/Ctrl+w - Mode WIMBOOT (seulement pour les images standards Windows)
r/Ctrl+r - Mode Grub2 (seulement pour quelques Linux)
i/Ctrl+i - Mode Compatible (seulement à fins de tests)
u/Ctrl+u - Load ISO efi driver (Just only for debug, can not be used officially)
Appuyer sur Echap pour sortir ......

View File

@@ -0,0 +1,19 @@
L - भाषा का चयन
F1 - इस सहायता जानकारी को प्रदर्शित करें
F2 - स्थानीय डिस्क में फ़ाइलें ब्राउज़ करें और बूट करें
F3 - TreeView <-> ListView के बीच मेन्यू मोड स्विच करें
F4 - स्थानीय डिस्क में Windows/Linux बूट करें
F5 - यूटिलिटीज
F6 - कस्टम Grub2 मेनू लोड करें
F7 - GUI मोड <-> Text मोड के बीच स्विच करें
m/Ctrl+m - चेकसम इमेज फाइल्स (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk मोड (केवल small WinPE/LiveCD ISO/IMG के लिए)
w/Ctrl+w - WIMBOOT मोड (केवल standard Windows ISO के लिए)
r/Ctrl+r - Grub2 मोड (केवल कुछ Linux distros के लिए)
i/Ctrl+i - Compatible मोड (केवल डिबग के लिए)
u/Ctrl+u - ISO efi ड्राइवर लोड करें (केवल debug के लिए, आधिकारिक तौर पर इस्तेमाल नहीं किया जा सकता)
वापस जाने के लिए ESC दबाएं ......

View File

@@ -1,5 +1,5 @@
h - Prikazuje ove informacije
F1 - Memdisk način rada (samo za male WinPE/LiveCD imidž fajlove)
L - Izaberite jezik
F1 - Prikazuje ove informacije
F2 - Pokreće imidž fajlove na lokalnom disku
F3 - Mijenja meni između TreeView <-> ListView
F4 - Pokreće Windows/Linux na lokalnom disku
@@ -7,7 +7,8 @@ F5 - Alati
F6 - Učitava prilagođen GRUB2 meni
F7 - Mijenja između GUI <-> TEXT načina rada
m - Generira heš odabranog imidž fajla (md5/sha1/sha256/sha512)
m/Ctrl+m - Generira heš odabranog imidž fajla (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk način rada (samo za male WinPE/LiveCD imidž fajlove)
w/Ctrl+w - WIMBOOT način rada (samo za standardne Windows imidž fajlove)
r/Ctrl+r - GRUB2 način rada (samo za neke Linux distribucije)
i/Ctrl+i - Kompatibilni način rada (samo za testiranje)

View File

@@ -1,5 +1,5 @@
h - Tampilkan bantuan informasi ini
F1 - Mode Memdisk (Hanya untuk ukuran WinPE/LiveCD ISO/IMG yang kecil)
L - Pilih Bahasa
F1 - Tampilkan bantuan informasi ini
F2 - Browse and boot files in local disk
F3 - Beralih mode menu antara Treeview <-> ListView
F4 - Jalankan (boot) Windows/Linux pada disk lokal
@@ -7,7 +7,8 @@ F5 - Alat Utilitas
F6 - Memuat ubah suai Grub2 Menu
F7 - Beralih antara mode GUI <-> Mode TEXT
m - Periksa berkas files (md5/sha1/sha256/sha512)
m/Ctrl+m - Periksa berkas files (md5/sha1/sha256/sha512)
d/Ctrl+d - Mode Memdisk (Hanya untuk ukuran WinPE/LiveCD ISO/IMG yang kecil)
w/Ctrl+w - Mode WIMBOOT (Hanya untuk berkas ISO Windows standar)
r/Ctrl+r - Mode Grub2 (Hanya untuk distro Linux tertentu)
i/Ctrl+i - Mode Kompatibel/Compatible (Hanya untuk debug saja)

View File

@@ -1,5 +1,5 @@
h - この画面を表示する
F1 - 主記憶装置上に記憶域を作成する容量の小さなWinPE・LiveCD専用
L - 言語を選択
F1 - この画面を表示する
F2 - 手元の記憶装置にある起動ファイルを選択して実行する
F3 - 表示形式を切り替える(一覧 ↔ 階層)
F4 - 手元の記憶装置にあるWindowsまたはLinuxを起動する
@@ -7,7 +7,8 @@ F5 - 諸機能
F6 - Grub2の構成を読み込む
F7 - 操作形式を切り替えるGUI ↔ CUI
m - イメージの検査合計を計算する (md5/sha1/sha256/sha512)
m/Ctrl+m - イメージの検査合計を計算する (md5/sha1/sha256/sha512)
d/Ctrl+d - 主記憶装置上に記憶域を作成する容量の小さなWinPE・LiveCD専用
w/Ctrl+w - WIMBOOTモード標準的なWindows ISO専用
r/Ctrl+r - Grub2モード一部のLinuxディストリビューション専用
i/Ctrl+i - 互換モード(開発用)

View File

@@ -1,5 +1,5 @@
h - 이 도움말 정보 표시
F1 - Memdisk 모드 (작은 WinPE/LiveCD ISO/IMG 전용)
L - 언어 선택
F1 - 이 도움말 정보 표시
F2 - 로컬 디스크에서 파일 찾아보기 및 부팅
F3 - 트리보기 <-> 목록보기 간에 메뉴 모드 전환
F4 - 로컬 디스크에서 Windows/Linux 부팅
@@ -7,8 +7,9 @@ F5 - 유틸리티
F6 - 사용자 지정 Grub2 메뉴 로드
F7 - GUI 모드 <-> TEXT 모드 간에 전환
m - 체크섬 이미지 파일 (md5/sha1/sha256/sha512)
w/Ctrl+w - WIMBOOT 모드 (표준 Windows ISO 전용)
m/Ctrl+m - 체크섬 이미지 파일 (md5/sha1/sha256/sha512)
d/Ctrl+d - WIMBOOT 모드 (표준 Windows ISO 전용)
w/Ctrl+w - Memdisk 모드 (작은 WinPE/LiveCD ISO/IMG 전용)
r/Ctrl+r - Grub2 모드 (일부 Linux 배포판에만 해당)
i/Ctrl+i - 호환 모드 (디버그 전용)
u/Ctrl+u - ISO eFi 드라이버 로드 (디버그 전용, 공식적으로 사용할 수 없음)

View File

@@ -1,5 +1,5 @@
h - Mostra esta informação de ajuda
F1 - Modo Memdisk (Apenas para pequenos WinPE/LiveCD ISO/IMG)
L - Selecionar Idioma
F1 - Mostra esta informação de ajuda
F2 - Browse and boot files in local disk
F3 - Alternar o modo menu entre Vista de árvore <-> Vista de lista
F4 - Arrancar o Windows/Linux em disco local
@@ -7,7 +7,8 @@ F5 - Utilitários
F6 - Carregar menu Grub2 personalizado
F7 - Alternar entre Modo GUI <-> Modo TEXTO
m - Checksum ficheiros de imagem (md5/sha1/sha256/sha512)
m/Ctrl+m - Checksum ficheiros de imagem (md5/sha1/sha256/sha512)
d/Ctrl+d - Modo Memdisk (Apenas para pequenos WinPE/LiveCD ISO/IMG)
w/Ctrl+w - Modo WIMBOOT (Apenas para Windows ISO padrão)
r/Ctrl+r - Modo Grub2 (Apenas para algumas distros Linux)
i/Ctrl+i - Modo Compatível (Apenas para depuração)

View File

@@ -0,0 +1,19 @@
L - Выбор языка
F1 - Показать эту справочную информацию
F2 - Просмотр и загрузка файлов на локальном диске
F3 - Переключить режим меню между Treeview <-> ListView
F4 - Загрузка Windows/Linux с локального диска
F5 - Утилиты
F6 - Загрузить пользовательское меню Grub2
F7 - Переключиться между режимом GUI <-> режимом TEXT
m/Ctrl+m - Проверить контрольную сумму файлов образа диска (md5/sha1/sha256/sha512)
d/Ctrl+d - Режим Memdisk (Только для небольших WinPE/LiveCD ISO/IMG)
w/Ctrl+w - Режим WIMBOOT (Только для стандартного Windows ISO)
r/Ctrl+r - Режим Grub2 (Только для некоторых дистрибутивов Linux)
i/Ctrl+i - Совместимый режим (Только для отладки)
u/Ctrl+u - Загрузить драйвер ISO EFI (Только для отладки, нельзя использовать официально)
Нажмите ESC, чтобы вернуться ......

View File

@@ -1,5 +1,5 @@
h - Приказује ове информације
F1 - Memdisk начин рада (само за мале WinPE/LiveCD имиџ фајлове)
L - Изаберите језик
F1 - Приказује ове информације
F2 - Покреће имиџ фајлове на локалном диску
F3 - Мења мени између TreeView <-> ListView
F4 - Покреће Windows/Linux на локалном диску
@@ -7,7 +7,8 @@ F5 - Алати
F6 - Учитава прилагођен GRUB2 мени
F7 - Мења између GUI <-> TEXT начина рада
m - Генерира хеш одабраног имиџ фајла (md5/sha1/sha256/sha512)
m/Ctrl+m - Генерира хеш одабраног имиџ фајла (md5/sha1/sha256/sha512)
d/Ctrl+d - Memdisk начин рада (само за мале WinPE/LiveCD имиџ фајлове)
w/Ctrl+w - WIMBOOT начин рада (само за стандардне Windows имиџ фајлове)
r/Ctrl+r - GRUB2 начин рада (само за неке Linux дистрибуције)
i/Ctrl+i - Компатибилни начин рада (само за тестирање)

View File

@@ -1,17 +1,19 @@
h - Yardım bilgilerini göster
F1 - Memdisk Modu başlatır(Yalnızca küçük WinPE/LiveCD ISO/IMG ler için bu modu kullanabilirsiniz)
F2 - Yerel diskteki dosyalara GÖZAT ve ÖNYÜKLE'meyi sağlar
L - Dil Seçimi
F1 - Yardım bilgilerini göster
F2 - Yerel diskteki önyükleme dosyalarına GÖZAT ve yerel diskten Önyükleme yap
F3 - Ventoy Menü modu olarak,Klasör görünümü(Treeview) ile Liste görünümü(ListView) arasında geçiş yapmayı sağlar.
F4 - Bilgisayarınızda yüklü olan Windows yada Linux işletim sistemini, sabit diskten başlatır.
F5 - Ventoy Araçlar menüsü
F6 - Özelleştirilmiş Grub2 menüsünü yükler
F7 - Grafik Modu(GUI Mode) ile Metin Modu(Text Mode) arasında geçiş yapmayı sağlar
F7 - Grafik Modu(GUI Mode) <--> Metin Modu(Text Mode) arasında geçiş yapmayı sağlar
m - İndirilen imaj dosyalarının hatasız indirildiğini teyit etmek için "md5/sha1/sha256/sha512" değerlerini kontrol etmeyi sağlar
m/Ctrl+m - İndirilen imaj dosyalarının hatasız indirildiğini teyit etmek için "md5/sha1/sha256/sha512" değerlerini kontrol etmeyi sağlar
d/Ctrl+d - Memdisk Modu başlatır(Yalnızca küçük WinPE/LiveCD ISO/IMG ler için bu modu kullanabilirsiniz)
w/Ctrl+w - WIMBOOT Modu çalıştırmayı sağlar(Sadece normal Windows ISO ları için)
r/Ctrl+r - Grub2 Modu çalıştırmayı sağlar (Sadece bazı Linux dağıtımları için)
i/Ctrl+i - Uyumluluk Modu'nu (Compatible Mode) çalıştırmayı sağlar (Sadece hata ayıklama için bu modu kullanabilirsiniz)
u/Ctrl+u - ISO efi sürücüsünü yükler(Sadece hata ayıklama için bu mod kullanılabilir, resmi olarak kullanılamaz)
Geriye dönmek için ESC tuşuna basınız......

View File

@@ -1,5 +1,5 @@
h - 显示本帮助信息
F1 - 把文件加载到内存启动(只适用于文件很小的 WinPE/LiveCD等
L - 选择语言
F1 - 显示本帮助信息
F2 - 浏览并启动本地硬盘中的镜像文件
F3 - 菜单显示模式切换。可在列表模式和目录模式之间自由切换。
F4 - 启动本地硬盘上的 Windows/Linux 等系统。
@@ -7,7 +7,8 @@ F5 - 各类工具
F6 - 加载自定义 GRUB2 菜单。
F7 - 界面在文本模式和图形模式之间切换。
m - 计算文件校验值md5/sha1/sha256/sha512
m/Ctrl+m - 计算文件校验值md5/sha1/sha256/sha512
d/Ctrl+d - MEMDISK 模式,把文件加载到内存启动(只适用于文件很小的 WinPE/LiveCD等
w/Ctrl+w - WIMBOOT 模式 (只适用于标准的 Windows ISO文件
r/Ctrl+r - Grub2 模式 (只适用于常见的一些 Linux 系统ISO文件
i/Ctrl+i - 兼容模式 (只用作调试目的,不能正式使用)

View File

@@ -1,4 +1,4 @@
menuentry 'Hardware Information' --class=debug_hwinfo --class=F5tool {
menuentry '@VTMENU_HWINFO' --class=debug_hwinfo --class=F5tool {
smbios -t 4 -s 0x10 --set=cpu_brand
set system_vendor="-";

View File

@@ -1,4 +1,4 @@
submenu "Keyboard Layouts" --class=debug_krdlayout --class=F5tool {
submenu "@VTMENU_KEYBRD_LAYOUT" --class=debug_krdlayout --class=F5tool {
menuentry QWERTY_USA --class=debug_kbd --class=debug_krdlayout --class=F5tool {
set_keyboard_layout QWERTY_USA
}

View File

@@ -1,6 +1,6 @@
if [ "$grub_platform" = "pc" ]; then
menuentry 'Search and boot Windows' --class=boot_windows --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_WINDOWS' --class=boot_windows --class=F4boot {
set partid=3
while [ $partid -le 128 ]; do
@@ -38,7 +38,7 @@ if [ "$grub_platform" = "pc" ]; then
fi
}
menuentry 'Search and boot Grub4dos' --class=boot_g4d --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_G4D' --class=boot_g4d --class=F4boot {
if search -n -s -f /grldr; then
ntldr /grldr
else
@@ -46,19 +46,19 @@ if [ "$grub_platform" = "pc" ]; then
fi
}
menuentry 'Boot the 1st local disk' --class=boot_disk --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_HDD1' --class=boot_disk --class=F4boot {
set root=(hd0,1)
chainloader +1
boot
}
menuentry 'Boot the 2nd local disk' --class=boot_disk --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_HDD2' --class=boot_disk --class=F4boot {
set root=(hd1,1)
chainloader +1
boot
}
menuentry 'Boot the 3rd local disk' --class=boot_disk --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_HDD3' --class=boot_disk --class=F4boot {
set root=(hd2,1)
chainloader +1
boot
@@ -66,7 +66,7 @@ if [ "$grub_platform" = "pc" ]; then
else
menuentry 'Search and boot Windows' --class=boot_windows --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_WINDOWS' --class=boot_windows --class=F4boot {
set partid=3
while [ $partid -le 128 ]; do
@@ -102,7 +102,7 @@ else
}
if [ "$grub_cpu" = "i386" ]; then
menuentry 'Search and boot BOOTIA32.EFI' --class=boot_uefi --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_IA32EFI' --class=boot_uefi --class=F4boot {
set VTOY_SEARCH_NO_VTOYEFI=1
if search -n -s -f /efi/boot/bootia32.efi; then
unset VTOY_SEARCH_NO_VTOYEFI
@@ -115,7 +115,7 @@ else
fi
}
menuentry 'Search and boot xorboot' --class=boot_xorboot --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_XORBOOT' --class=boot_xorboot --class=F4boot {
set VTOY_SEARCH_NO_VTOYEFI=1
if search -n -s -f /efi/xorboot/xorboot32.xor; then
unset VTOY_SEARCH_NO_VTOYEFI
@@ -132,7 +132,7 @@ else
fi
}
elif [ "$grub_cpu" = "arm64" ]; then
menuentry 'Search and boot BOOTAA64.EFI' --class=boot_uefi --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_AA64EFI' --class=boot_uefi --class=F4boot {
set VTOY_SEARCH_NO_VTOYEFI=1
if search -n -s -f /efi/boot/bootaa64.efi; then
unset VTOY_SEARCH_NO_VTOYEFI
@@ -145,7 +145,7 @@ else
fi
}
else
menuentry 'Search and boot BOOTX64.EFI' --class=boot_uefi --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_X64EFI' --class=boot_uefi --class=F4boot {
set VTOY_SEARCH_NO_VTOYEFI=1
if search -n -s -f /efi/boot/bootx64.efi; then
unset VTOY_SEARCH_NO_VTOYEFI
@@ -158,7 +158,7 @@ else
fi
}
menuentry 'Search and boot xorboot' --class=boot_xorboot --class=F4boot {
menuentry '@VTMENU_LB_SBOOT_XORBOOT' --class=boot_xorboot --class=F4boot {
set VTOY_SEARCH_NO_VTOYEFI=1
if search -n -s -f /efi/xorboot/xorboot.xor; then
unset VTOY_SEARCH_NO_VTOYEFI
@@ -179,6 +179,6 @@ else
fi
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Bengali (বাংলা)",
"VTMENU_STR_HOTKEY_LIST": "L:ভাষা F1:সাহায্য F2:Browser F3:ListView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:ভাষা F1:সাহায্য F2:Browser F3:TreeView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "পূর্ববর্তী মেনুতে ফিরে যান [Esc]",
"VTMENU_MENU_LANG": "মেনু ভাষা নির্বাচন করুন",
"VTMENU_LB_SBOOT_WINDOWS": "Windows অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_LB_SBOOT_G4D": "Grub4dos অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_LB_SBOOT_HDD1": "১ম(1st) স্থানীয় ডিস্ক বুট করুন",
"VTMENU_LB_SBOOT_HDD2": "২য়(2nd) স্থানীয় ডিস্ক বুট করুন",
"VTMENU_LB_SBOOT_HDD3": "3য়(3rd) স্থানীয় ডিস্ক বুট করুন",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_LB_SBOOT_XORBOOT": "xorboot অনুসন্ধান করুন এবং বুট করুন",
"VTMENU_FILE_CHKSUM": "ফাইল চেকসাম",
"VTMENU_CHKSUM_MD5_CALC": "md5sum গণনা করুন",
"VTMENU_CHKSUM_SHA1_CALC": "sha1sum গণনা করুন",
"VTMENU_CHKSUM_SHA256_CALC": "sha256sum গণনা করুন",
"VTMENU_CHKSUM_SHA512_CALC": "sha512sum গণনা করুন",
"VTMENU_CHKSUM_MD5_CALC_CHK": "গণনা করুন এবং md5sum চেক করুন",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "গণনা করুন এবং sha1sum চেক করুন",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "গণনা করুন এবং sha256sum চেক করুন",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "গণনা করুন এবং sha512sum চেক করুন",
"VTMENU_POWER": "পাওয়ার",
"VTMENU_POWER_REBOOT": "রিবুট",
"VTMENU_POWER_HALT": "হল্ট",
"VTMENU_POWER_BOOT_EFIFW": "EFI সেটআপে রিবুট করুন",
"VTMENU_KEYBRD_LAYOUT": "কীবোর্ড লেআউট",
"VTMENU_HWINFO": "হার্ডওয়্যার তথ্য",
"VTMENU_RESOLUTION_CFG": "রেজোলিউশন কনফিগারেশন",
"VTMENU_SCREEN_MODE": "Screen Display মোড",
"VTMENU_SCREEN_TEXT_MODE": "Force Text মোড",
"VTMENU_SCREEN_GUI_MODE": "Force Graphics মোড",
"VTMENU_THEME_SELECT": "থিম নির্বাচন করুন",
"VTMENU_UTIL_SHOW_EFI_DRV": "EFI ড্রাইভার দেখান",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Windows BlinitializeLibrary ব্যর্থতার সমাধান করুন",
"VTMENU_JSON_CHK_JSON": "প্লাগইন json কনফিগারেশন পরীক্ষা করুন (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "গ্লোবাল কন্ট্রোল প্লাগইন কনফিগারেশন চেক করুন",
"VTMENU_JSON_CHK_THEME": "থিম প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_AUTOINS": "অটো ইন্সটল প্লাগইন কনফিগারেশন চেক করুন",
"VTMENU_JSON_CHK_PERSIST": "persistence প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_MENU_ALIAS": "menu alias প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_MENU_TIP": "menu tip প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_MENU_CLASS": "menu class প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_INJECTION": "injection প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "auto memdisk প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_IMG_LIST": "image list প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_IMG_BLIST": "image blacklist প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_CONF_REPLACE": "boot conf replace প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_DUD": "dud প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_JSON_CHK_PASSWORD": "password প্লাগইন কনফিগারেশন পরীক্ষা করুন",
"VTMENU_NORMAL_MODE": "সাধারণ মোডে বুট করুন",
"VTMENU_WIMBOOT_MODE": "wimboot মোডে বুট করুন",
"VTMENU_GRUB2_MODE": "grub2 মোডে বুট করুন",
"VTMENU_MEMDISK_MODE": "memdisk মোডে বুট করুন",
"VTMENU_RET_TO_LISTVIEW": "ListView-এ ফিরে যান",
"VTMENU_RET_TO_TREEVIEW": "TreeView-এ ফিরে যান",
"VTMENU_NO_AUTOINS_SCRIPT": "auto install মোড বিনা বুট করুন",
"VTMENU_AUTOINS_USE": "দিয়ে বুট করুন",
"VTMENU_NO_PERSIST": "persistence বিনা বুট করুন",
"VTMENU_PERSIST_USE": "দিয়ে বুট করুন",
"VTMENU_BROWER_RETURN": "ফিরে",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "German (Deutsch)",
"VTMENU_STR_HOTKEY_LIST": "L:Sprache F1:Hilfe F2:Browser F3:Listenansicht F4:Lokaler Start F5:Werkzeuge F6:Erweitert",
"VTMENU_STR_HOTKEY_TREE": "L:Sprache F1:Hilfe F2:Browser F3:Listenansicht F4:Lokaler Start F5:Werkzeuge F6:Erweitert",
"VTMENU_RETURN_PREVIOUS": "Zu vorherigem Menü [Esc]",
"VTMENU_MENU_LANG": "Menüsprache auswählen",
"VTMENU_LB_SBOOT_WINDOWS": "Windows suchen und starten",
"VTMENU_LB_SBOOT_G4D": "Grub4dos suchen und starten",
"VTMENU_LB_SBOOT_HDD1": "Vom ersten lokalen Datenträger starten",
"VTMENU_LB_SBOOT_HDD2": "Vom zweiten lokalen Datenträger starten",
"VTMENU_LB_SBOOT_HDD3": "Vom dritten lokalen Datenträger starten",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI suchen und starten",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI suchen und starten",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI suchen und starten",
"VTMENU_LB_SBOOT_XORBOOT": "xorboot suchen und starten",
"VTMENU_FILE_CHKSUM": "Dateiprüfsumme",
"VTMENU_CHKSUM_MD5_CALC": "md5sum berechnen",
"VTMENU_CHKSUM_SHA1_CALC": "sha1sum berechnen",
"VTMENU_CHKSUM_SHA256_CALC": "sha256sum berechnen",
"VTMENU_CHKSUM_SHA512_CALC": "sha512sum berechnen",
"VTMENU_CHKSUM_MD5_CALC_CHK": "md5sum berechnen und prüfen",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "sha1sum berechnen und prüfen",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "sha256sum berechnen und prüfen",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "sha512sum berechnen und prüfen",
"VTMENU_POWER": "Power",
"VTMENU_POWER_REBOOT": "Neustart",
"VTMENU_POWER_HALT": "Herunterfahren",
"VTMENU_POWER_BOOT_EFIFW": "Neustart in EFI-Konfiguration",
"VTMENU_KEYBRD_LAYOUT": "Tastaturlayout",
"VTMENU_HWINFO": "Hardwareinformationen",
"VTMENU_RESOLUTION_CFG": "Auflösungseinstellungen",
"VTMENU_SCREEN_MODE": "Bildschirmanzeigemodus",
"VTMENU_SCREEN_TEXT_MODE": "Textmodus erzwingen",
"VTMENU_SCREEN_GUI_MODE": "Grafikmodus erzwingen",
"VTMENU_THEME_SELECT": "Design auswählen",
"VTMENU_UTIL_SHOW_EFI_DRV": "EFI-Treiber anzeigen",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Windows BlinitializeLibrary Fehler beheben",
"VTMENU_JSON_CHK_JSON": "Konfiguration des JSON-Plugins prüfen (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Konfiguration des Plugins für die allgemeine Kontrolle prüfen",
"VTMENU_JSON_CHK_THEME": "Konfiguration des Design-Plugins prüfen",
"VTMENU_JSON_CHK_AUTOINS": "Konfiguration des Plugins für die automatische Installation prüfen",
"VTMENU_JSON_CHK_PERSIST": "Konfiguration des Persistenz-Plugins prüfen",
"VTMENU_JSON_CHK_MENU_ALIAS": "Konfiguration des Menü-Alias-Plugin prüfen",
"VTMENU_JSON_CHK_MENU_TIP": "Konfiguration des Menütipp-Plugins prüfen",
"VTMENU_JSON_CHK_MENU_CLASS": "Konfiguration des Menüklassen-Plugins prüfen",
"VTMENU_JSON_CHK_INJECTION": "Konfiguration des Injektions-Plugins prüfen",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Konfiguration des auto-memdisk-Plugins prüfen",
"VTMENU_JSON_CHK_IMG_LIST": "Konfiguration des Abbild-Listen-Plugins prüfen",
"VTMENU_JSON_CHK_IMG_BLIST": "Konfiguration des Abbild-Sperrlisten-Plugins prüfen",
"VTMENU_JSON_CHK_CONF_REPLACE": "Konfiguration des Boot-Conf-Replace-Plugins prüfen",
"VTMENU_JSON_CHK_DUD": "Konfiguration des dud-Plugins prüfen",
"VTMENU_JSON_CHK_PASSWORD": "Konfiguration des Passwort-Plugins prüfen",
"VTMENU_NORMAL_MODE": "In Normal-Modus starten",
"VTMENU_WIMBOOT_MODE": "In wimboot-Modus starten",
"VTMENU_GRUB2_MODE": "In grub2-Modus starten",
"VTMENU_MEMDISK_MODE": "In memdisk-Modus starten",
"VTMENU_RET_TO_LISTVIEW": "Zurück zur Listenansicht",
"VTMENU_RET_TO_TREEVIEW": "Zurück zur Baumansicht",
"VTMENU_NO_AUTOINS_SCRIPT": "Ohne Vorlage für die automatische Installation starten",
"VTMENU_AUTOINS_USE": "Start mit",
"VTMENU_NO_PERSIST": "Ohne Persistenz starten",
"VTMENU_PERSIST_USE": "Start mit",
"VTMENU_BROWER_RETURN": "Zurück",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "English (English)",
"VTMENU_STR_HOTKEY_LIST": "L:Language F1:Help F2:Browse F3:ListView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:Language F1:Help F2:Browse F3:TreeView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "Return to previous menu [Esc]",
"VTMENU_MENU_LANG": "Menu Language Select",
"VTMENU_LB_SBOOT_WINDOWS": "Search and boot Windows",
"VTMENU_LB_SBOOT_G4D": "Search and boot Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Boot the 1st local disk",
"VTMENU_LB_SBOOT_HDD2": "Boot the 2nd local disk",
"VTMENU_LB_SBOOT_HDD3": "Boot the 3rd local disk",
"VTMENU_LB_SBOOT_X64EFI": "Search and boot BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Search and boot BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Search and boot BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Search and boot xorboot",
"VTMENU_FILE_CHKSUM": "File checksum",
"VTMENU_CHKSUM_MD5_CALC": "Calculate md5sum",
"VTMENU_CHKSUM_SHA1_CALC": "Calculate sha1sum",
"VTMENU_CHKSUM_SHA256_CALC": "Calculate sha256sum",
"VTMENU_CHKSUM_SHA512_CALC": "Calculate sha512sum",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calculate and check md5sum",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calculate and check sha1sum",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calculate and check sha256sum",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calculate and check sha512sum",
"VTMENU_POWER": "Power",
"VTMENU_POWER_REBOOT": "Reboot",
"VTMENU_POWER_HALT": "Halt",
"VTMENU_POWER_BOOT_EFIFW": "Reboot to EFI setup",
"VTMENU_KEYBRD_LAYOUT": "Keyboard Layouts",
"VTMENU_HWINFO": "Hardware Information",
"VTMENU_RESOLUTION_CFG": "Resolution Configuration",
"VTMENU_SCREEN_MODE": "Screen Display Mode",
"VTMENU_SCREEN_TEXT_MODE": "Force Text Mode",
"VTMENU_SCREEN_GUI_MODE": "Force Graphics Mode",
"VTMENU_THEME_SELECT": "Theme Select",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Boot in normal mode",
"VTMENU_WIMBOOT_MODE": "Boot in wimboot mode",
"VTMENU_GRUB2_MODE": "Boot in grub2 mode",
"VTMENU_MEMDISK_MODE": "Boot in memdisk mode",
"VTMENU_RET_TO_LISTVIEW": "Return to ListView",
"VTMENU_RET_TO_TREEVIEW": "Return to TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Return",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "French (Français)",
"VTMENU_STR_HOTKEY_LIST": "L:Langue F1:Aider F2:Parcourir F3:AffichageListe F4:Localboot F5:Outils F6:Menu étendu",
"VTMENU_STR_HOTKEY_TREE": "L:Langue F1:Aider F2:Parcourir F3:AffichageListe F4:Localboot F5:Outils F6:Menu étendu",
"VTMENU_RETURN_PREVIOUS": "Retour au menu précédent [Esc]",
"VTMENU_MENU_LANG": "Sélection de la langue des menus",
"VTMENU_LB_SBOOT_WINDOWS": "Rechercher et démarrer Windows",
"VTMENU_LB_SBOOT_G4D": "Rechercher et démarrer Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Démarrez le 1er disque local",
"VTMENU_LB_SBOOT_HDD2": "Démarrez le 2ème disque local",
"VTMENU_LB_SBOOT_HDD3": "Démarrez le 3ème disque local",
"VTMENU_LB_SBOOT_X64EFI": "Rechercher et démarrer BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Rechercher et démarrer BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Rechercher et démarrer BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Rechercher et démarrer xorboot",
"VTMENU_FILE_CHKSUM": "Somme de contrôle du fichier",
"VTMENU_CHKSUM_MD5_CALC": "Calculer MD5",
"VTMENU_CHKSUM_SHA1_CALC": "Calculer SHA1",
"VTMENU_CHKSUM_SHA256_CALC": "Calculer SHA256",
"VTMENU_CHKSUM_SHA512_CALC": "Calculer SHA512",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calculer et vérifier MD5",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calculer et vérifier SHA1",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calculer et vérifier SHA256",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calculer et vérifier SHA512",
"VTMENU_POWER": "Source d'alimentation",
"VTMENU_POWER_REBOOT": "Redémarrer",
"VTMENU_POWER_HALT": "Éteindre",
"VTMENU_POWER_BOOT_EFIFW": "Redémarrez avec la configuration EFI",
"VTMENU_KEYBRD_LAYOUT": "Dispositions de clavier",
"VTMENU_HWINFO": "Informations sur le matériel",
"VTMENU_RESOLUTION_CFG": "Configuration de la résolution",
"VTMENU_SCREEN_MODE": "Mode d'affichage",
"VTMENU_SCREEN_TEXT_MODE": "Mode texte",
"VTMENU_SCREEN_GUI_MODE": "Mode graphique",
"VTMENU_THEME_SELECT": "Sélection de thème",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Démarrez en mode normal",
"VTMENU_WIMBOOT_MODE": "Démarrez en mode wimboot",
"VTMENU_GRUB2_MODE": "Démarrez en mode grub2",
"VTMENU_MEMDISK_MODE": "Démarrez en mode memdisk",
"VTMENU_RET_TO_LISTVIEW": "Revenir à ListView",
"VTMENU_RET_TO_TREEVIEW": "Revenir à TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Revenir",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Hindi (हिन्दी)",
"VTMENU_STR_HOTKEY_LIST": "L:भाषा F1:मदद F2:ब्राउज़र F3:ListView F4:स्थानीयबूट F5:उपकरण F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:भाषा F1:मदद F2:ब्राउज़र F3:TreeView F4:स्थानीयबूट F5:उपकरण F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "पिछले मेनू पर लौटें [Esc]",
"VTMENU_MENU_LANG": "मेनू भाषा का चयन करें",
"VTMENU_LB_SBOOT_WINDOWS": "Windows खोजें और बूट करें",
"VTMENU_LB_SBOOT_G4D": "Grub4dos खोजें और बूट करें",
"VTMENU_LB_SBOOT_HDD1": "पहली(1st) स्थानीय डिस्क को बूट करें",
"VTMENU_LB_SBOOT_HDD2": "दूसरी(2nd) स्थानीय डिस्क बूट करें",
"VTMENU_LB_SBOOT_HDD3": "तीसरी(3rd) स्थानीय डिस्क बूट करें",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI खोजें और बूट करें",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI खोजें और बूट करें",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI खोजें और बूट करें",
"VTMENU_LB_SBOOT_XORBOOT": "xorboot खोजें और बूट करें",
"VTMENU_FILE_CHKSUM": "फ़ाइल चेकसम",
"VTMENU_CHKSUM_MD5_CALC": "Md5sum की गणना करें",
"VTMENU_CHKSUM_SHA1_CALC": "sha1sum की गणना करें",
"VTMENU_CHKSUM_SHA256_CALC": "sha256sum की गणना करें",
"VTMENU_CHKSUM_SHA512_CALC": "sha512sum की गणना करें",
"VTMENU_CHKSUM_MD5_CALC_CHK": "md5sum की गणना और जाँच करें",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "sha1sum की गणना और जाँच करें",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "sha256sum की गणना और जाँच करें",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "sha512sum की गणना और जाँच करें",
"VTMENU_POWER": "पावर",
"VTMENU_POWER_REBOOT": "रीबूट",
"VTMENU_POWER_HALT": "हाल्ट",
"VTMENU_POWER_BOOT_EFIFW": "EFI सेटअप के लिए रीबूट करें",
"VTMENU_KEYBRD_LAYOUT": "कीबोर्ड लेआउट",
"VTMENU_HWINFO": "हार्डवेयर की जानकारी",
"VTMENU_RESOLUTION_CFG": "रिज़ॉल्यूशन कॉन्फ़िगरेशन",
"VTMENU_SCREEN_MODE": "Screen Display मोड",
"VTMENU_SCREEN_TEXT_MODE": "फोर्स Text मोड",
"VTMENU_SCREEN_GUI_MODE": "फोर्स Graphics मोड",
"VTMENU_THEME_SELECT": "थीम का चयन",
"VTMENU_UTIL_SHOW_EFI_DRV": "EFI ड्राइवर्स दिखाएं",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Windows BlinitializeLibrary विफलता को ठीक करें",
"VTMENU_JSON_CHK_JSON": "प्लगइन json विन्यास की जाँच करें (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "global control प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_THEME": "theme प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_AUTOINS": "auto install प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_PERSIST": "persistence प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_MENU_ALIAS": "menu alias प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_MENU_TIP": "menu tip प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_MENU_CLASS": "menu class प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_INJECTION": "injection प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "auto memdisk प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_IMG_LIST": "image list प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_IMG_BLIST": "image blacklist प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_CONF_REPLACE": "boot conf replace प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_DUD": "dud प्लगइन विन्यास की जाँच करें",
"VTMENU_JSON_CHK_PASSWORD": "password प्लगइन विन्यास की जाँच करें",
"VTMENU_NORMAL_MODE": "सामान्य मोड में बूट करें",
"VTMENU_WIMBOOT_MODE": "wimboot मोड में बूट करें",
"VTMENU_GRUB2_MODE": "grub2 मोड में बूट करें",
"VTMENU_MEMDISK_MODE": "memdisk मोड में बूट करें",
"VTMENU_RET_TO_LISTVIEW": "ListView पर वापस जाएँ",
"VTMENU_RET_TO_TREEVIEW": "TreeView पर वापस जाएँ",
"VTMENU_NO_AUTOINS_SCRIPT": "ऑटो इंस्टॉलेशन टेम्पलेट के बिना बूट करें",
"VTMENU_AUTOINS_USE": "के साथ बूट करें",
"VTMENU_NO_PERSIST": "बिना persistence के बूट करें",
"VTMENU_PERSIST_USE": "के साथ बूट करें",
"VTMENU_BROWER_RETURN": "लौटें",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Croatian (Hrvatski)",
"VTMENU_STR_HOTKEY_LIST": "L:Jezik F1:Help F2:Browse F3:ListView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:Jezik F1:Help F2:Browse F3:TreeView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "Return to previous menu [Esc]",
"VTMENU_MENU_LANG": "Menu Language Select",
"VTMENU_LB_SBOOT_WINDOWS": "Search and boot Windows",
"VTMENU_LB_SBOOT_G4D": "Search and boot Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Boot the 1st local disk",
"VTMENU_LB_SBOOT_HDD2": "Boot the 2nd local disk",
"VTMENU_LB_SBOOT_HDD3": "Boot the 3rd local disk",
"VTMENU_LB_SBOOT_X64EFI": "Search and boot BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Search and boot BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Search and boot BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Search and boot xorboot",
"VTMENU_FILE_CHKSUM": "File checksum",
"VTMENU_CHKSUM_MD5_CALC": "Calculate md5sum",
"VTMENU_CHKSUM_SHA1_CALC": "Calculate sha1sum",
"VTMENU_CHKSUM_SHA256_CALC": "Calculate sha256sum",
"VTMENU_CHKSUM_SHA512_CALC": "Calculate sha512sum",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calculate and check md5sum",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calculate and check sha1sum",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calculate and check sha256sum",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calculate and check sha512sum",
"VTMENU_POWER": "Power",
"VTMENU_POWER_REBOOT": "Reboot",
"VTMENU_POWER_HALT": "Halt",
"VTMENU_POWER_BOOT_EFIFW": "Reboot to EFI setup",
"VTMENU_KEYBRD_LAYOUT": "Keyboard Layouts",
"VTMENU_HWINFO": "Hardware Information",
"VTMENU_RESOLUTION_CFG": "Resolution Configuration",
"VTMENU_SCREEN_MODE": "Screen Display Mode",
"VTMENU_SCREEN_TEXT_MODE": "Force Text Mode",
"VTMENU_SCREEN_GUI_MODE": "Force Graphics Mode",
"VTMENU_THEME_SELECT": "Theme Select",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Boot in normal mode",
"VTMENU_WIMBOOT_MODE": "Boot in wimboot mode",
"VTMENU_GRUB2_MODE": "Boot in grub2 mode",
"VTMENU_MEMDISK_MODE": "Boot in memdisk mode",
"VTMENU_RET_TO_LISTVIEW": "Return to ListView",
"VTMENU_RET_TO_TREEVIEW": "Return to TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Return",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Indonesian (Bahasa Indonesia)",
"VTMENU_STR_HOTKEY_LIST": "L:Bahasa F1:Help F2:Browse F3:ListView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:Bahasa F1:Help F2:Browse F3:TreeView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "Return to previous menu [Esc]",
"VTMENU_MENU_LANG": "Menu Language Select",
"VTMENU_LB_SBOOT_WINDOWS": "Search and boot Windows",
"VTMENU_LB_SBOOT_G4D": "Search and boot Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Boot the 1st local disk",
"VTMENU_LB_SBOOT_HDD2": "Boot the 2nd local disk",
"VTMENU_LB_SBOOT_HDD3": "Boot the 3rd local disk",
"VTMENU_LB_SBOOT_X64EFI": "Search and boot BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Search and boot BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Search and boot BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Search and boot xorboot",
"VTMENU_FILE_CHKSUM": "File checksum",
"VTMENU_CHKSUM_MD5_CALC": "Calculate md5sum",
"VTMENU_CHKSUM_SHA1_CALC": "Calculate sha1sum",
"VTMENU_CHKSUM_SHA256_CALC": "Calculate sha256sum",
"VTMENU_CHKSUM_SHA512_CALC": "Calculate sha512sum",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calculate and check md5sum",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calculate and check sha1sum",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calculate and check sha256sum",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calculate and check sha512sum",
"VTMENU_POWER": "Power",
"VTMENU_POWER_REBOOT": "Reboot",
"VTMENU_POWER_HALT": "Halt",
"VTMENU_POWER_BOOT_EFIFW": "Reboot to EFI setup",
"VTMENU_KEYBRD_LAYOUT": "Keyboard Layouts",
"VTMENU_HWINFO": "Hardware Information",
"VTMENU_RESOLUTION_CFG": "Resolution Configuration",
"VTMENU_SCREEN_MODE": "Screen Display Mode",
"VTMENU_SCREEN_TEXT_MODE": "Force Text Mode",
"VTMENU_SCREEN_GUI_MODE": "Force Graphics Mode",
"VTMENU_THEME_SELECT": "Theme Select",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Boot in normal mode",
"VTMENU_WIMBOOT_MODE": "Boot in wimboot mode",
"VTMENU_GRUB2_MODE": "Boot in grub2 mode",
"VTMENU_MEMDISK_MODE": "Boot in memdisk mode",
"VTMENU_RET_TO_LISTVIEW": "Return to ListView",
"VTMENU_RET_TO_TREEVIEW": "Return to TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Return",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Japanese (日本語)",
"VTMENU_STR_HOTKEY_LIST": "L:言語 F1:ヘルプ F2:ブラウズ F3:リストビュー F4:Localboot F5:ツール F6:拡張メニュー",
"VTMENU_STR_HOTKEY_TREE": "L:言語 F1:ヘルプ F2:ブラウズ F3:ツリー表示 F4:Localboot F5:ツール F6:拡張メニュー",
"VTMENU_RETURN_PREVIOUS": "前のメニューに戻る [Esc]",
"VTMENU_MENU_LANG": "メニュー言語選択",
"VTMENU_LB_SBOOT_WINDOWS": "Windows を検索して起動する",
"VTMENU_LB_SBOOT_G4D": "Grub4dos を検索して起動する",
"VTMENU_LB_SBOOT_HDD1": "最初のローカル ディスクを起動します",
"VTMENU_LB_SBOOT_HDD2": "2 番目のローカル ディスクを起動する",
"VTMENU_LB_SBOOT_HDD3": "3 番目のローカル ディスクを起動する",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI を検索して起動する",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI を検索して起動する",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI を検索して起動する",
"VTMENU_LB_SBOOT_XORBOOT": "xorboot を検索して起動する",
"VTMENU_FILE_CHKSUM": "ファイルのチェックサム",
"VTMENU_CHKSUM_MD5_CALC": "MD5 を計算する",
"VTMENU_CHKSUM_SHA1_CALC": "SHA1 を計算する",
"VTMENU_CHKSUM_SHA256_CALC": "SHA256 を計算する",
"VTMENU_CHKSUM_SHA512_CALC": "SHA512 を計算する",
"VTMENU_CHKSUM_MD5_CALC_CHK": "MD5 を計算して確認する",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "SHA1 を計算して確認する",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "SHA256 を計算して確認する",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "SHA512 を計算して確認する",
"VTMENU_POWER": "電源",
"VTMENU_POWER_REBOOT": "リブート",
"VTMENU_POWER_HALT": "電源を切る",
"VTMENU_POWER_BOOT_EFIFW": "再起動して EFI セットアップ",
"VTMENU_KEYBRD_LAYOUT": "キーボード・レイアウト",
"VTMENU_HWINFO": "ハードウェア情報",
"VTMENU_RESOLUTION_CFG": "画面の解像度",
"VTMENU_SCREEN_MODE": "ディスプレイモード",
"VTMENU_SCREEN_TEXT_MODE": "テキストモード",
"VTMENU_SCREEN_GUI_MODE": "グラフィックモード",
"VTMENU_THEME_SELECT": "テーマを選ぶ",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "プラグインの json 構成を確認する (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Global Control プラグインの構成を確認する",
"VTMENU_JSON_CHK_THEME": "Theme プラグインの構成を確認する",
"VTMENU_JSON_CHK_AUTOINS": "Auto install プラグインの構成を確認する",
"VTMENU_JSON_CHK_PERSIST": "Persistence プラグインの構成を確認する",
"VTMENU_JSON_CHK_MENU_ALIAS": "Menu alias プラグインの構成を確認する",
"VTMENU_JSON_CHK_MENU_TIP": "Menu tip プラグインの構成を確認する",
"VTMENU_JSON_CHK_MENU_CLASS": "Menu class プラグインの構成を確認する",
"VTMENU_JSON_CHK_INJECTION": "Injection プラグインの構成を確認する",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Auto memdisk プラグインの構成を確認する",
"VTMENU_JSON_CHK_IMG_LIST": "Image list プラグインの構成を確認する",
"VTMENU_JSON_CHK_IMG_BLIST": "Image black list プラグインの構成を確認する",
"VTMENU_JSON_CHK_CONF_REPLACE": "Boot conf replace プラグインの構成を確認する",
"VTMENU_JSON_CHK_DUD": "DUD プラグインの構成を確認する",
"VTMENU_JSON_CHK_PASSWORD": "Password プラグインの構成を確認する",
"VTMENU_NORMAL_MODE": "通常モードで起動",
"VTMENU_WIMBOOT_MODE": "wimboot モードで起動",
"VTMENU_GRUB2_MODE": "grub2 モードで起動",
"VTMENU_MEMDISK_MODE": "memdisk モードで起動",
"VTMENU_RET_TO_LISTVIEW": "リストビューに戻る",
"VTMENU_RET_TO_TREEVIEW": "ツリー ビューに戻る",
"VTMENU_NO_AUTOINS_SCRIPT": "自動インストール テンプレートを使用しない",
"VTMENU_AUTOINS_USE": "使用する",
"VTMENU_NO_PERSIST": "データ永続性を使用しない",
"VTMENU_PERSIST_USE": "使用する",
"VTMENU_BROWER_RETURN": "戻る",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Korean (한국어)",
"VTMENU_STR_HOTKEY_LIST": "L:언어 F1:도움말 F2:찾아보기 F3:목록 보기 F4:로컬 부트 F5:도구 F6:확장 메뉴",
"VTMENU_STR_HOTKEY_TREE": "L:언어 F1:도움말 F2:찾아보기 F3:목록 보기 F4:로컬 부트 F5:도구 F6:확장 메뉴",
"VTMENU_RETURN_PREVIOUS": "이전 메뉴로 돌아가기 [Esc]",
"VTMENU_MENU_LANG": "메뉴 언어 선택 (번역: 비너스걸)",
"VTMENU_LB_SBOOT_WINDOWS": "Windows 검색 및 부트",
"VTMENU_LB_SBOOT_G4D": "Grub4dos 검색 및 부트",
"VTMENU_LB_SBOOT_HDD1": "첫 번째 로컬 디스크 부트",
"VTMENU_LB_SBOOT_HDD2": "두 번째 로컬 디스크 부트",
"VTMENU_LB_SBOOT_HDD3": "세 번째 로컬 디스크 부트",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI 검색 및 부트",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI 검색 및 부트",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI 검색 및 부트",
"VTMENU_LB_SBOOT_XORBOOT": "xorboot 검색 및 부트",
"VTMENU_FILE_CHKSUM": "파일 체크섬",
"VTMENU_CHKSUM_MD5_CALC": "md5sum 계산",
"VTMENU_CHKSUM_SHA1_CALC": "sha1sum 계산",
"VTMENU_CHKSUM_SHA256_CALC": "sha256sum 계산",
"VTMENU_CHKSUM_SHA512_CALC": "sha512sum 계산",
"VTMENU_CHKSUM_MD5_CALC_CHK": "md5sum 계산 및 확인",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "sha1sum 계산 및 확인",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "sha256sum 계산 및 확인",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "sha512sum 계산 및 확인",
"VTMENU_POWER": "전원",
"VTMENU_POWER_REBOOT": "다시 부트",
"VTMENU_POWER_HALT": "끄기",
"VTMENU_POWER_BOOT_EFIFW": "EFI 설정으로 재부트",
"VTMENU_KEYBRD_LAYOUT": "키보드 레이아웃",
"VTMENU_HWINFO": "하드웨어 정보",
"VTMENU_RESOLUTION_CFG": "해상도 구성",
"VTMENU_SCREEN_MODE": "화면 표시 모드",
"VTMENU_SCREEN_TEXT_MODE": "강제 텍스트 모드",
"VTMENU_SCREEN_GUI_MODE": "강제 그래픽 모드",
"VTMENU_THEME_SELECT": "테마 선택",
"VTMENU_UTIL_SHOW_EFI_DRV": "EFI 드라이버 표시",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Windows 초기화 라이브러리 오류 복구",
"VTMENU_JSON_CHK_JSON": "플러그인 json 구성 확인 (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "전역 제어 플러그인 구성 확인",
"VTMENU_JSON_CHK_THEME": "테마 플러그인 구성 확인",
"VTMENU_JSON_CHK_AUTOINS": "자동 설치 플러그인 구성 확인",
"VTMENU_JSON_CHK_PERSIST": "지속성 플러그인 구성 확인",
"VTMENU_JSON_CHK_MENU_ALIAS": "메뉴 별칭 플러그인 구성 확인",
"VTMENU_JSON_CHK_MENU_TIP": "메뉴 팁 플러그인 구성 확인",
"VTMENU_JSON_CHK_MENU_CLASS": "메뉴 클래스 플러그인 구성 확인",
"VTMENU_JSON_CHK_INJECTION": "주입 플러그인 구성 확인",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "자동 메모리 디스크 플러그인 구성 확인",
"VTMENU_JSON_CHK_IMG_LIST": "이미지 목록 플러그인 구성 확인",
"VTMENU_JSON_CHK_IMG_BLIST": "이미지 블랙리스트 플러그인 구성 확인",
"VTMENU_JSON_CHK_CONF_REPLACE": "부팅 구성 대체 플러그인 구성 확인",
"VTMENU_JSON_CHK_DUD": "드라이버 디스크 업데이트 플러그인 구성 확인",
"VTMENU_JSON_CHK_PASSWORD": "암호 플러그인 구성 확인",
"VTMENU_NORMAL_MODE": "정상 모드로 부트",
"VTMENU_WIMBOOT_MODE": "wimboot 모드로 부트",
"VTMENU_GRUB2_MODE": "grub2 모드로 부팅",
"VTMENU_MEMDISK_MODE": "memdisk 모드로 부트",
"VTMENU_RET_TO_LISTVIEW": "목록 보기로 돌아가기",
"VTMENU_RET_TO_TREEVIEW": "트리 보기로 돌아가기",
"VTMENU_NO_AUTOINS_SCRIPT": "자동 설치 템플릿 없이 부트",
"VTMENU_AUTOINS_USE": "부팅 대상",
"VTMENU_NO_PERSIST": "지속성 없는 부트",
"VTMENU_PERSIST_USE": "부트 대상",
"VTMENU_BROWER_RETURN": "돌아가기",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Portuguese (Português de Portugal)",
"VTMENU_STR_HOTKEY_LIST": "L:Língua F1:Ajuda F2:Navegar F3:Exibição de lista F4:Inicialização local F5:Ferramentas F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:Língua F1:Ajuda F2:Navegar F3:TreeView F4:Inicialização local F5:Ferramentas F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "Return to previous menu [Esc]",
"VTMENU_MENU_LANG": "Seleção de idioma do menu",
"VTMENU_LB_SBOOT_WINDOWS": "Pesquise e inicialize o Windows",
"VTMENU_LB_SBOOT_G4D": "Pesquise e inicialize o Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Inicialize o 1º disco local",
"VTMENU_LB_SBOOT_HDD2": "Inicialize o segundo disco local",
"VTMENU_LB_SBOOT_HDD3": "Inicialize o terceiro disco local",
"VTMENU_LB_SBOOT_X64EFI": "Pesquise e inicialize o BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Pesquise e inicialize o BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Pesquise e inicialize o BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Pesquise e inicialize o xorboot",
"VTMENU_FILE_CHKSUM": "Soma de verificação do arquivo",
"VTMENU_CHKSUM_MD5_CALC": "Calcular MD5",
"VTMENU_CHKSUM_SHA1_CALC": "Calcular SHA1",
"VTMENU_CHKSUM_SHA256_CALC": "Calcular SHA256",
"VTMENU_CHKSUM_SHA512_CALC": "Calcular SHA512",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calcular e verificar MD5",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calcular e verificar SHA1",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calcular e verificar SHA256",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calcular e verificar SHA512",
"VTMENU_POWER": "Fonte de energia",
"VTMENU_POWER_REBOOT": "Reinício",
"VTMENU_POWER_HALT": "Desligar",
"VTMENU_POWER_BOOT_EFIFW": "Reinicie a configuração EFI",
"VTMENU_KEYBRD_LAYOUT": "Layouts de teclado",
"VTMENU_HWINFO": "Informações de hardware",
"VTMENU_RESOLUTION_CFG": "Configuração de resolução",
"VTMENU_SCREEN_MODE": "Screen Modo de exibição",
"VTMENU_SCREEN_TEXT_MODE": "Modo de texto",
"VTMENU_SCREEN_GUI_MODE": "Modo gráfico",
"VTMENU_THEME_SELECT": "Seleção de tema",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Inicializar no modo normal",
"VTMENU_WIMBOOT_MODE": "Inicializar no modo wimboot",
"VTMENU_GRUB2_MODE": "Inicializar no modo grub2",
"VTMENU_MEMDISK_MODE": "Inicializar no modo memdisk",
"VTMENU_RET_TO_LISTVIEW": "Retornar para ListView",
"VTMENU_RET_TO_TREEVIEW": "Retornar para TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Retornar",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Russian (Русский)",
"VTMENU_STR_HOTKEY_LIST": "L:Язык F1:Помощь F2:Просмотр F3:ListView F4:Локальная загрузка F5:Инструменты F6:Выйти из меню",
"VTMENU_STR_HOTKEY_TREE": "L:Язык F1:Помощь F2:Просмотр F3:TreeView F4:Локальная загрузка F5:Инструменты F6:Выйти из меню",
"VTMENU_RETURN_PREVIOUS": "Вернуться в предыдущее меню [Esc]",
"VTMENU_MENU_LANG": "Выбор языка меню",
"VTMENU_LB_SBOOT_WINDOWS": "Найти и загрузить Windows",
"VTMENU_LB_SBOOT_G4D": "Найти и загрузить Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Загрузить 1-й локальный диск",
"VTMENU_LB_SBOOT_HDD2": "Загрузить 2-й локальный диск",
"VTMENU_LB_SBOOT_HDD3": "Загрузить 3-й локальный диск",
"VTMENU_LB_SBOOT_X64EFI": "Найти и загрузить OOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Найти и загрузить BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Найти и загрузить BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Найти и загрузить xorboot",
"VTMENU_FILE_CHKSUM": "Контрольная сумма файла",
"VTMENU_CHKSUM_MD5_CALC": "Вычислить md5sum",
"VTMENU_CHKSUM_SHA1_CALC": "Вычислить sha1sum",
"VTMENU_CHKSUM_SHA256_CALC": "Вычислить sha256sum",
"VTMENU_CHKSUM_SHA512_CALC": "Вычислить sha512sum",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Вычислить и проверить md5sum",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Вычислить и проверить sha1sum",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Вычислить и проверить sha256sum",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Вычислить и проверить sha512sum",
"VTMENU_POWER": "Включить",
"VTMENU_POWER_REBOOT": "Перезагрузить",
"VTMENU_POWER_HALT": "Остановить",
"VTMENU_POWER_BOOT_EFIFW": "Перезагрузиться в настройку EFI",
"VTMENU_KEYBRD_LAYOUT": "Раскладки клавиатуры",
"VTMENU_HWINFO": "Информация об оборудовании",
"VTMENU_RESOLUTION_CFG": "Конфигурация разрешения",
"VTMENU_SCREEN_MODE": "Режим Screen Display",
"VTMENU_SCREEN_TEXT_MODE": "Выбрать текстовый режим",
"VTMENU_SCREEN_GUI_MODE": "Выбрать графический режим",
"VTMENU_THEME_SELECT": "Выбор темы",
"VTMENU_UTIL_SHOW_EFI_DRV": "Показать драйверы EFI",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Исправить ошибку Windows BlinitializeLibrary",
"VTMENU_JSON_CHK_JSON": "Проверить конфигурацию плагина json (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Проверить конфигурацию плагина global control",
"VTMENU_JSON_CHK_THEME": "Проверить конфигурацию плагина theme",
"VTMENU_JSON_CHK_AUTOINS": "Проверить конфигурацию плагина auto install",
"VTMENU_JSON_CHK_PERSIST": "Проверить конфигурацию плагина persistence",
"VTMENU_JSON_CHK_MENU_ALIAS": "Проверить конфигурацию плагина menu alias",
"VTMENU_JSON_CHK_MENU_TIP": "Проверить конфигурацию плагина menu tip",
"VTMENU_JSON_CHK_MENU_CLASS": "Проверить конфигурацию плагина menu class",
"VTMENU_JSON_CHK_INJECTION": "Проверить конфигурацию плагина injection",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Проверить конфигурацию плагина auto memdisk",
"VTMENU_JSON_CHK_IMG_LIST": "Проверить конфигурацию плагина image list",
"VTMENU_JSON_CHK_IMG_BLIST": "Проверить конфигурацию плагина image blacklist",
"VTMENU_JSON_CHK_CONF_REPLACE": "Проверить конфигурацию плагина boot conf replace",
"VTMENU_JSON_CHK_DUD": "Проверить конфигурацию плагина dud",
"VTMENU_JSON_CHK_PASSWORD": "Проверить конфигурацию плагина password",
"VTMENU_NORMAL_MODE": "Загрузиться в обычном режиме",
"VTMENU_WIMBOOT_MODE": "Загрузиться в режиме wimboot",
"VTMENU_GRUB2_MODE": "Загрузиться в режиме grub2",
"VTMENU_MEMDISK_MODE": "Загрузиться в режиме memdisk",
"VTMENU_RET_TO_LISTVIEW": "Вернуться к ListView",
"VTMENU_RET_TO_TREEVIEW": "Вернуться к TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Загрузка без шаблона автоматической установки",
"VTMENU_AUTOINS_USE": "Загрузиться с",
"VTMENU_NO_PERSIST": "Загрузка без персистентности",
"VTMENU_PERSIST_USE": "Загрузиться с",
"VTMENU_BROWER_RETURN": "Вернуться",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Serbian Latin (Srpski)",
"VTMENU_STR_HOTKEY_LIST": "L:Језик F1:Help F2:Browse F3:ListView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_STR_HOTKEY_TREE": "L:Језик F1:Help F2:Browse F3:TreeView F4:Localboot F5:Tools F6:ExMenu",
"VTMENU_RETURN_PREVIOUS": "Return to previous menu [Esc]",
"VTMENU_MENU_LANG": "Menu Language Select",
"VTMENU_LB_SBOOT_WINDOWS": "Search and boot Windows",
"VTMENU_LB_SBOOT_G4D": "Search and boot Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "Boot the 1st local disk",
"VTMENU_LB_SBOOT_HDD2": "Boot the 2nd local disk",
"VTMENU_LB_SBOOT_HDD3": "Boot the 3rd local disk",
"VTMENU_LB_SBOOT_X64EFI": "Search and boot BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "Search and boot BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "Search and boot BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "Search and boot xorboot",
"VTMENU_FILE_CHKSUM": "File checksum",
"VTMENU_CHKSUM_MD5_CALC": "Calculate md5sum",
"VTMENU_CHKSUM_SHA1_CALC": "Calculate sha1sum",
"VTMENU_CHKSUM_SHA256_CALC": "Calculate sha256sum",
"VTMENU_CHKSUM_SHA512_CALC": "Calculate sha512sum",
"VTMENU_CHKSUM_MD5_CALC_CHK": "Calculate and check md5sum",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "Calculate and check sha1sum",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "Calculate and check sha256sum",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "Calculate and check sha512sum",
"VTMENU_POWER": "Power",
"VTMENU_POWER_REBOOT": "Reboot",
"VTMENU_POWER_HALT": "Halt",
"VTMENU_POWER_BOOT_EFIFW": "Reboot to EFI setup",
"VTMENU_KEYBRD_LAYOUT": "Keyboard Layouts",
"VTMENU_HWINFO": "Hardware Information",
"VTMENU_RESOLUTION_CFG": "Resolution Configuration",
"VTMENU_SCREEN_MODE": "Screen Display Mode",
"VTMENU_SCREEN_TEXT_MODE": "Force Text Mode",
"VTMENU_SCREEN_GUI_MODE": "Force Graphics Mode",
"VTMENU_THEME_SELECT": "Theme Select",
"VTMENU_UTIL_SHOW_EFI_DRV": "Show EFI Drivers",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Fixup Windows BlinitializeLibrary Failure",
"VTMENU_JSON_CHK_JSON": "Check plugin json configuration (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "Check global control plugin configuration",
"VTMENU_JSON_CHK_THEME": "Check theme plugin configuration",
"VTMENU_JSON_CHK_AUTOINS": "Check auto install plugin configuration",
"VTMENU_JSON_CHK_PERSIST": "Check persistence plugin configuration",
"VTMENU_JSON_CHK_MENU_ALIAS": "Check menu alias plugin configuration",
"VTMENU_JSON_CHK_MENU_TIP": "Check menu tip plugin configuration",
"VTMENU_JSON_CHK_MENU_CLASS": "Check menu class plugin configuration",
"VTMENU_JSON_CHK_INJECTION": "Check injection plugin configuration",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "Check auto memdisk plugin configuration",
"VTMENU_JSON_CHK_IMG_LIST": "Check image list plugin configuration",
"VTMENU_JSON_CHK_IMG_BLIST": "Check image blacklist plugin configuration",
"VTMENU_JSON_CHK_CONF_REPLACE": "Check boot conf replace plugin configuration",
"VTMENU_JSON_CHK_DUD": "Check dud plugin configuration",
"VTMENU_JSON_CHK_PASSWORD": "Check password plugin configuration",
"VTMENU_NORMAL_MODE": "Boot in normal mode",
"VTMENU_WIMBOOT_MODE": "Boot in wimboot mode",
"VTMENU_GRUB2_MODE": "Boot in grub2 mode",
"VTMENU_MEMDISK_MODE": "Boot in memdisk mode",
"VTMENU_RET_TO_LISTVIEW": "Return to ListView",
"VTMENU_RET_TO_TREEVIEW": "Return to TreeView",
"VTMENU_NO_AUTOINS_SCRIPT": "Boot without auto installation template",
"VTMENU_AUTOINS_USE": "Boot with",
"VTMENU_NO_PERSIST": "Boot without persistence",
"VTMENU_PERSIST_USE": "Boot with",
"VTMENU_BROWER_RETURN": "Return",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Turkish (Türkçe)",
"VTMENU_STR_HOTKEY_LIST": "L:Dil F1:Yardım F2:Gözat F3:Liste Görünümü F4:Önyükleme Seçenekleri F5:Araçlar F6:Grub2 Menü",
"VTMENU_STR_HOTKEY_TREE": "L:Dil F1:Yardım F2:Gözat F3:Ağaç Görünümü F4:Önyükleme Seçenekleri F5:Araçlar F6:Grub2 Menü",
"VTMENU_RETURN_PREVIOUS": "Önceki menüye geri dön [Esc]",
"VTMENU_MENU_LANG": "Menü Dili Seçimi",
"VTMENU_LB_SBOOT_WINDOWS": "Windows'u bul ve Önyükle",
"VTMENU_LB_SBOOT_G4D": "Grub4dos'u bul ve Önyükle",
"VTMENU_LB_SBOOT_HDD1": "1. Yerel diskten Önyükleme yap",
"VTMENU_LB_SBOOT_HDD2": "2. Yerel diskten Önyükleme yap",
"VTMENU_LB_SBOOT_HDD3": "3. Yerel diskten Önyükleme yap",
"VTMENU_LB_SBOOT_X64EFI": "BOOTX64.EFI'yi bul ve Önyükleme yap",
"VTMENU_LB_SBOOT_IA32EFI": "BOOTIA32.EFI'yi bul ve Önyükleme yap",
"VTMENU_LB_SBOOT_AA64EFI": "BOOTAA64.EFI'yi bul ve Önyükleme yap",
"VTMENU_LB_SBOOT_XORBOOT": "XORBOOT'u bul ve Önyükleme yap",
"VTMENU_FILE_CHKSUM": "Dosya Doğrulama",
"VTMENU_CHKSUM_MD5_CALC": "md5sum değerini hesapla",
"VTMENU_CHKSUM_SHA1_CALC": "sha1sum değerini hesapla",
"VTMENU_CHKSUM_SHA256_CALC": "sha256sum değerini hesapla",
"VTMENU_CHKSUM_SHA512_CALC": "sha512sum değerini hesapla",
"VTMENU_CHKSUM_MD5_CALC_CHK": "md5sum hesapla ve kontrol et",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "sha1sum hesapla ve kontrol et",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "sha256sum hesapla ve kontrol et",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "sha512sum hesapla ve kontrol et",
"VTMENU_POWER": "Güç Seçenekleri",
"VTMENU_POWER_REBOOT": "Yeniden Başlat",
"VTMENU_POWER_HALT": "Bilgisayarı Kapat",
"VTMENU_POWER_BOOT_EFIFW": "EFI BIOS Ayarları ile Yeniden Başlat",
"VTMENU_KEYBRD_LAYOUT": "Klavye düzenleri",
"VTMENU_HWINFO": "Donanım Bilgisi",
"VTMENU_RESOLUTION_CFG": "Çözünürlük Yapılandırması",
"VTMENU_SCREEN_MODE": "Ekran Görüntüleme Modu",
"VTMENU_SCREEN_TEXT_MODE": "Metin Modu'nu Dene",
"VTMENU_SCREEN_GUI_MODE": "Grafik Modu'nu Dene",
"VTMENU_THEME_SELECT": "Tema Seçimi",
"VTMENU_UTIL_SHOW_EFI_DRV": "EFI Sürücülerini Göster",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "Windows BlinitializeLibrary Hatasını Düzelt",
"VTMENU_JSON_CHK_JSON": "json (ventoy.json) Yapılandırma Dosyası Ayarlarını kontrol et",
"VTMENU_JSON_CHK_CONTROL": "(Global Control Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_THEME": "(Theme Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_AUTOINS": "(Auto Install Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_PERSIST": "(Persistence Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_MENU_ALIAS": "(Menu Alias Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_MENU_TIP": "(Menu Tip Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_MENU_CLASS": "(Menu Class Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_INJECTION": "(Injection Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "(Auto Memdisk Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_IMG_LIST": "(Image List Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_IMG_BLIST": "(Image Blacklist Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_CONF_REPLACE": "(Check Boot Conf Replace Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_DUD": "(Dud Plugin) yapılandırma ayarları",
"VTMENU_JSON_CHK_PASSWORD": "(Password Plugin) yapılandırma ayarları",
"VTMENU_NORMAL_MODE": "NORMAL(ISO) Mod'da ÖnYükleme Yap",
"VTMENU_WIMBOOT_MODE": "WIMBOOT(WIM) Mod'da Önyükleme Yap",
"VTMENU_GRUB2_MODE": "GRUB2 Mod'da Önyükleme Yap",
"VTMENU_MEMDISK_MODE": "MEMDISK Modunda ÖnYükleme Yap",
"VTMENU_RET_TO_LISTVIEW": "Liste Görünümü Moduna Geri Dön",
"VTMENU_RET_TO_TREEVIEW": "Ağaç Görünümü Moduna Geri Dön",
"VTMENU_NO_AUTOINS_SCRIPT": "Otomatik yükleme şablonu(autoinstalltemplate.xml) olmadan Önyükleme yap",
"VTMENU_AUTOINS_USE": "ile Önyükleme Yap",
"VTMENU_NO_PERSIST": "Kalıcı ayar dosyası(persistence.dat) olmadan Önyükleme Yap",
"VTMENU_PERSIST_USE": "ile Önyükleme Yap",
"VTMENU_BROWER_RETURN": "Geri Dön",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1,81 @@
{
"VTMENU_LANGUAGE_NAME": "Chinese Simplified (简体中文)",
"VTMENU_STR_HOTKEY_LIST": "L:语言 F1:帮助 F2:本地浏览 F3:列表模式 F4:本地启动 F5:工具 F6:扩展菜单",
"VTMENU_STR_HOTKEY_TREE": "L:语言 F1:帮助 F2:本地浏览 F3:树形模式 F4:本地启动 F5:工具 F6:扩展菜单",
"VTMENU_RETURN_PREVIOUS": "返回上一级菜单 [Esc]",
"VTMENU_MENU_LANG": "菜单语言",
"VTMENU_LB_SBOOT_WINDOWS": "搜索并启动 Windows",
"VTMENU_LB_SBOOT_G4D": "搜索并启动 Grub4dos",
"VTMENU_LB_SBOOT_HDD1": "启动本地硬盘1中的系统",
"VTMENU_LB_SBOOT_HDD2": "启动本地硬盘2中的系统",
"VTMENU_LB_SBOOT_HDD3": "启动本地硬盘3中的系统",
"VTMENU_LB_SBOOT_X64EFI": "搜索并启动 BOOTX64.EFI",
"VTMENU_LB_SBOOT_IA32EFI": "搜索并启动 BOOTIA32.EFI",
"VTMENU_LB_SBOOT_AA64EFI": "搜索并启动 BOOTAA64.EFI",
"VTMENU_LB_SBOOT_XORBOOT": "搜索并启动 xorboot",
"VTMENU_FILE_CHKSUM": "文件校验",
"VTMENU_CHKSUM_MD5_CALC": "计算 MD5 校验值",
"VTMENU_CHKSUM_SHA1_CALC": "计算 SHA1 校验值",
"VTMENU_CHKSUM_SHA256_CALC": "计算 SHA256 校验值",
"VTMENU_CHKSUM_SHA512_CALC": "计算 SHA512 校验值",
"VTMENU_CHKSUM_MD5_CALC_CHK": "计算并检查 MD5 校验值",
"VTMENU_CHKSUM_SHA1_CALC_CHK": "计算并检查 SHA1 校验值",
"VTMENU_CHKSUM_SHA256_CALC_CHK": "计算并检查 SHA256 校验值",
"VTMENU_CHKSUM_SHA512_CALC_CHK": "计算并检查 SHA512 校验值",
"VTMENU_POWER": "电源",
"VTMENU_POWER_REBOOT": "重启",
"VTMENU_POWER_HALT": "关机",
"VTMENU_POWER_BOOT_EFIFW": "重启进入 UEFI 设置菜单",
"VTMENU_KEYBRD_LAYOUT": "键盘布局",
"VTMENU_HWINFO": "硬件信息",
"VTMENU_RESOLUTION_CFG": "屏幕分辨率",
"VTMENU_SCREEN_MODE": "显示模式",
"VTMENU_SCREEN_TEXT_MODE": "文本模式",
"VTMENU_SCREEN_GUI_MODE": "图形模式",
"VTMENU_THEME_SELECT": "主题选择",
"VTMENU_UTIL_SHOW_EFI_DRV": "显示 UEFI 驱动",
"VTMENU_UTIL_FIX_BLINIT_FAIL": "修复 Windows BlinitializeLibrary 错误",
"VTMENU_JSON_CHK_JSON": "检查插件配置文件 (ventoy.json)",
"VTMENU_JSON_CHK_CONTROL": "配置检查 —— 全局控制插件",
"VTMENU_JSON_CHK_THEME": "配置检查 —— 主题插件",
"VTMENU_JSON_CHK_AUTOINS": "配置检查 —— 自动安装插件",
"VTMENU_JSON_CHK_PERSIST": "配置检查 —— 持久化插件",
"VTMENU_JSON_CHK_MENU_ALIAS": "配置检查 —— 菜单别名插件",
"VTMENU_JSON_CHK_MENU_TIP": "配置检查 —— 菜单提示插件",
"VTMENU_JSON_CHK_MENU_CLASS": "配置检查 —— 菜单类型插件",
"VTMENU_JSON_CHK_INJECTION": "配置检查 —— 文件注入插件",
"VTMENU_JSON_CHK_AUTO_MEMDISK": "配置检查 —— 自动内存盘模式插件",
"VTMENU_JSON_CHK_IMG_LIST": "配置检查 —— 文件列表插件(白名单)",
"VTMENU_JSON_CHK_IMG_BLIST": "配置检查 —— 文件列表插件(黑名单)",
"VTMENU_JSON_CHK_CONF_REPLACE": "配置检查 —— 启动配置替换插件",
"VTMENU_JSON_CHK_DUD": "配置检查 —— Driver Update Disk插件",
"VTMENU_JSON_CHK_PASSWORD": "配置检查 —— 密码插件",
"VTMENU_NORMAL_MODE": "以正常模式启动",
"VTMENU_WIMBOOT_MODE": "以 wimboot 模式启动",
"VTMENU_GRUB2_MODE": "以 grub2 模式启动",
"VTMENU_MEMDISK_MODE": "以内存盘模式启动",
"VTMENU_RET_TO_LISTVIEW": "返回到列表模式",
"VTMENU_RET_TO_TREEVIEW": "返回到树形模式",
"VTMENU_NO_AUTOINS_SCRIPT": "不使用自动安装脚本",
"VTMENU_AUTOINS_USE": "使用",
"VTMENU_NO_PERSIST": "不使用持久化数据文件",
"VTMENU_PERSIST_USE": "使用",
"VTMENU_BROWER_RETURN": "返回",
"MENU_STR_XXX": ""
}

View File

@@ -0,0 +1 @@
#ventoy_pack.sh will generate menuentry here

View File

@@ -1,25 +1,25 @@
submenu "Power" --class=debug_power --class=F5tool {
menuentry Reboot --class=debug_reboot --class=debug_power --class=F5tool {
submenu "@VTMENU_POWER" --class=debug_power --class=F5tool {
menuentry "@VTMENU_POWER_REBOOT" --class=debug_reboot --class=debug_power --class=F5tool {
echo -e '\n\nSystem is rebooting ... \n'
sleep 1
reboot
}
menuentry Halt --class=debug_halt --class=debug_power --class=F5tool {
menuentry "@VTMENU_POWER_HALT" --class=debug_halt --class=debug_power --class=F5tool {
echo -e '\n\nSystem is halting ... \n'
sleep 1
halt
}
if [ "$grub_platform" != "pc" ]; then
menuentry 'Reboot to EFI setup' --class=debug_efisetup --class=debug_power --class=F5tool {
menuentry '@VTMENU_POWER_BOOT_EFIFW' --class=debug_efisetup --class=debug_power --class=F5tool {
echo -e '\n\nRebooting to enter UEFI firmware setup ... \n'
sleep 1
fwsetup
}
fi
menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
}

View File

@@ -88,6 +88,30 @@ tar czf help.tar.gz ./help/
rm -rf ./help
cd ../../
#tar menu txt & update menulang.cfg
cd $tmpmnt/grub/
vtlangtitle=$(grep VTMENU_LANGUAGE_NAME menu/zh_CN.json | awk -F\" '{print $4}')
echo "menuentry \"zh_CN - $vtlangtitle\" --class=menu_lang_item --class=debug_menu_lang --class=F5tool {" >> menulang.cfg
echo " vt_load_menu_lang zh_CN" >> menulang.cfg
echo "}" >> menulang.cfg
ls -1 menu/ | grep -v 'zh_CN' | sort | while read vtlang; do
vtlangname=${vtlang%.*}
vtlangtitle=$(grep VTMENU_LANGUAGE_NAME menu/$vtlang | awk -F\" '{print $4}')
echo "menuentry \"$vtlangname - $vtlangtitle\" --class=menu_lang_item --class=debug_menu_lang --class=F5tool {" >> menulang.cfg
echo " vt_load_menu_lang $vtlangname" >> menulang.cfg
echo "}" >> menulang.cfg
done
echo "menuentry '@VTMENU_RETURN_PREVIOUS' --class=vtoyret VTOY_RET {" >> menulang.cfg
echo " echo 'Return ...'" >> menulang.cfg
echo "}" >> menulang.cfg
tar czf menu.tar.gz ./menu/
rm -rf ./menu
cd ../../
cp $OPT ./ventoy $tmpmnt/
cp $OPT ./EFI $tmpmnt/
@@ -202,6 +226,7 @@ cp $OPT VentoyVlnk.exe $tmpdir/
cp $OPT FOR_X64_ARM.txt $tmpdir/
mkdir -p $tmpdir/altexe
cp $OPT Ventoy2Disk_*.exe $tmpdir/altexe/
cp $OPT VentoyPlugson_*.exe $tmpdir/altexe/

View File

@@ -8,10 +8,24 @@ fi
gcc -DFOR_VTOY_JSON_CHECK $VTOY_PATH/Ventoy2Disk/Ventoy2Disk/VentoyJson.c -I $VTOY_PATH/Ventoy2Disk/Ventoy2Disk/ -o checkjson
RET=0
./checkjson $VTOY_PATH/LANGUAGES/languages.json
ret=$?
if [ $ret -eq 0 ]; then
for i in $(ls $VTOY_PATH/INSTALL/grub/menu); do
echo "check INSTALL/grub/menu/$i ..."
./checkjson $VTOY_PATH/INSTALL/grub/menu/$i
ret=$?
if [ $ret -ne 0 ]; then
echo "INSTALL/grub/menu/$i invalid json format"
break
fi
done
else
echo "languages.json invalid json format"
fi
rm -f ./checkjson
[ $ret -eq 0 ]

View File

@@ -55,7 +55,10 @@
"STR_PART_RESIZE_UNSUPPORTED":"توقفت عملية تثبيت Ventoy بدون تهيئة لعدم استيفاء بعض الشروط. تفقد ملف log.txt للتفاصيل.",
"STR_INSTALL_YES_TIP1":"تحذير: سيتم فقدان البيانات!",
"STR_INSTALL_YES_TIP2":"يرجى إدخال YES في مربع النص في الأسفل للتأكيد بأنك تريد عمل تثبيت جديد بدلاً من التحديث.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"نظام الملفات لقسم Ventoy",
"STR_PART_FS":"نظام الملفات",
"STR_PART_CLUSTER":"حجم الكتلة",
"STR_PART_CLUSTER_DEFAULT":"القيمة الافتراضية للنظام",
"STRXXX":""
},
@@ -116,6 +119,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -175,8 +182,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"일부 조건을 충족할 수 없기 때문에 Ventoy 비파괴 설치가 중지되었습니다. 자세한 내용은 log.txt를 확인하십시오.",
"STR_INSTALL_YES_TIP1":"경고: 데이터가 손실됩니다!",
"STR_INSTALL_YES_TIP2":"업그레이드 대신 새로 설치할지 확인하려면 아래 입력란에 YES를 입력하십시오.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Ventoy 파티션용 파일 시스템",
"STR_PART_FS":"파일 시스템",
"STR_PART_CLUSTER":"클러스터 크기",
"STR_PART_CLUSTER_DEFAULT":"시스템 기본값",
"STRXXX":""
},
{
@@ -236,6 +246,9 @@
"STR_INSTALL_YES_TIP1":"警告: 所有数据将会丢失!",
"STR_INSTALL_YES_TIP2":"请在下面文本框中输入 YES 以确认你是要进行安装而不是升级。",
"STR_PART_VENTOY_FS":"Ventoy 分区文件系统类型",
"STR_PART_FS":"文件系统",
"STR_PART_CLUSTER":"簇大小",
"STR_PART_CLUSTER_DEFAULT":"系统默认值",
"STRXXX":""
},
@@ -296,7 +309,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -355,7 +371,10 @@
"STR_MENU_PART_RESIZE": "გთხოვთ, შეიყვანოთ YES ქვემოთ მოცემულ ტექსტურ ველში, რათა დაადასტუროთ... გსურთ განახლების ნაცვლად განახორციელოთ ახალი ინსტალაცია.",
"STR_PART_RESIZE_TIP": "Ventoy ჩეეცდება დააყენოს არა-დესტრუქციული რამდენადაც შეეცდება. გსურს გაგრძელება?",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX": ""
},
{
@@ -415,7 +434,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -474,8 +496,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Nieniszcząca instalacja Ventoy została zatrzymana, ponieważ niektóre wymagania nie zostały spełnione. Sprawdź log.txt po szczegóły.",
"STR_INSTALL_YES_TIP1":"Ostrzeżenie: Dane zostaną utracone!",
"STR_INSTALL_YES_TIP2":"Wpisz YES w poniższym polu tekstowym, aby potwierdzić, że naprawdę chcesz przeprowadzić nową instalację zamiast aktualizacji.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"System plików dla partycji Ventoy",
"STR_PART_FS":"System plików",
"STR_PART_CLUSTER":"Wielkość klastra",
"STR_PART_CLUSTER_DEFAULT":"Wartość domyślna systemu",
"STRXXX":""
},
{
@@ -534,8 +559,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Instalação não destrutiva do Ventoy interrompida devido fato desconhecido. Cheque o arquivo log.txt para detalhes.",
"STR_INSTALL_YES_TIP1":"Aviso: Os dados serão perdidos!",
"STR_INSTALL_YES_TIP2":"Por favor, digite YES na caixa de texto abaixo para confirmar que você realmente quer fazer uma nova instalação em vez de atualização.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Sistema de arquivos para partição Ventoy",
"STR_PART_FS":"Sistema de arquivo",
"STR_PART_CLUSTER":"Tamanho do cluster",
"STR_PART_CLUSTER_DEFAULT":"Valor padrão do sistema",
"STRXXX":""
},
{
@@ -595,14 +623,17 @@
"STR_INSTALL_YES_TIP1":"Uyarı: Tüm verileriniz kaybolacak!",
"STR_INSTALL_YES_TIP2":"Güncelleme yapmak yerine,yeni bir kurulum yapmak istediğinizi doğrulamak için lütfen aşağıdaki metin kutusuna YES yazın.",
"STR_PART_VENTOY_FS":"Ventoy bölümü Dosya Sistemi",
"STR_PART_FS":"Dosya Sistemi",
"STR_PART_CLUSTER":"Sektör Boyutu",
"STR_PART_CLUSTER_DEFAULT":"Sistem varsayılan değeri",
"STRXXX":""
},
{
"name":"German (Deutsch)",
"FontFamily":"Courier New",
"FontSize":16,
"Author":"luzea & u!^DEV",
"Author":"luzea & u!^DEV, wiz64",
"STR_ERROR":"Fehler",
"STR_WARNING":"Warnung",
@@ -654,8 +685,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Installation ohne vorherige Formatierung wurde auf Grund einiger nicht erfüllbarer Bedingungen gestoppt. Für Details die log.txt prüfen.",
"STR_INSTALL_YES_TIP1":"Warnung: Die Daten gehen verloren!",
"STR_INSTALL_YES_TIP2":"Bitte bestätigen Sie in der unteren Textbox mit YES, dass Sie anstelle eines Upgrades eine frische Installation durchführen möchten.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Dateisystem für die Ventoy-Partition",
"STR_PART_FS":"Dateisystem",
"STR_PART_CLUSTER":"Clustergröße",
"STR_PART_CLUSTER_DEFAULT":"Systemstandardwert",
"STRXXX":""
},
{
@@ -715,14 +749,17 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
"name":"French (Français)",
"FontFamily":"Courier New",
"FontSize":16,
"Author":"vboucard, Silejonu",
"Author":"vboucard, Silejonu, wiz64",
"STR_ERROR":"Erreur",
"STR_WARNING":"Avertissement",
@@ -774,7 +811,10 @@
"STR_PART_RESIZE_UNSUPPORTED":"L'installation non destructive de Ventoy s'est arrêtée car certaines conditions ne peuvent pas être remplies. Consultez log.txt pour plus de détails.",
"STR_INSTALL_YES_TIP1":"Attention : les données seront perdues !",
"STR_INSTALL_YES_TIP2":"Veuillez saisir YES dans la zone de texte ci-dessous pour confirmer que vous souhaitez bien effectuer une nouvelle installation au lieu d'une mise à niveau.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Système de fichiers pour la partition Ventoy",
"STR_PART_FS":"Système de fichiers",
"STR_PART_CLUSTER":"Taille de cluster",
"STR_PART_CLUSTER_DEFAULT":"Valeur par défaut du système",
"STRXXX":""
},
@@ -834,7 +874,10 @@
"STR_PART_RESIZE_UNSUPPORTED":"Nedestruktivní instalace Ventoy selhala, protože některé podmínky pro ni nemohly být splněny. Pro podrobnosti se podívejte do souboru log.txt.",
"STR_INSTALL_YES_TIP1":"Varování: Data budou ztracena!",
"STR_INSTALL_YES_TIP2":"Do níže uvedeného textového pole zadejte YES a potvrďte, že skutečně chcete provést novou instalaci namísto aktualizace.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Souborový systém pro Ventoy Partition",
"STR_PART_FS":"Souborový systém",
"STR_PART_CLUSTER":"Velikost clusteru",
"STR_PART_CLUSTER_DEFAULT":"Výchozí hodnota systému",
"STRXXX":""
},
@@ -894,7 +937,10 @@
"STR_INSTALL_YES_TIP1":"Varovanie: Dôjde k strate údajov!",
"STR_INSTALL_YES_TIP2":"Prosím, zadajte YES v textovom poli nižšie, čím potvrdíte, že naozaj chcete vykonať novú inštaláciu miesto aktualizácie.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -953,8 +999,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Instalación no destructiva de Ventoy detenida porque algunas condiciones no se pueden cumplir. Comprueba log.txt para detalles.",
"STR_INSTALL_YES_TIP1":"Advertencia: ¡Los datos se perderán!",
"STR_INSTALL_YES_TIP2":"Por favor ingresa YES en el cuadro de texto a continuación para confirmar que realmente quieres realizar una instalación nueva en vez de actualizar.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Sistema de archivos para partición de Ventoy",
"STR_PART_FS":"Sistema de archivos",
"STR_PART_CLUSTER":"Tamaño de cluster",
"STR_PART_CLUSTER_DEFAULT":"Valor predeterminado del sistema",
"STRXXX":""
},
{
@@ -1013,15 +1062,18 @@
"STR_PART_RESIZE_UNSUPPORTED":"La instalación no destructiva de Ventoy se ha detenido porque no se han cumplido todos los prerrequisitos.#@Compruebe el archivo log.txt para más información.",
"STR_INSTALL_YES_TIP1":"Advertencia: ¡Los datos se perderán!",
"STR_INSTALL_YES_TIP2":"Por favor, escriba YES en el cuadro de texto a continuación para confirmar que realmente quiere realizar una nueva instalación de Ventoy en vez de actualizarlo.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Sistema de archivos para partición de Ventoy",
"STR_PART_FS":"Sistema de archivos",
"STR_PART_CLUSTER":"Tamaño de cluster",
"STR_PART_CLUSTER_DEFAULT":"Valor predeterminado del sistema",
"STRXXX":""
},
{
"name":"Russian (Pусский)",
"FontFamily":"Courier New",
"FontSize":16,
"Author":"BL4CKH47H4CK3R, Teraskull, thehugonote, wiz64",
"Author":"BL4CKH47H4CK3R, Teraskull, thehugonote, wiz64, dmitrygribenchuk",
"STR_ERROR":"Ошибка",
"STR_WARNING":"Предупреждение",
@@ -1074,6 +1126,9 @@
"STR_INSTALL_YES_TIP1":"Предупреждение: Данные будут потеряны!",
"STR_INSTALL_YES_TIP2":"Пожалуйста, введите YES в текстовое поле ниже, чтобы подтвердить, что вы действительно хотите выполнить новую установку вместо обновления.",
"STR_PART_VENTOY_FS":"Файловая система для Ventoy раздела",
"STR_PART_FS":"Файловая система",
"STR_PART_CLUSTER":"Размер кластера",
"STR_PART_CLUSTER_DEFAULT":"Системное значение по умолчанию",
"STRXXX":""
},
@@ -1134,7 +1189,10 @@
"STR_INSTALL_YES_TIP1":"সতর্কতা: ডেটা হারিয়ে যাবে!",
"STR_INSTALL_YES_TIP2":"আপনি আপগ্রেড করার পরিবর্তে একটি নতুন ইনস্টল করতে চান তা নিশ্চিত করতে দয়া করে নীচের পাঠ্য বাক্সে Yes লিখুন৷।",
"STR_PART_VENTOY_FS":"Ventoy পার্টিশনের জন্য ফাইল সিস্টেম",
"STR_PART_FS":"ফাইল সিস্টেম",
"STR_PART_CLUSTER":"ক্লাস্টারের আকার",
"STR_PART_CLUSTER_DEFAULT":"সিস্টেমের ডিফল্ট মান",
"STRXXX":""
},
{
@@ -1194,7 +1252,10 @@
"STR_INSTALL_YES_TIP1":"चेतावनी: डेटा खो जाएगा!",
"STR_INSTALL_YES_TIP2":"यह पुष्टि करने के लिए कि आप वास्तव में अपग्रेड के बजाय एक नया इंस्टॉल करना चाहते हैं, कृपया नीचे दिए टेक्स्ट बॉक्स में Yes दर्ज करें।",
"STR_PART_VENTOY_FS":"Ventoy विभाजन के लिए फाइल सिस्टम",
"STR_PART_FS":"फाइल सिस्टम",
"STR_PART_CLUSTER":"क्लस्टर साइज",
"STR_PART_CLUSTER_DEFAULT":"सिस्टम डिफ़ॉल्ट मान",
"STRXXX":""
},
{
@@ -1253,15 +1314,18 @@
"STR_PART_RESIZE_UNSUPPORTED":"De niet-destructieve installatie van Ventoy is gestopt omdat aan sommige voorwaarden niet kan worden voldaan. Controleer log.txt voor details.",
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Bestandssysteem voor Ventoy-partitie",
"STR_PART_FS":"Bestandssysteem",
"STR_PART_CLUSTER":"Clustergrootte",
"STR_PART_CLUSTER_DEFAULT":"Standaardwaarde systeem",
"STRXXX":""
},
{
"name":"Romanian (Română)",
"FontFamily":"Courier New",
"FontSize":16,
"Author":"DorinMol",
"Author":"DorinMol, cezarlacatus, wiz64",
"STR_ERROR":"Eroare",
"STR_WARNING":"Avertisment",
@@ -1289,32 +1353,35 @@
"STR_BTN_CANCEL":"Anulare",
"STR_PRESERVE_SPACE":"Păstrați puțin spațiu în partea de jos a discului",
"STR_SPACE_VAL_INVALID":"Valoare nevalidă pentru spațiul rezervat",
"STR_MENU_CLEAR":"Clear Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy has been successfully removed from the device.",
"STR_CLEAR_FAILED":"An error occurred when clear Ventoy from disk. You can replug the USB and try again. Check log.txt for detail.",
"STR_MENU_PART_STYLE":"Partition Style",
"STR_DISK_2TB_MBR_ERROR":"Please select GPT for disk over 2TB",
"STR_SHOW_ALL_DEV":"Show All Devices",
"STR_PART_ALIGN_4KB":"Align partitions with 4KB",
"STR_WEB_COMMUNICATION_ERR":"Communication error:",
"STR_WEB_REMOTE_ABNORMAL":"Communication error: remote abnormal",
"STR_WEB_REQUEST_TIMEOUT":"Communication error: Request timed out",
"STR_WEB_SERVICE_UNAVAILABLE":"Communication error: Service Unavailable",
"STR_WEB_TOKEN_MISMATCH":"Daemon status updated, please retry later.",
"STR_WEB_SERVICE_BUSY":"Service is busy, please retry later.",
"STR_MENU_VTSI_CREATE":"Generate VTSI File",
"STR_VTSI_CREATE_TIP":"This time will not write to the device, but only generate a VTSI file#@Continue?",
"STR_VTSI_CREATE_SUCCESS":"VTSI file created successfully!#@You can use Rufus(3.15+) to write it to the device so as to complete the installation of Ventoy.",
"STR_VTSI_CREATE_FAILED":"VTSI file created failed.",
"STR_MENU_PART_RESIZE":"Non-destructive Install",
"STR_PART_RESIZE_TIP":"Ventoy will try non-destructive installation if possible. #@Continue?",
"STR_PART_RESIZE_SUCCESS":"Congratulations!#@Ventoy non-destructive installation successfully finished.",
"STR_PART_RESIZE_FAILED":"Non-destructive installation failed, Check log.txt for details.",
"STR_PART_RESIZE_UNSUPPORTED":"Ventoy non-destructive installation stopped because some conditions cannot be met. Check log.txt for details.",
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_MENU_CLEAR":"Curata Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy a fost eliminat cu succes de pe dispozitiv.",
"STR_CLEAR_FAILED":"A apărut o eroare la ștergerea Ventoy de pe disc. Puteți reconecta USB-ul și încerca din nou. Verificați log.txt pentru detalii.",
"STR_MENU_PART_STYLE":"Stil partiție",
"STR_DISK_2TB_MBR_ERROR":"Vă rugăm să selectați GPT pentru disc de peste 2 TB",
"STR_SHOW_ALL_DEV":"Afișați toate dispozitivele",
"STR_PART_ALIGN_4KB":"Aliniați partițiile cu 4KB",
"STR_WEB_COMMUNICATION_ERR":"Eroare de comunicare:",
"STR_WEB_REMOTE_ABNORMAL":"Eroare de comunicare: remote abnormal",
"STR_WEB_REQUEST_TIMEOUT":"Eroare de comunicare: Solicitarea a expirat",
"STR_WEB_SERVICE_UNAVAILABLE":"Eroare de comunicare: Serviciu indisponibil",
"STR_WEB_TOKEN_MISMATCH":"Starea demonului a fost actualizată, vă rugăm să reîncercați mai târziu.",
"STR_WEB_SERVICE_BUSY":"Serviciul este ocupat, vă rugăm să reîncercați mai târziu.",
"STR_MENU_VTSI_CREATE":"Generați fișierul VTSI",
"STR_VTSI_CREATE_TIP":"De data aceasta nu va scrie pe dispozitiv, ci va genera doar un fișier VTSI#@Continuați?",
"STR_VTSI_CREATE_SUCCESS":"Fișierul VTSI creat cu succes!#@Puteți folosi Rufus(3.15+) pentru a-l scrie pe dispozitiv, astfel încât să finalizați instalarea Ventoy.",
"STR_VTSI_CREATE_FAILED":"Fișierul VTSI creat a eșuat.",
"STR_MENU_PART_RESIZE":"Instalare nedistructivă",
"STR_PART_RESIZE_TIP":"Ventoy va încerca instalarea nedistructivă, dacă este posibil. #@Continuă?",
"STR_PART_RESIZE_SUCCESS":"Felicitări!#@Ventoy instalarea nedistructivă s-a încheiat cu succes.",
"STR_PART_RESIZE_FAILED":"Instalarea nedistructivă a eșuat. Verificați log.txt pentru detalii.",
"STR_PART_RESIZE_UNSUPPORTED":"Instalarea nedistructivă Ventoy a fost oprită deoarece unele condiții nu pot fi îndeplinite. Verificați log.txt pentru detalii.",
"STR_INSTALL_YES_TIP1":"Atenție: Datele se vor pierde!",
"STR_INSTALL_YES_TIP2":"Introduceți DA în caseta de text de mai jos pentru a confirma că într-adevăr doriți să faceți o nouă instalare în loc să faceți upgrade.",
"STR_PART_VENTOY_FS":"Sistem de fișiere pentru partiția Ventoy",
"STR_PART_FS":"Sistemul de fișiere",
"STR_PART_CLUSTER":"Dimensiunea clusterului",
"STR_PART_CLUSTER_DEFAULT":"Valoarea implicită a sistemului",
"STRXXX":""
},
{
@@ -1373,8 +1440,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Ventoyを非破壊的に導入できませんでした。非破壊的導入にあたっての要件が満たされていません。詳細な記録はlog.txtにあります。",
"STR_INSTALL_YES_TIP1":"警告: データが消去されます",
"STR_INSTALL_YES_TIP2":"Ventoyを更新するのではなく新規に導入するということを確認するために下の入力欄に「YES」と入力してください。",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Ventoy パーティションのファイル システム",
"STR_PART_FS":"ファイルシステム",
"STR_PART_CLUSTER":"クラスターサイズ",
"STR_PART_CLUSTER_DEFAULT":"システムのデフォルト値",
"STRXXX":""
},
{
@@ -1389,8 +1459,8 @@
"STR_INCORRECT_DIR":"Eseguilo nella cartella corretta",
"STR_INCORRECT_TREE_DIR":"Non eseguirlo qui.#@Scarica il pacchetto di installazione ed avvialo.",
"STR_DEVICE":"Dispositivo",
"STR_LOCAL_VER":"Versione locale di Ventoy",
"STR_DISK_VER":"Ventoy nel dispositivo",
"STR_LOCAL_VER":"Versione locale",
"STR_DISK_VER":"Versione nel dispositivo",
"STR_STATUS":"Stato - PRONTO",
"STR_INSTALL":"Installa",
"STR_UPDATE":"Aggiorna",
@@ -1409,7 +1479,7 @@
"STR_BTN_CANCEL":"Annulla",
"STR_PRESERVE_SPACE":"Riserva spazio nella parte finale del dispositivo",
"STR_SPACE_VAL_INVALID":"Quantità di spazio da riservare non valida",
"STR_MENU_CLEAR":"Rimuovi Ventoy",
"STR_MENU_CLEAR":"Rimuovi Ventoy dal dispositivo",
"STR_CLEAR_SUCCESS":"Rimozione di Ventoy dal dispositivo completata.",
"STR_CLEAR_FAILED":"Si è verificato un errore durante la rimozione di Ventoy dal dispositivo.#@Riconnetti il dispositivo e riprova.#@Per i dettagli controlla il file log.txt.",
"STR_MENU_PART_STYLE":"Stile tabella partizioni",
@@ -1433,8 +1503,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"L'installazione non distruttiva di Ventoy è stata interrotta perché alcune condizioni non possono essere soddisfatte.#@Per i dettagli controlla il file log.txt.",
"STR_INSTALL_YES_TIP1":"Attenzione: i dati verranno persi!",
"STR_INSTALL_YES_TIP2":"Digita YES nella casella di testo qui sotto per confermare che vuoi davvero eseguire un'installazione pulita anziché un aggiornamento.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"File system per la partizione Ventoy",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Dimensione del grappolo",
"STR_PART_CLUSTER_DEFAULT":"Valore predefinito di sistema",
"STRXXX":""
},
{
@@ -1494,7 +1567,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -1554,7 +1630,10 @@
"STR_INSTALL_YES_TIP1":"Figyelmeztetés: Az adatok elvesznek!",
"STR_INSTALL_YES_TIP2":"Írja a YES szót az alábbi szövegmezőbe, hogy megerősítse, valóban új telepítést szeretne végrehajtani a frissítés helyett.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -1614,7 +1693,10 @@
"STR_INSTALL_YES_TIP1":"警告:資料將會遺失!",
"STR_INSTALL_YES_TIP2":"請在下方的文字輸入框輸入 YES 來證實您想要進行全新安裝取代升級。",
"STR_PART_VENTOY_FS":"Ventoy 分割區文件系統",
"STR_PART_FS":"文件系統",
"STR_PART_CLUSTER":"簇的大小",
"STR_PART_CLUSTER_DEFAULT":"系統默認值",
"STRXXX":""
},
{
@@ -1674,7 +1756,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -1734,7 +1819,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -1794,6 +1882,9 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -1854,6 +1945,9 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -1914,7 +2008,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -1974,7 +2071,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2034,6 +2134,9 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -2094,7 +2197,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2154,6 +2260,9 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -2188,7 +2297,7 @@
"STR_BTN_OK":"OK",
"STR_BTN_CANCEL":"Batal",
"STR_PRESERVE_SPACE":"Menyisakan sejumlah ruang penyimpanan pada disk di bawah ini",
"STR_SPACE_VAL_INVALID":"Nilai penyisaan ruang tidak valid",
"STR_SPACE_VAL_INVALID":"Nilai sisa ruang tidak valid",
"STR_MENU_CLEAR":"Bersihkan Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy telah berhasil dihapus pada perangkat ini.",
"STR_CLEAR_FAILED":"Terjadi kesalahan ketika penghapusan berlangsung. Anda perlu mencabut-pasang ulang USB dan coba lagi. Periksa berkas log.txt untuk detil.",
@@ -2204,7 +2313,7 @@
"STR_WEB_SERVICE_BUSY":"Layanan sedang sibuk, silakan coba lagi nanti.",
"STR_MENU_VTSI_CREATE":"Membuat berkas VTSI",
"STR_VTSI_CREATE_TIP":"Saat ini tidak akan menuliskan di perangkat, tetapi hanya membuat berkas VTSI #@Lanjutkan?",
"STR_VTSI_CREATE_SUCCESS":"Berkas VTSI berhasil dibuat#@Anda bisa menggunakan Rufus(3.15+) untuk menulisnya ke perangkat untuk menyelesaikan pemasangan Ventoy.",
"STR_VTSI_CREATE_SUCCESS":"Berkas VTSI berhasil dibuat#@Anda bisa menggunakan Rufus(3.15+) untuk menuliskannya ke perangkat untuk menyelesaikan pemasangan Ventoy.",
"STR_VTSI_CREATE_FAILED":"Berkas VTSI gagal dibuat.",
"STR_MENU_PART_RESIZE":"Pemasangan tanpa merusakkan",
"STR_PART_RESIZE_TIP":"Ventoy akan mencoba pemasangan tanpa merusakkan apabila memungkinkan. #@Lanjutkan?",
@@ -2213,8 +2322,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Pemasangan tanpa merusakkan Ventoy terhenti karena beberapa kondisi yang tidak mendukung. Periksa berkas log.txt untuk detil.",
"STR_INSTALL_YES_TIP1":"Peringatan: Data akan hilang!",
"STR_INSTALL_YES_TIP2":"Silakan ketik YES pada kotak tulis di bawah untuk meyakinkan bahwa anda memang untuk melakukan pemasangan baru ketimbang memperbaruinya",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Berkas Sistem Untuk Partisi Ventoy",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2274,14 +2386,17 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
"name":"Ukrainian (Українська)",
"FontFamily":"Courier New",
"FontSize":16,
"Author":"Teraskull, thehugonote",
"Author":"Teraskull, thehugonote, dmitrygribenchuk",
"STR_ERROR":"Помилка",
"STR_WARNING":"Попередження",
@@ -2331,10 +2446,13 @@
"STR_PART_RESIZE_SUCCESS":"Вітаємо!#@Неруйнівна установка Ventoy успішно завершена.",
"STR_PART_RESIZE_FAILED":"Збій неруйнівної установки, перевірте log.txt для отримання детальної інформації.",
"STR_PART_RESIZE_UNSUPPORTED":"Неруйнівна установка Ventoy зупинена через неможливість виконання деяких умов. Перевірте log.txt для отримання детальної інформації.",
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_INSTALL_YES_TIP1":"Попередження: дані будуть втрачені!",
"STR_INSTALL_YES_TIP2":"Будь ласка, введіть ТАК у текстове поле нижче, щоб підтвердити, що ви справді бажаєте виконати нове встановлення замість оновлення.",
"STR_PART_VENTOY_FS":"Файлова система для розділу Ventoy",
"STR_PART_FS":"Файлова система",
"STR_PART_CLUSTER":"Розмір кластера",
"STR_PART_CLUSTER_DEFAULT":"Системне значення за умовчанням",
"STRXXX":""
},
{
@@ -2382,19 +2500,22 @@
"STR_WEB_SERVICE_UNAVAILABLE":"Σφάλμα επικοινωνίας: υπηρεσία μη διαθέσιμη",
"STR_WEB_TOKEN_MISMATCH":"Η κατάσταση του δαίμονα επικαιροποιήθηκε. Παρακαλώ δοκιμάστε αργότερα.",
"STR_WEB_SERVICE_BUSY":"Η υπηρεσία είναι απασχολημένη. Παρακαλώ δοκιμάστε αργότερα.",
"STR_MENU_VTSI_CREATE":"Generate VTSI File",
"STR_VTSI_CREATE_TIP":"This time will not write to the device, but only generate a VTSI file#@Continue?",
"STR_VTSI_CREATE_SUCCESS":"VTSI file created successfully!#@You can use Rufus(3.15+) to write it to the device so as to complete the installation of Ventoy.",
"STR_VTSI_CREATE_FAILED":"VTSI file created failed.",
"STR_MENU_PART_RESIZE":"Non-destructive Install",
"STR_PART_RESIZE_TIP":"Ventoy will try non-destructive installation if possible. #@Continue?",
"STR_PART_RESIZE_SUCCESS":"Congratulations!#@Ventoy non-destructive installation successfully finished.",
"STR_PART_RESIZE_FAILED":"Non-destructive installation failed, Check log.txt for details.",
"STR_PART_RESIZE_UNSUPPORTED":"Ventoy non-destructive installation stopped because some conditions cannot be met. Check log.txt for details.",
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_MENU_VTSI_CREATE":"Δημιουργία αρχείου VTSI",
"STR_VTSI_CREATE_TIP":"Αυτή τη φορά δεν θα γράψει στη συσκευή, αλλά θα δημιουργήσει μόνο ένα αρχείο VTSI#@Συνέχεια;",
"STR_VTSI_CREATE_SUCCESS":"Το αρχείο VTSI δημιουργήθηκε με επιτυχία!#@Μπορείτε να χρησιμοποιήσετε το Rufus(3.15+) για να το γράψετε στη συσκευή ώστε να ολοκληρώσετε την εγκατάσταση του Ventoy.",
"STR_VTSI_CREATE_FAILED":"Αποτυχία δημιουργίας αρχείου VTSI.",
"STR_MENU_PART_RESIZE":"Μη καταστροφική εγκατάσταση",
"STR_PART_RESIZE_TIP":"Το Ventoy θα δοκιμάσει μη καταστροφική εγκατάσταση, αν είναι δυνατόν. #@Συνέχεια;",
"STR_PART_RESIZE_SUCCESS":"Συγχαρητήρια!#@Η μη καταστροφική εγκατάσταση του Ventoy ολοκληρώθηκε με επιτυχία.",
"STR_PART_RESIZE_FAILED":"Η μη καταστροφική εγκατάσταση απέτυχε. Ελέγξτε το log.txt για λεπτομέρειες.",
"STR_PART_RESIZE_UNSUPPORTED":"Η μη καταστρεπτική εγκατάσταση του Ventoy σταμάτησε επειδή δεν μπορούν να τηρηθούν ορισμένες προϋποθέσεις. Ελέγξτε το log.txt για λεπτομέρειες.",
"STR_INSTALL_YES_TIP1":"Προειδοποίηση: Τα δεδομένα θα χαθούν!",
"STR_INSTALL_YES_TIP2":"Εισαγάγετε ΝΑΙ στο παρακάτω πλαίσιο κειμένου για να επιβεβαιώσετε ότι όντως θέλετε να κάνετε μια νέα εγκατάσταση αντί για αναβάθμιση.",
"STR_PART_VENTOY_FS":"Σύστημα αρχείων για το διαμέρισμα Ventoy",
"STR_PART_FS":"Σύστημα αρχείων",
"STR_PART_CLUSTER":"Μέγεθος συμπλέγματος",
"STR_PART_CLUSTER_DEFAULT":"Προεπιλεγμένη τιμή συστήματος",
"STRXXX":""
},
{
@@ -2453,8 +2574,11 @@
"STR_PART_RESIZE_UNSUPPORTED":"Icke-förstörande installation stoppades eftersom vissa villkor inte kunde uppfyllas. Mer information finns i log.txt.",
"STR_INSTALL_YES_TIP1":"Varning: Data kommer att gå förlorade!",
"STR_INSTALL_YES_TIP2":"Skriv YES i textrutan nedan för att bekräfta att du verkligen vill göra en nyinstallation i stället för att uppgradera.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"Filsystem r Ventoy-partition",
"STR_PART_FS":"Filsystem",
"STR_PART_CLUSTER":"Klusterstorlek",
"STR_PART_CLUSTER_DEFAULT":"Systemets standardvärde",
"STRXXX":""
},
{
@@ -2514,7 +2638,10 @@
"STR_INSTALL_YES_TIP1":"Pozor: Podatki bodo izbrisani!",
"STR_INSTALL_YES_TIP2":"Prosim vtipkajte YES v spodnje okno da potrdite čisto inštalacijo in ne zgolj nadgradnje.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2574,6 +2701,9 @@
"STR_INSTALL_YES_TIP1":"Внимание: Ще има загуба на данни!",
"STR_INSTALL_YES_TIP2":"Въведете „YES“ в полето отдолу, за да потвърдите, че искате да извършите нова инсталация вместо обновяване.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -2634,7 +2764,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2694,7 +2827,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2754,7 +2890,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2814,7 +2953,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
@@ -2875,7 +3017,10 @@
"STR_INSTALL_YES_TIP1":"Warning: Data will be lost!",
"STR_INSTALL_YES_TIP2":"Please enter YES in the text box below to confirm that you indeed want to do a fresh install instead of upgrade.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_FS":"File System",
"STR_PART_CLUSTER":"Cluster Size",
"STR_PART_CLUSTER_DEFAULT":"System Default Value",
"STRXXX":""
},
{
@@ -2934,8 +3079,74 @@
"STR_PART_RESIZE_UNSUPPORTED":"சில நிபந்தனைகளை பூர்த்தி செய்ய முடியாததால், வென்டோய் அழிவில்லாத நிறுவல் நிறுத்தப்பட்டது. விவரங்களுக்கு log.txt ஐப் பார்க்கவும்.",
"STR_INSTALL_YES_TIP1":"எச்சரிக்கை: தரவு தொலைந்து போகும்!",
"STR_INSTALL_YES_TIP2":"மேம்படுத்துவதற்குப் பதிலாக புதிதாக நிறுவ விரும்புகிறீர்கள் என்பதை உறுதிப்படுத்த, கீழே உள்ள உரைப் பெட்டியில் ஆம் என உள்ளிடவும்.",
"STR_PART_VENTOY_FS":"File System For Ventoy Partition",
"STR_PART_VENTOY_FS":"வென்டோய் பகிர்வுக்கான கோப்பு முறைமை",
"STR_PART_FS":"கோப்பு முறைமை",
"STR_PART_CLUSTER":"கொத்து அளவு",
"STR_PART_CLUSTER_DEFAULT":"கணினி இயல்புநிலை மதிப்பு",
"STRXXX":""
},
{
"name":"Belarussian (Беларуская)",
"FontFamily":"Courier New",
"FontSize":16,
"Author": "dmitrygribenchuk",
"STR_ERROR":"Памылка",
"STR_WARNING":"Папярэджанне",
"STR_INFO":"Інфармацыя",
"STR_INCORRECT_DIR":"Калі ласка, запусціце ў іншым каталогу!",
"STR_INCORRECT_TREE_DIR":"Не запускайце мяне тут, калі ласка, загрузіце выпушчаны ўсталявальны пакет і запусціце яго ў іншым месцы.",
"STR_DEVICE":"Прылада",
"STR_LOCAL_VER":"Ventoy у пакеце",
"STR_DISK_VER":"Ventoy на прыладзе",
"STR_STATUS":"Статус - ГАТОВЫ",
"STR_INSTALL":"Усталяваць",
"STR_UPDATE":"Абнавіць",
"STR_UPDATE_TIP":"Абнаўленне бяспечна, ISO-файлы застануцца без змен. #@Працягнуць?",
"STR_INSTALL_TIP":"Дыск будзе адфарматаваны і ўсе дадзеныя будуць страчаныя. #@Працягнуць?",
"STR_INSTALL_TIP2":"Дыск будзе адфарматаваны і ўсе дадзеныя будуць страчаныя. #@ Вы сапраўды жадаеце працягнуць?",
"STR_INSTALL_SUCCESS":"Віншуем! # @ Ventoy быў паспяхова ўстаноўлены на прыладу.",
"STR_INSTALL_FAILED":"Падчас усталёўкі Ventoy адбылася памылка. Перападлучыце прыладу і паспрабуйце зноў. Праверце файл log.txt для атрымання падрабязнай інфармацыі.",
"STR_UPDATE_SUCCESS":"Віншуем! # @ Ventoy быў паспяхова абноўлены на прыладзе.",
"STR_UPDATE_FAILED":"Падчас абнаўлення Ventoy адбылася памылка. Перападлучыце прыладу і паспрабуйце зноў. Праверце файл log.txt для атрымання падрабязнай інфармацыі.",
"STR_WAIT_PROCESS":"Працэс запушчаны, калі ласка пачакайце...",
"STR_MENU_OPTION":"Параметры",
"STR_MENU_SECURE_BOOT":"Падтрымка Secure Boot",
"STR_MENU_PART_CFG":"Дадатковы раздзел",
"STR_BTN_OK":"ОК",
"STR_BTN_CANCEL":"Адмена",
"STR_PRESERVE_SPACE":"Стварыць дадатковы раздзел ў канцы дыска",
"STR_SPACE_VAL_INVALID":"Няправільнае значэнне памеру раздзела",
"STR_MENU_CLEAR":"Выдалiць Ventoy",
"STR_CLEAR_SUCCESS":"Ventoy быў паспяхова выдалены з прылады.",
"STR_CLEAR_FAILED":"Падчас выдалення Ventoy адбылася памылка. Перападлучыце прыладу і паспрабуйце зноў. Праверце файл log.txt для атрымання падрабязнай інфармацыі.",
"STR_MENU_PART_STYLE":"Стыль разметкі раздзелаў",
"STR_DISK_2TB_MBR_ERROR":"Калі ласка, абярыце GPT для дыскаў больш за 2ТБ",
"STR_SHOW_ALL_DEV":"Паказаць усе прылады",
"STR_PART_ALIGN_4KB":"Выраўнаваць раздзелы з памерам 4КБ",
"STR_WEB_COMMUNICATION_ERR":"Памылка сувязі:",
"STR_WEB_REMOTE_ABNORMAL":"Памылка сувязі: Выдаленае злучэнне несапраўдна",
"STR_WEB_REQUEST_TIMEOUT":"Памылка сувязі: Скончыўся час чакання запыту",
"STR_WEB_SERVICE_UNAVAILABLE":"Памылка сувязі: Служба недаступная",
"STR_WEB_TOKEN_MISMATCH":"Статус дэмана абноўлены. Паўтарыце спробу пазней.",
"STR_WEB_SERVICE_BUSY":"Служба занятая, паспрабуйце пазней.",
"STR_MENU_VTSI_CREATE":"Стварыць файл VTSI",
"STR_VTSI_CREATE_TIP":"На гэты раз Ventoy не будзе ўсталяваны на прыладу, а будзе толькі створаны файл VTSI#@Працягнуць?",
"STR_VTSI_CREATE_SUCCESS":"Файл VTSI створаны паспяхова! # @ Вы можаце выкарыстоўваць Rufus (3.15 +), каб запісаць яго на прыладу, для завяршэння ўстаноўкі Ventoy.",
"STR_VTSI_CREATE_FAILED":"Памылка стварэння файла VTSI.",
"STR_MENU_PART_RESIZE":"Неразбуральная ўстаноўка",
"STR_PART_RESIZE_TIP":"Ventoy паспрабуе неразбуральную ўстаноўку, калі гэта магчыма. #@Працягнуць?",
"STR_PART_RESIZE_SUCCESS":"Віншуем! # @ Неразбуральная ўстаноўка Ventoy паспяхова завершана.",
"STR_PART_RESIZE_FAILED":"Не атрымалася выканаць неразбуральную ўстаноўку, праверце файл log.txt для атрымання падрабязнай інфармацыі.",
"STR_PART_RESIZE_UNSUPPORTED":"Неразбуральная ўстаноўка Ventoy спынена, паколькі некаторыя ўмовы не могуць быць выкананы. Праверце файл log.txt для атрымання падрабязнай інфармацыі.",
"STR_INSTALL_YES_TIP1":"Папярэджанне: Дадзеныя будуць страчаныя!",
"STR_INSTALL_YES_TIP2":"Калі ласка, увядзіце YES у тэкставае поле ніжэй, каб пацвердзіць, што вы сапраўды хочаце выканаць новую ўстаноўку замест абнаўлення.",
"STR_PART_VENTOY_FS":"Файлавая сістэма для Ventoy раздзела",
"STR_PART_FS":"Файлавая сістэма",
"STR_PART_CLUSTER":"Памер кластара",
"STR_PART_CLUSTER_DEFAULT":"Сістэмнае значэнне па змаўчанні",
"STRXXX":""
}
]

View File

@@ -45,6 +45,7 @@ build_func() {
src/Core/ventoy_json.c \
src/Core/ventoy_log.c \
src/Core/ventoy_md5.c \
src/Core/ventoy_utf.c \
src/Core/ventoy_util.c \
src/Core/ventoy_util_linux.c \
src/Web/*.c \

View File

@@ -13,6 +13,11 @@ if [ ! -f ./vs/VentoyPlugson/Release/VentoyPlugson.exe ]; then
exit 1
fi
if [ ! -f ./vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe ]; then
echo "NO VentoyPlugson_X64.exe found"
exit 1
fi
if [ -f ./www.tar.xz ]; then
rm -f ./www.tar.xz
fi
@@ -21,6 +26,10 @@ fi
ls -1 ../INSTALL/grub/help/ | while read line; do
echo -n ${line:0:5} >> ./www/helplist
done
[ -f ./www/menulist ] && rm -f ./www/menulist
ls -1 ../INSTALL/grub/menu/ | while read line; do
echo -n ${line:0:5} >> ./www/menulist
done
echo -n "$plugson_verion" > ./www/buildtime
tar cf www.tar www
@@ -29,6 +38,10 @@ xz --check=crc32 www.tar
rm -f ../INSTALL/VentoyPlugson.exe
cp -a ./vs/VentoyPlugson/Release/VentoyPlugson.exe ../INSTALL/VentoyPlugson.exe
rm -f ../INSTALL/VentoyPlugson_X64.exe
cp -a ./vs/VentoyPlugson/x64/Release/VentoyPlugson_X64.exe ../INSTALL/VentoyPlugson_X64.exe
rm -f ../INSTALL/tool/plugson.tar.xz
mv ./www.tar.xz ../INSTALL/tool/plugson.tar.xz

View File

@@ -425,7 +425,7 @@ int vtoy_json_parse(VTOY_JSON *pstJson, const char *szJsonData)
char *pcNewBuf = NULL;
const char *pcEnd = NULL;
uiMemSize = strlen(szJsonData) + 1;
uiMemSize = (uint32_t)strlen(szJsonData) + 1;
pcNewBuf = (char *)malloc(uiMemSize);
if (NULL == pcNewBuf)
{

View File

@@ -0,0 +1,367 @@
/******************************************************************************
* ventoy_utf.c ---- ventoy utf
* Copyright (c) 2022, Davipb https://github.com/Davipb/utf8-utf16-converter
* Copyright (c) 2022, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stddef.h>
#include <ventoy_define.h>
#include <ventoy_util.h>
typedef uint8_t utf8_t; // The type of a single UTF-8 character
typedef uint16_t utf16_t; // The type of a single UTF-16 character
// The type of a single Unicode codepoint
typedef uint32_t codepoint_t;
// The last codepoint of the Basic Multilingual Plane, which is the part of Unicode that
// UTF-16 can encode without surrogates
#define BMP_END 0xFFFF
// The highest valid Unicode codepoint
#define UNICODE_MAX 0x10FFFF
// The codepoint that is used to replace invalid encodings
#define INVALID_CODEPOINT 0xFFFD
// If a character, masked with GENERIC_SURROGATE_MASK, matches this value, it is a surrogate.
#define GENERIC_SURROGATE_VALUE 0xD800
// The mask to apply to a character before testing it against GENERIC_SURROGATE_VALUE
#define GENERIC_SURROGATE_MASK 0xF800
// If a character, masked with SURROGATE_MASK, matches this value, it is a high surrogate.
#define HIGH_SURROGATE_VALUE 0xD800
// If a character, masked with SURROGATE_MASK, matches this value, it is a low surrogate.
#define LOW_SURROGATE_VALUE 0xDC00
// The mask to apply to a character before testing it against HIGH_SURROGATE_VALUE or LOW_SURROGATE_VALUE
#define SURROGATE_MASK 0xFC00
// The value that is subtracted from a codepoint before encoding it in a surrogate pair
#define SURROGATE_CODEPOINT_OFFSET 0x10000
// A mask that can be applied to a surrogate to extract the codepoint value contained in it
#define SURROGATE_CODEPOINT_MASK 0x03FF
// The number of bits of SURROGATE_CODEPOINT_MASK
#define SURROGATE_CODEPOINT_BITS 10
// The highest codepoint that can be encoded with 1 byte in UTF-8
#define UTF8_1_MAX 0x7F
// The highest codepoint that can be encoded with 2 bytes in UTF-8
#define UTF8_2_MAX 0x7FF
// The highest codepoint that can be encoded with 3 bytes in UTF-8
#define UTF8_3_MAX 0xFFFF
// The highest codepoint that can be encoded with 4 bytes in UTF-8
#define UTF8_4_MAX 0x10FFFF
// If a character, masked with UTF8_CONTINUATION_MASK, matches this value, it is a UTF-8 continuation byte
#define UTF8_CONTINUATION_VALUE 0x80
// The mask to a apply to a character before testing it against UTF8_CONTINUATION_VALUE
#define UTF8_CONTINUATION_MASK 0xC0
// The number of bits of a codepoint that are contained in a UTF-8 continuation byte
#define UTF8_CONTINUATION_CODEPOINT_BITS 6
// Represents a UTF-8 bit pattern that can be set or verified
typedef struct
{
// The mask that should be applied to the character before testing it
utf8_t mask;
// The value that the character should be tested against after applying the mask
utf8_t value;
} utf8_pattern;
// The patterns for leading bytes of a UTF-8 codepoint encoding
// Each pattern represents the leading byte for a character encoded with N UTF-8 bytes,
// where N is the index + 1
static const utf8_pattern utf8_leading_bytes[] =
{
{ 0x80, 0x00 }, // 0xxxxxxx
{ 0xE0, 0xC0 }, // 110xxxxx
{ 0xF0, 0xE0 }, // 1110xxxx
{ 0xF8, 0xF0 } // 11110xxx
};
// The number of elements in utf8_leading_bytes
#define UTF8_LEADING_BYTES_LEN 4
// Gets a codepoint from a UTF-16 string
// utf16: The UTF-16 string
// len: The length of the UTF-16 string, in UTF-16 characters
// index:
// A pointer to the current index on the string.
// When the function returns, this will be left at the index of the last character
// that composes the returned codepoint.
// For surrogate pairs, this means the index will be left at the low surrogate.
static codepoint_t decode_utf16(utf16_t const* utf16, size_t len, size_t* index)
{
utf16_t high = utf16[*index];
// BMP character
if ((high & GENERIC_SURROGATE_MASK) != GENERIC_SURROGATE_VALUE)
return high;
// Unmatched low surrogate, invalid
if ((high & SURROGATE_MASK) != HIGH_SURROGATE_VALUE)
return INVALID_CODEPOINT;
// String ended with an unmatched high surrogate, invalid
if (*index == len - 1)
return INVALID_CODEPOINT;
utf16_t low = utf16[*index + 1];
// Unmatched high surrogate, invalid
if ((low & SURROGATE_MASK) != LOW_SURROGATE_VALUE)
return INVALID_CODEPOINT;
// Two correctly matched surrogates, increase index to indicate we've consumed
// two characters
(*index)++;
// The high bits of the codepoint are the value bits of the high surrogate
// The low bits of the codepoint are the value bits of the low surrogate
codepoint_t result = high & SURROGATE_CODEPOINT_MASK;
result <<= SURROGATE_CODEPOINT_BITS;
result |= low & SURROGATE_CODEPOINT_MASK;
result += SURROGATE_CODEPOINT_OFFSET;
// And if all else fails, it's valid
return result;
}
// Calculates the number of UTF-8 characters it would take to encode a codepoint
// The codepoint won't be checked for validity, that should be done beforehand.
static int calculate_utf8_len(codepoint_t codepoint)
{
// An array with the max values would be more elegant, but a bit too heavy
// for this common function
if (codepoint <= UTF8_1_MAX)
return 1;
if (codepoint <= UTF8_2_MAX)
return 2;
if (codepoint <= UTF8_3_MAX)
return 3;
return 4;
}
// Encodes a codepoint in a UTF-8 string.
// The codepoint won't be checked for validity, that should be done beforehand.
//
// codepoint: The codepoint to be encoded.
// utf8: The UTF-8 string
// len: The length of the UTF-8 string, in UTF-8 characters
// index: The first empty index on the string.
//
// return: The number of characters written to the string.
static size_t encode_utf8(codepoint_t codepoint, utf8_t* utf8, size_t len, size_t index)
{
int size = calculate_utf8_len(codepoint);
// Not enough space left on the string
if (index + size > len)
return 0;
// Write the continuation bytes in reverse order first
for (int cont_index = size - 1; cont_index > 0; cont_index--)
{
utf8_t cont = codepoint & ~UTF8_CONTINUATION_MASK;
cont |= UTF8_CONTINUATION_VALUE;
utf8[index + cont_index] = cont;
codepoint >>= UTF8_CONTINUATION_CODEPOINT_BITS;
}
// Write the leading byte
utf8_pattern pattern = utf8_leading_bytes[size - 1];
utf8_t lead = codepoint & ~(pattern.mask);
lead |= pattern.value;
utf8[index] = lead;
return size;
}
size_t utf16_to_utf8(utf16_t const* utf16, size_t utf16_len, utf8_t* utf8, size_t utf8_len)
{
// The next codepoint that will be written in the UTF-8 string
// or the size of the required buffer if utf8 is NULL
size_t utf8_index = 0;
for (size_t utf16_index = 0; utf16_index < utf16_len; utf16_index++)
{
codepoint_t codepoint = decode_utf16(utf16, utf16_len, &utf16_index);
if (utf8 == NULL)
utf8_index += calculate_utf8_len(codepoint);
else
utf8_index += encode_utf8(codepoint, utf8, utf8_len, utf8_index);
}
return utf8_index;
}
// Gets a codepoint from a UTF-8 string
// utf8: The UTF-8 string
// len: The length of the UTF-8 string, in UTF-8 characters
// index:
// A pointer to the current index on the string.
// When the function returns, this will be left at the index of the last character
// that composes the returned codepoint.
// For example, for a 3-byte codepoint, the index will be left at the third character.
static codepoint_t decode_utf8(utf8_t const* utf8, size_t len, size_t* index)
{
utf8_t leading = utf8[*index];
// The number of bytes that are used to encode the codepoint
int encoding_len = 0;
// The pattern of the leading byte
utf8_pattern leading_pattern;
// If the leading byte matches the current leading pattern
int matches = 0;
do
{
encoding_len++;
leading_pattern = utf8_leading_bytes[encoding_len - 1];
matches = ((leading & leading_pattern.mask) == leading_pattern.value);
} while (!matches && encoding_len < UTF8_LEADING_BYTES_LEN);
// Leading byte doesn't match any known pattern, consider it invalid
if (!matches)
return INVALID_CODEPOINT;
codepoint_t codepoint = leading & ~leading_pattern.mask;
for (int i = 0; i < encoding_len - 1; i++)
{
// String ended before all continuation bytes were found
// Invalid encoding
if (*index + 1 >= len)
return INVALID_CODEPOINT;
utf8_t continuation = utf8[*index + 1];
// Number of continuation bytes not the same as advertised on the leading byte
// Invalid encoding
if ((continuation & UTF8_CONTINUATION_MASK) != UTF8_CONTINUATION_VALUE)
return INVALID_CODEPOINT;
codepoint <<= UTF8_CONTINUATION_CODEPOINT_BITS;
codepoint |= continuation & ~UTF8_CONTINUATION_MASK;
(*index)++;
}
int proper_len = calculate_utf8_len(codepoint);
// Overlong encoding: too many bytes were used to encode a short codepoint
// Invalid encoding
if (proper_len != encoding_len)
return INVALID_CODEPOINT;
// Surrogates are invalid Unicode codepoints, and should only be used in UTF-16
// Invalid encoding
if (codepoint < BMP_END && (codepoint & GENERIC_SURROGATE_MASK) == GENERIC_SURROGATE_VALUE)
return INVALID_CODEPOINT;
// UTF-8 can encode codepoints larger than the Unicode standard allows
// Invalid encoding
if (codepoint > UNICODE_MAX)
return INVALID_CODEPOINT;
return codepoint;
}
// Calculates the number of UTF-16 characters it would take to encode a codepoint
// The codepoint won't be checked for validity, that should be done beforehand.
static int calculate_utf16_len(codepoint_t codepoint)
{
if (codepoint <= BMP_END)
return 1;
return 2;
}
// Encodes a codepoint in a UTF-16 string.
// The codepoint won't be checked for validity, that should be done beforehand.
//
// codepoint: The codepoint to be encoded.
// utf16: The UTF-16 string
// len: The length of the UTF-16 string, in UTF-16 characters
// index: The first empty index on the string.
//
// return: The number of characters written to the string.
static size_t encode_utf16(codepoint_t codepoint, utf16_t* utf16, size_t len, size_t index)
{
// Not enough space on the string
if (index >= len)
return 0;
if (codepoint <= BMP_END)
{
utf16[index] = codepoint;
return 1;
}
// Not enough space on the string for two surrogates
if (index + 1 >= len)
return 0;
codepoint -= SURROGATE_CODEPOINT_OFFSET;
utf16_t low = LOW_SURROGATE_VALUE;
low |= codepoint & SURROGATE_CODEPOINT_MASK;
codepoint >>= SURROGATE_CODEPOINT_BITS;
utf16_t high = HIGH_SURROGATE_VALUE;
high |= codepoint & SURROGATE_CODEPOINT_MASK;
utf16[index] = high;
utf16[index + 1] = low;
return 2;
}
size_t utf8_to_utf16(const unsigned char * utf8, size_t utf8_len, unsigned short* utf16, size_t utf16_len)
{
// The next codepoint that will be written in the UTF-16 string
// or the size of the required buffer if utf16 is NULL
size_t utf16_index = 0;
for (size_t utf8_index = 0; utf8_index < utf8_len; utf8_index++)
{
codepoint_t codepoint = decode_utf8(utf8, utf8_len, &utf8_index);
if (utf16 == NULL)
utf16_index += calculate_utf16_len(codepoint);
else
utf16_index += encode_utf16(codepoint, utf16, utf16_len, utf16_index);
}
return utf16_index;
}

View File

@@ -22,7 +22,6 @@
#include <ventoy_define.h>
#include <ventoy_util.h>
static int g_tar_filenum = 0;
static char *g_tar_buffer = NULL;
static ventoy_file *g_tar_filelist = NULL;

View File

@@ -200,6 +200,7 @@ extern int g_unxz_len;
void unxz_error(char *x);
int unxz_flush(void *src, unsigned int size);
char * ventoy_base64_encode(const char *data, int input_length, int *output_length);
size_t utf8_to_utf16(const unsigned char * utf8, size_t utf8_len, unsigned short* utf16, size_t utf16_len);
#endif /* __VENTOY_UTIL_H__ */

View File

@@ -71,7 +71,7 @@ static const char *g_plugin_name[plugin_type_max] =
"auto_memdisk", "dud"
};
static char g_ventoy_help_lang[MAX_LANGUAGE][8];
static char g_ventoy_menu_lang[MAX_LANGUAGE][8];
static char g_pub_path[2 * MAX_PATH];
static data_control g_data_control[bios_max + 1];
@@ -521,7 +521,7 @@ void ventoy_data_default_control(data_control *data)
data->secondary_menu_timeout = 0;
strlcpy(data->default_kbd_layout, "QWERTY_USA");
strlcpy(data->help_text_language, "en_US");
strlcpy(data->menu_language, "en_US");
}
int ventoy_data_cmp_control(data_control *data1, data_control *data2)
@@ -551,7 +551,7 @@ int ventoy_data_cmp_control(data_control *data1, data_control *data2)
if (strcmp(data1->default_search_root, data2->default_search_root) ||
strcmp(data1->default_image, data2->default_image) ||
strcmp(data1->default_kbd_layout, data2->default_kbd_layout) ||
strcmp(data1->help_text_language, data2->help_text_language))
strcmp(data1->menu_language, data2->menu_language))
{
return 1;
}
@@ -594,7 +594,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i
VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_SECONDARY_TIMEOUT", secondary_menu_timeout);
VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_DEFAULT_KBD_LAYOUT", default_kbd_layout);
VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_HELP_TXT_LANGUAGE", help_text_language);
VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_MENU_LANGUAGE", menu_language);
if (strcmp(def->default_search_root, data->default_search_root))
{
@@ -641,7 +641,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen)
VTOY_JSON_FMT_SINT("menu_timeout", ctrl->menu_timeout);
VTOY_JSON_FMT_SINT("secondary_menu_timeout", ctrl->secondary_menu_timeout);
VTOY_JSON_FMT_STRN("default_kbd_layout", ctrl->default_kbd_layout);
VTOY_JSON_FMT_STRN("help_text_language", ctrl->help_text_language);
VTOY_JSON_FMT_STRN("menu_language", ctrl->menu_language);
valid = 0;
if (ctrl->default_search_root[0] && ventoy_is_directory_exist("%s%s", g_cur_dir, ctrl->default_search_root))
@@ -660,16 +660,15 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen)
VTOY_JSON_FMT_STRN("default_image", ctrl->default_image);
VTOY_JSON_FMT_SINT("default_image_valid", valid);
VTOY_JSON_FMT_KEY("help_list");
VTOY_JSON_FMT_KEY("menu_list");
VTOY_JSON_FMT_ARY_BEGIN();
for (i = 0; g_ventoy_help_lang[i][0]; i++)
for (i = 0; g_ventoy_menu_lang[i][0]; i++)
{
VTOY_JSON_FMT_ITEM(g_ventoy_help_lang[i]);
VTOY_JSON_FMT_ITEM(g_ventoy_menu_lang[i]);
}
VTOY_JSON_FMT_ARY_ENDEX();
VTOY_JSON_FMT_OBJ_END();
VTOY_JSON_FMT_END(pos);
@@ -712,7 +711,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json)
VTOY_JSON_STR("default_image", ctrl->default_image);
VTOY_JSON_STR("default_search_root", ctrl->default_search_root);
VTOY_JSON_STR("help_text_language", ctrl->help_text_language);
VTOY_JSON_STR("menu_language", ctrl->menu_language);
VTOY_JSON_STR("default_kbd_layout", ctrl->default_kbd_layout);
ret = ventoy_data_save_all();
@@ -3673,24 +3672,47 @@ static int ventoy_api_injection_del(struct mg_connection *conn, VTOY_JSON *json)
static int ventoy_api_preview_json(struct mg_connection *conn, VTOY_JSON *json)
{
int i = 0;
int pos = 0;
int len = 0;
int encodelen = 0;
int utf16enclen = 0;
char *encodebuf = NULL;
unsigned short *utf16buf = NULL;
(void)json;
len = ventoy_data_real_save_all(0);
encodebuf = ventoy_base64_encode(JSON_SAVE_BUFFER, len, &encodelen);
encodebuf[encodelen] = 0;
/* We can not use json directly, because it will be formated in the JS. */
len = ventoy_data_real_save_all(0);
utf16buf = (unsigned short *)malloc(2 * len + 16);
if (!utf16buf)
{
goto json;
}
utf16enclen = (int)utf8_to_utf16((unsigned char *)JSON_SAVE_BUFFER, len, utf16buf, len + 2);
encodebuf = (char *)malloc(utf16enclen * 4 + 16);
if (!encodebuf)
{
goto json;
}
for (i = 0; i < utf16enclen; i++)
{
scnprintf(encodebuf + i * 4, 5, "%04X", utf16buf[i]);
}
json:
VTOY_JSON_FMT_BEGIN(pos, JSON_BUFFER, JSON_BUF_MAX);
VTOY_JSON_FMT_OBJ_BEGIN();
VTOY_JSON_FMT_STRN("json", encodebuf);
VTOY_JSON_FMT_STRN("json", (encodebuf ? encodebuf : ""));
VTOY_JSON_FMT_OBJ_END();
VTOY_JSON_FMT_END(pos);
free(encodebuf);
CHECK_FREE(encodebuf);
CHECK_FREE(utf16buf);
ventoy_json_buffer(conn, JSON_BUFFER, pos);
return 0;
@@ -3983,6 +4005,11 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p)
if (node->enDataType == JSON_TYPE_OBJECT)
{
child = node->pstChild;
if (child->enDataType != JSON_TYPE_STRING)
{
continue;
}
if (strcmp(child->pcName, "VTOY_DEFAULT_MENU_MODE") == 0)
{
@@ -4046,13 +4073,13 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p)
}
}
}
else if (strcmp(child->pcName, "VTOY_HELP_TXT_LANGUAGE") == 0)
else if (strcmp(child->pcName, "VTOY_MENU_LANGUAGE") == 0)
{
for (i = 0; g_ventoy_help_lang[i][0]; i++)
for (i = 0; g_ventoy_menu_lang[i][0]; i++)
{
if (strcmp(child->unData.pcStrVal, g_ventoy_help_lang[i]) == 0)
if (strcmp(child->unData.pcStrVal, g_ventoy_menu_lang[i]) == 0)
{
strlcpy(data->help_text_language, child->unData.pcStrVal);
strlcpy(data->menu_language, child->unData.pcStrVal);
break;
}
}
@@ -5288,25 +5315,26 @@ int ventoy_http_init(void)
char *Buffer = NULL;
int BufLen = 0;
ventoy_read_file_to_buf("www/helplist", 4, (void **)&Buffer, &BufLen);
ventoy_read_file_to_buf("www/menulist", 4, (void **)&Buffer, &BufLen);
if (Buffer)
{
for (i = 0; i < BufLen / 5; i++)
{
memcpy(g_ventoy_help_lang[i], Buffer + i * 5, 5);
g_ventoy_help_lang[i][5] = 0;
memcpy(g_ventoy_menu_lang[i], Buffer + i * 5, 5);
g_ventoy_menu_lang[i][5] = 0;
}
free(Buffer);
}
#else
ventoy_file *file;
file = ventoy_tar_find_file("www/helplist");
file = ventoy_tar_find_file("www/menulist");
if (file)
{
for (i = 0; i < file->size / 5; i++)
{
memcpy(g_ventoy_help_lang[i], (char *)(file->addr) + i * 5, 5);
g_ventoy_help_lang[i][5] = 0;
memcpy(g_ventoy_menu_lang[i], (char *)(file->addr) + i * 5, 5);
g_ventoy_menu_lang[i][5] = 0;
}
}
#endif

View File

@@ -22,7 +22,7 @@
#include <civetweb.h>
#define MAX_LANGUAGE 128
#define MAX_LANGUAGE 256
#define L1 " "
#define L2 " "
@@ -83,7 +83,7 @@ typedef struct data_control
char default_search_root[MAX_PATH];
char default_image[MAX_PATH];
char default_kbd_layout[32];
char help_text_language[32];
char menu_language[32];
}data_control;
#define display_mode_gui 0
@@ -388,7 +388,7 @@ else\
#define ventoy_parse_json(name) \
{\
int __loop;\
int __len = strlen(#name);\
int __len = (int)strlen(#name);\
if (strncmp(#name, node->pcName, __len) == 0)\
{\
for (__loop = 0; __loop < bios_max; __loop++)\

View File

@@ -1,22 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
# Visual Studio Version 16
VisualStudioVersion = 16.0.31729.503
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VentoyPlugson", "VentoyPlugson\VentoyPlugson.vcxproj", "{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Debug|Win32.ActiveCfg = Debug|Win32
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Debug|Win32.Build.0 = Debug|Win32
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Debug|x64.ActiveCfg = Debug|x64
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Debug|x64.Build.0 = Debug|x64
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Release|Win32.ActiveCfg = Release|Win32
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Release|Win32.Build.0 = Release|Win32
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Release|x64.ActiveCfg = Release|x64
{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D15C2D76-198B-4FE5-8232-D57D911FB022}
EndGlobalSection
EndGlobal

View File

@@ -5,10 +5,18 @@
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{321D6EE2-2AB3-4103-9F05-EC4EC67A75E1}</ProjectGuid>
@@ -23,6 +31,12 @@
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@@ -30,24 +44,46 @@
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>..\..\..\src\Core;..\..\..\src\Web;..\..\..\src\Include;..\..\..\src\Lib\xz-embedded\linux\include;..\..\..\src\Lib\xz-embedded\linux\include\linux;..\..\..\src\Lib\xz-embedded\userspace;..\..\..\src\Lib\fat_io_lib;..\..\..\src\Lib\libhttp\include;$(ProjectDir);$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>..\..\..\src\Core;..\..\..\src\Web;..\..\..\src\Include;..\..\..\src\Lib\xz-embedded\linux\include;..\..\..\src\Lib\xz-embedded\linux\include\linux;..\..\..\src\Lib\xz-embedded\userspace;..\..\..\src\Lib\fat_io_lib;..\..\..\src\Lib\libhttp\include;$(ProjectDir);$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>..\..\..\src\Core;..\..\..\src\Web;..\..\..\src\Include;..\..\..\src\Lib\xz-embedded\linux\include;..\..\..\src\Lib\xz-embedded\linux\include\linux;..\..\..\src\Lib\xz-embedded\userspace;..\..\..\src\Lib\fat_io_lib;..\..\..\src\Lib\libhttp\include;$(ProjectDir);$(IncludePath);$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>..\..\..\src\Core;..\..\..\src\Web;..\..\..\src\Include;..\..\..\src\Lib\xz-embedded\linux\include;..\..\..\src\Lib\xz-embedded\linux\include\linux;..\..\..\src\Lib\xz-embedded\userspace;..\..\..\src\Lib\fat_io_lib;..\..\..\src\Lib\libhttp\include;$(ProjectDir);$(IncludePath);$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
<TargetName>VentoyPlugson_X64</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
@@ -68,6 +104,26 @@
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;INIT;STATIC=static;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<DelayLoadDLLs>gdi32.dll;winspool.dll;comdlg32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;uuid.dll;odbc32.dll;odbccp32.dll</DelayLoadDLLs>
</Link>
<Manifest>
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@@ -92,6 +148,30 @@
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;INIT;STATIC=static;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<DelayLoadDLLs>gdi32.dll;winspool.dll;comdlg32.dll;advapi32.dll;shell32.dll;ole32.dll;oleaut32.dll;uuid.dll;odbc32.dll;odbccp32.dll</DelayLoadDLLs>
</Link>
<Manifest>
<AdditionalManifestFiles>$(ProjectDir)\Res\Plugson32.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\Core\ventoy_crc32.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_disk.c" />
@@ -99,6 +179,7 @@
<ClCompile Include="..\..\..\src\Core\ventoy_json.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_log.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_md5.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_utf.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_util.c" />
<ClCompile Include="..\..\..\src\Core\ventoy_util_windows.c" />
<ClCompile Include="..\..\..\src\Lib\fat_io_lib\fat_access.c" />

View File

@@ -75,6 +75,9 @@
<ClCompile Include="..\..\..\src\main_windows.c">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\Core\ventoy_utf.c">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\Core\ventoy_define.h">

View File

@@ -6,8 +6,17 @@
<LocalDebuggerCommandArguments>
</LocalDebuggerCommandArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerWorkingDirectory>E:\</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<LocalDebuggerCommandArguments />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerWorkingDirectory>E:\</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LocalDebuggerWorkingDirectory>E:\</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@@ -1 +1 @@
20221021 14:42:35
20221204 12:35:33

View File

@@ -1 +1 @@
de_DEen_USfr_FRhr_HRid_IDja_JPko_KRpt_PTsr_RStr_TRzh_CN
bn_BNde_DEen_USfr_FRhi_HIhr_HRid_IDja_JPko_KRpt_PTru_RUsr_RStr_TRzh_CN

View File

@@ -735,7 +735,7 @@
</div>
<div class="modal-body">
<textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace"></textarea>
<textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace" spellcheck="false"></textarea>
</div>
<div class="modal-footer">
<button id="PrewForm_lang_2" type="button" class="btn btn-primary btn-flat" data-dismiss="modal">确定</button>
@@ -757,7 +757,7 @@
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b id="plugson_build_date">20221021 14:42:35</b>
<b id="plugson_build_date">20221204 12:35:33</b>
</div>
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
</footer>
@@ -819,7 +819,7 @@
$('#JsonPeviewForm #JsonPreviewForm_lang_1').text(g_vtoy_cur_language.STR_JSON_PREVIEW);
$('#JsonPeviewForm #PrewForm_lang_2').text(g_vtoy_cur_language.STR_BTN_OK);
$('#pre_json_preview').text(atob(data.json));
$('#pre_json_preview').text(VtoyUTF16HexToAscii(data.json));
$("#JsonPreviewModal").modal();
});
}

1
Plugson/www/menulist Normal file
View File

@@ -0,0 +1 @@
bn_BNde_DEen_USfr_FRhi_HIhr_HRid_IDja_JPko_KRpt_PTru_RUsr_RStr_TRzh_CN

View File

@@ -32,6 +32,42 @@
</ul>
</div>
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_MENU_LANGUAGE
<span id="id_span_desc_cn"> —— 菜单语言</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<select id="id_ctrl_sel_menu_lang" name="name_ctrl_sel_menu_lang" class="form-control">
</select>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col">选项说明</td>
<td>
Ventoy 菜单的语言版本。默认是 "en_US"。
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td>
<td>
Ventoy menu language. Default is "en_US",
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
@@ -995,43 +1031,6 @@
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_HELP_TXT_LANGUAGE
<span id="id_span_desc_cn"> —— 帮助信息语言</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<select id="id_ctrl_sel_help_lang" name="name_ctrl_sel_help_lang" class="form-control">
</select>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col">选项说明</td>
<td>
快捷键 <code>h</code> 显示的帮助信息的语言版本。默认是 "en_US"。
具体请参考 <a target="_blank" href='https://www.ventoy.net/cn/plugin_control.html#vtoy_help_language'>Ventoy 帮助信息</a>
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td>
<td>
The language of the help text when press <code>h</code>. Default is "en_US",
refer <a target="_blank" href='https://www.ventoy.net/en/plugin_control.html#vtoy_help_language'>Ventoy Help Text</a> for details.
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
</div>
@@ -1091,7 +1090,7 @@
data.filter_vhd = parseInt($('input:radio[name=id_ctrl_radio_filt_vhd]:checked').val());
data.filter_vtoy = parseInt($('input:radio[name=id_ctrl_radio_filt_vtoy]:checked').val());
data.help_text_language = $('select[id=id_ctrl_sel_help_lang').val();
data.menu_language = $('select[id=id_ctrl_sel_menu_lang').val();
}
function VtoyFillCurrentPageItem(data) {
@@ -1183,17 +1182,16 @@
//VTOY_FILE_FLT_VTOY
$('input:radio[name=id_ctrl_radio_filt_vtoy]')[data.filter_vtoy].checked = true;
//VTOY_HELP_TXT_LANGUAGE
if ($("select[id=id_ctrl_sel_help_lang")[0].options.length === 0)
//VTOY_MENU_LANGUAGE
if ($("select[id=id_ctrl_sel_menu_lang")[0].options.length === 0)
{
for (var i = 0; i < data.help_list.length; i++) {
var hlang = data.help_list[i];
for (var i = 0; i < data.menu_list.length; i++) {
var hlang = data.menu_list[i];
var opt = '<option title="'+hlang+'">'+hlang+'</option>';
$('select[id=id_ctrl_sel_help_lang').append(opt);
$('select[id=id_ctrl_sel_menu_lang').append(opt);
}
}
$('select[id=id_ctrl_sel_help_lang').val(data.help_text_language);
$('select[id=id_ctrl_sel_menu_lang').val(data.menu_language);
}
function VtoySaveCurrentPage() {
@@ -1224,7 +1222,7 @@
filter_img: data.filter_img,
filter_vhd: data.filter_vhd,
filter_vtoy: data.filter_vtoy,
help_text_language: data.help_text_language
menu_language: data.menu_language
}, function(e) {
Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
});
@@ -1328,7 +1326,7 @@
});
$('select[id=id_ctrl_sel_max_depth]').change(VtoySaveCurrentPage);
$('select[id=id_ctrl_sel_kbd]').change(VtoySaveCurrentPage);
$('select[id=id_ctrl_sel_help_lang]').change(VtoySaveCurrentPage);
$('select[id=id_ctrl_sel_menu_lang]').change(VtoySaveCurrentPage);
$('input[id=id_ctrl_text_timeout]').change(function() {
var value = $('input:text[id=id_ctrl_text_timeout]').val();
if (/^[0-9][0-9]*$/.test(value)) {

View File

@@ -1,4 +1,13 @@
function VtoyUTF16HexToAscii(hex) {
var str = "";
for (var i = 0; i < hex.length; i += 4) {
str += String.fromCharCode(parseInt(hex.substring(i, i + 4), 16));
}
return str;
}
function ventoy_replace_slash(str) {
var str1 = str.replace(/\\/g, '/');
var str2 = str1.replace(/\/\//g, '/');

View File

@@ -27,7 +27,7 @@ Most type of OS supported(Windows/WinPE/Linux/Unix/ChromeOS/Vmware/Xen...) <br/>
Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019, Windows Server 2022, WinPE
**Linux**
Debian, Ubuntu, CentOS(6/7/8/9), RHEL(6/7/8/9), Deepin, Fedora, EuroLinux(6/7/8/9), Rocky Linux, AlmaLinux, openEuler, OpenAnolis, SLES, openSUSE, MX Linux, Manjaro, Linux Mint, Endless OS, Elementary OS, Solus, Linx, Zorin, antiX, PClinuxOS, Arch, ArcoLinux, ArchLabs, BlackArch, Obarun, Artix Linux, Puppy Linux, Tails, Slax, Kali, Mageia, Slackware, Q4OS, Archman, Gentoo, Pentoo, NixOS, Kylin, openKylin, Ubuntu Kylin, Lubuntu, Xubuntu, Kubuntu, Ubuntu MATE, Ubuntu Budgie, Ubuntu Studio, Bluestar, OpenMandriva, ExTiX, Netrunner, ALT Linux, Nitrux, Peppermint, KDE neon, Linux Lite, Parrot OS, Qubes, Pop OS, ROSA, Void Linux, Star Linux, EndeavourOS, MakuluLinux, Voyager, Feren, ArchBang, LXLE, Knoppix, Calculate Linux, Clear Linux, Pure OS, Oracle Linux, Trident, Septor, Porteus, Devuan, GoboLinux, 4MLinux, Simplicity Linux, Zeroshell, Android-x86, netboot.xyz, Slitaz, SuperGrub2Disk, Proxmox VE, Kaspersky Rescue, SystemRescueCD, MemTest86, MemTest86+, MiniTool Partition Wizard, Parted Magic, veket, Sabayon, Scientific, alpine, ClearOS, CloneZilla, Berry Linux, Trisquel, Ataraxia Linux, Minimal Linux Live, BackBox Linux, Emmabuntüs, ESET SysRescue Live,Nova Linux, AV Linux, RoboLinux, NuTyX, IPFire, SELKS, ZStack, Enso Linux, Security Onion, Network Security Toolkit, Absolute Linux, TinyCore, Springdale Linux, Frost Linux, Shark Linux, LinuxFX, Snail Linux, Astra Linux, Namib Linux, Resilient Linux, Virage Linux, Blackweb Security OS, R-DriveImage, O-O.DiskImage, Macrium, ToOpPy LINUX, GNU Guix, YunoHost, foxclone, siduction, Adelie Linux, Elive, Pardus, CDlinux, AcademiX, Austrumi, Zenwalk, Anarchy, DuZeru, BigLinux, OpenMediaVault, Ubuntu DP, Exe GNU/Linux, 3CX Phone System, KANOTIX, Grml, Karoshi, PrimTux, ArchStrike, CAELinux, Cucumber, Fatdog, ForLEx, Hanthana, Kwort, MiniNo, Redcore, Runtu, Asianux, Clu Linux Live, Uruk, OB2D, BlueOnyx, Finnix, HamoniKR, Parabola, LinHES, LinuxConsole, BEE free, Untangle, Pearl, Thinstation, TurnKey, tuxtrans, Neptune, HefftorLinux, GeckoLinux, Mabox Linux, Zentyal, Maui, Reborn OS, SereneLinux , SkyWave Linux, Kaisen Linux, Regata OS, TROM-Jaro, DRBL Linux, Chalet OS, Chapeau, Desa OS, BlankOn, OpenMamba, Frugalware, Kibojoe Linux, Revenge OS, Tsurugi Linux, Drauger OS, Hash Linux, gNewSense, Ikki Boot, SteamOS, Hyperbola, VyOS, EasyNAS, SuperGamer, Live Raizo, Swift Linux, RebeccaBlackOS, Daphile, CRUX, Univention, Ufficio Zero, Rescuezilla, Phoenix OS, Garuda Linux, Mll, NethServer, OSGeoLive, Easy OS, Volumio, FreedomBox, paldo, UBOS, Recalbox, batocera, Lakka, LibreELEC, Pardus Topluluk, Pinguy, KolibriOS, Elastix, Arya, Omoikane, Omarine, Endian Firewall, Hamara, Rocks Cluster, MorpheusArch, Redo, Slackel, SME Server, APODIO, Smoothwall, Dragora, Linspire, Secure-K OS, Peach OSI, Photon, Plamo, SuperX, Bicom, Ploplinux, HP SPP, LliureX, Freespire, DietPi, BOSS, Webconverger, Lunar, TENS, Source Mage, RancherOS, T2, Vine, Pisi, blackPanther, mAid, Acronis, Active.Boot, AOMEI, Boot.Repair, CAINE, DaRT, EasyUEFI, R-Drive, PrimeOS, Avira Rescue System, bitdefender, Checkra1n Linux, Lenovo Diagnostics, Clover, Bliss-OS, Lenovo BIOS Update, Arcabit Rescue Disk, MiyoLinux, TeLOS, Kerio Control, RED OS, OpenWrt, MocaccinoOS, EasyStartup, Pyabr, Refracta, Eset SysRescue, Linpack Xtreme, Archcraft, NHVBOOT, pearOS, SeaTools, Easy Recovery Essentional, iKuai, StorageCraft SCRE, ZFSBootMenu, TROMjaro, BunsenLabs, Todo en Uno, ChallengerOS, Nobara, Holo, ......
Debian, Ubuntu, CentOS(6/7/8/9), RHEL(6/7/8/9), Deepin, Fedora, Rocky Linux, AlmaLinux, EuroLinux(6/7/8/9), openEuler, OpenAnolis, SLES, openSUSE, MX Linux, Manjaro, Linux Mint, Endless OS, Elementary OS, Solus, Linx, Zorin, antiX, PClinuxOS, Arch, ArcoLinux, ArchLabs, BlackArch, Obarun, Artix Linux, Puppy Linux, Tails, Slax, Kali, Mageia, Slackware, Q4OS, Archman, Gentoo, Pentoo, NixOS, Kylin, openKylin, Ubuntu Kylin, KylinSec, Lubuntu, Xubuntu, Kubuntu, Ubuntu MATE, Ubuntu Budgie, Ubuntu Studio, Bluestar, OpenMandriva, ExTiX, Netrunner, ALT Linux, Nitrux, Peppermint, KDE neon, Linux Lite, Parrot OS, Qubes, Pop OS, ROSA, Void Linux, Star Linux, EndeavourOS, MakuluLinux, Voyager, Feren, ArchBang, LXLE, Knoppix, Calculate Linux, Clear Linux, Pure OS, Oracle Linux, Trident, Septor, Porteus, Devuan, GoboLinux, 4MLinux, Simplicity Linux, Zeroshell, Android-x86, netboot.xyz, Slitaz, SuperGrub2Disk, Proxmox VE, Kaspersky Rescue, SystemRescueCD, MemTest86, MemTest86+, MiniTool Partition Wizard, Parted Magic, veket, Sabayon, Scientific, alpine, ClearOS, CloneZilla, Berry Linux, Trisquel, Ataraxia Linux, Minimal Linux Live, BackBox Linux, Emmabuntüs, ESET SysRescue Live,Nova Linux, AV Linux, RoboLinux, NuTyX, IPFire, SELKS, ZStack, Enso Linux, Security Onion, Network Security Toolkit, Absolute Linux, TinyCore, Springdale Linux, Frost Linux, Shark Linux, LinuxFX, Snail Linux, Astra Linux, Namib Linux, Resilient Linux, Virage Linux, Blackweb Security OS, R-DriveImage, O-O.DiskImage, Macrium, ToOpPy LINUX, GNU Guix, YunoHost, foxclone, siduction, Adelie Linux, Elive, Pardus, CDlinux, AcademiX, Austrumi, Zenwalk, Anarchy, DuZeru, BigLinux, OpenMediaVault, Ubuntu DP, Exe GNU/Linux, 3CX Phone System, KANOTIX, Grml, Karoshi, PrimTux, ArchStrike, CAELinux, Cucumber, Fatdog, ForLEx, Hanthana, Kwort, MiniNo, Redcore, Runtu, Asianux, Clu Linux Live, Uruk, OB2D, BlueOnyx, Finnix, HamoniKR, Parabola, LinHES, LinuxConsole, BEE free, Untangle, Pearl, Thinstation, TurnKey, tuxtrans, Neptune, HefftorLinux, GeckoLinux, Mabox Linux, Zentyal, Maui, Reborn OS, SereneLinux , SkyWave Linux, Kaisen Linux, Regata OS, TROM-Jaro, DRBL Linux, Chalet OS, Chapeau, Desa OS, BlankOn, OpenMamba, Frugalware, Kibojoe Linux, Revenge OS, Tsurugi Linux, Drauger OS, Hash Linux, gNewSense, Ikki Boot, SteamOS, Hyperbola, VyOS, EasyNAS, SuperGamer, Live Raizo, Swift Linux, RebeccaBlackOS, Daphile, CRUX, Univention, Ufficio Zero, Rescuezilla, Phoenix OS, Garuda Linux, Mll, NethServer, OSGeoLive, Easy OS, Volumio, FreedomBox, paldo, UBOS, Recalbox, batocera, Lakka, LibreELEC, Pardus Topluluk, Pinguy, KolibriOS, Elastix, Arya, Omoikane, Omarine, Endian Firewall, Hamara, Rocks Cluster, MorpheusArch, Redo, Slackel, SME Server, APODIO, Smoothwall, Dragora, Linspire, Secure-K OS, Peach OSI, Photon, Plamo, SuperX, Bicom, Ploplinux, HP SPP, LliureX, Freespire, DietPi, BOSS, Webconverger, Lunar, TENS, Source Mage, RancherOS, T2, Vine, Pisi, blackPanther, mAid, Acronis, Active.Boot, AOMEI, Boot.Repair, CAINE, DaRT, EasyUEFI, R-Drive, PrimeOS, Avira Rescue System, bitdefender, Checkra1n Linux, Lenovo Diagnostics, Clover, Bliss-OS, Lenovo BIOS Update, Arcabit Rescue Disk, MiyoLinux, TeLOS, Kerio Control, RED OS, OpenWrt, MocaccinoOS, EasyStartup, Pyabr, Refracta, Eset SysRescue, Linpack Xtreme, Archcraft, NHVBOOT, pearOS, SeaTools, Easy Recovery Essentional, iKuai, StorageCraft SCRE, ZFSBootMenu, TROMjaro, BunsenLabs, Todo en Uno, ChallengerOS, Nobara, Holo, CachyOS, ......
**Unix**
DragonFly FreeBSD pfSense GhostBSD FreeNAS TrueNAS XigmaNAS FuryBSD OPNsense HardenedBSD MidnightBSD ClonOS EmergencyBootKit

View File

@@ -109,17 +109,175 @@ BOOL DISK_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLetter,
return ret;
}
BOOL DISK_FormatVolume(char DriveLetter, int fs)
// Output command
typedef struct
{
DWORD Lines;
PCHAR Output;
} TEXTOUTPUT, * PTEXTOUTPUT;
// Callback command types
typedef enum
{
PROGRESS,
DONEWITHSTRUCTURE,
UNKNOWN2,
UNKNOWN3,
UNKNOWN4,
UNKNOWN5,
INSUFFICIENTRIGHTS,
UNKNOWN7,
UNKNOWN8,
UNKNOWN9,
UNKNOWNA,
DONE,
UNKNOWNC,
UNKNOWND,
OUTPUT,
STRUCTUREPROGRESS
} CALLBACKCOMMAND;
// FMIFS callback definition
typedef BOOLEAN(__stdcall* PFMIFSCALLBACK)(CALLBACKCOMMAND Command, DWORD SubAction, PVOID ActionInfo);
// Chkdsk command in FMIFS
typedef VOID(__stdcall* PCHKDSK)(PWCHAR DriveRoot,
PWCHAR Format,
BOOL CorrectErrors,
BOOL Verbose,
BOOL CheckOnlyIfDirty,
BOOL ScanDrive,
PVOID Unused2,
PVOID Unused3,
PFMIFSCALLBACK Callback);
// media flags
#define FMIFS_HARDDISK 0xC
#define FMIFS_FLOPPY 0x8
// Format command in FMIFS
typedef VOID(__stdcall* PFORMATEX)(PWCHAR DriveRoot,
DWORD MediaFlag,
PWCHAR Format,
PWCHAR Label,
BOOL QuickFormat,
DWORD ClusterSize,
PFMIFSCALLBACK Callback);
// FormatExCallback
static int g_dll_format_error = 0;
BOOLEAN __stdcall FormatExCallback(CALLBACKCOMMAND Command, DWORD Modifier, PVOID Argument)
{
PDWORD percent;
PBOOLEAN status;
switch (Command)
{
case PROGRESS:
percent = (PDWORD)Argument;
Log("Format percent: %d \n", *percent);
break;
case OUTPUT:
break;
case DONE:
status = (PBOOLEAN)Argument;
if (*status == FALSE)
{
g_dll_format_error = 1;
}
else
{
}
break;
}
return TRUE;
}
BOOL DLL_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize)
{
PWCHAR Label = L"Ventoy";
PWCHAR Format = NULL;
WCHAR RootDirectory[MAX_PATH] = { 0 };
HMODULE ifsModule;
PFORMATEX FormatEx;
ifsModule = LoadLibraryA("fmifs.dll");
if (NULL == ifsModule)
{
Log("LoadLibrary fmifs.dll failed %u", LASTERR);
return FALSE;
}
Log("Find ifsModule");
FormatEx = (PFORMATEX)GetProcAddress(ifsModule, "FormatEx");
if (FormatEx == NULL)
{
Log("Failed to get FormatEx handler\n");
return FALSE;
}
Log("Find FormatEx=%p", FormatEx);
RootDirectory[0] = DriveLetter;
RootDirectory[1] = L':';
RootDirectory[2] = L'\\';
RootDirectory[3] = (WCHAR)0;
DWORD media;
DWORD driveType;
driveType = GetDriveTypeW(RootDirectory);
if (driveType != DRIVE_FIXED)
media = FMIFS_FLOPPY;
if (driveType == DRIVE_FIXED)
media = FMIFS_HARDDISK;
Format = GetVentoyFsFmtNameByTypeW(fs);
g_dll_format_error = 0;
Log("Call FormatEx Function for %C: %s ClusterSize=%u(%uKB)", DriveLetter, GetVentoyFsFmtNameByTypeA(fs), ClusterSize, ClusterSize / 1024);
FormatEx(RootDirectory, media, Format, Label, TRUE, ClusterSize, FormatExCallback);
FreeLibrary(ifsModule);
if (g_dll_format_error)
{
Log("Format failed by DLL");
return FALSE;
}
Log("Format success by DLL");
return TRUE;
}
BOOL DISK_FormatVolume(char DriveLetter, int fs, UINT64 VolumeSize)
{
DWORD ClusterSize = 0;
BOOL ret = FALSE;
//ret = VDS_FormatVolume(DriveLetter, fs);
ClusterSize = (DWORD)GetClusterSize();
Log("DISK_FormatVolume %C:\\ %s VolumeSize=%llu ClusterSize=%u(%uKB)",
DriveLetter, GetVentoyFsNameByType(fs), (ULONGLONG)VolumeSize, ClusterSize, ClusterSize/1024);
ret = DLL_FormatVolume(DriveLetter, fs, ClusterSize);
if (!ret)
{
//ret = DSPT_FormatVolume(DriveLetter, fs);
ret = VDS_FormatVolume(DriveLetter, fs, ClusterSize);
if (!ret)
{
ret = PSHELL_FormatVolume(DriveLetter, fs);
ret = DSPT_FormatVolume(DriveLetter, fs, ClusterSize);
if (!ret)
{
ret = PSHELL_FormatVolume(DriveLetter, fs, ClusterSize);
}
}
}

View File

@@ -30,6 +30,7 @@ typedef struct VDS_PARA
ULONG NameLen;
ULONGLONG Offset;
CHAR DriveLetter;
DWORD ClusterSize;
}VDS_PARA;
//DISK API
@@ -39,7 +40,7 @@ BOOL DISK_ChangeVtoyEFIAttr(int DriveIndex, UINT64 Offset, UINT64 Attr);
BOOL DISK_ChangeVtoyEFI2ESP(int DriveIndex, UINT64 Offset);
BOOL DISK_ChangeVtoyEFI2Basic(int DriveIndex, UINT64 Offset);
BOOL DISK_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLetter, UINT64 OldBytes, UINT64 ReduceBytes);
BOOL DISK_FormatVolume(char DriveLetter, int fs);
BOOL DISK_FormatVolume(char DriveLetter, int fs, UINT64 VolumeSize);
//VDS com
@@ -51,11 +52,11 @@ BOOL VDS_ChangeVtoyEFI2ESP(int DriveIndex, UINT64 Offset);
BOOL VDS_ChangeVtoyEFI2Basic(int DriveIndex, UINT64 Offset);
BOOL VDS_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLetter, UINT64 OldBytes, UINT64 ReduceBytes);
BOOL VDS_IsLastAvaliable(void);
BOOL VDS_FormatVolume(char DriveLetter, int fs);
BOOL VDS_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize);
//diskpart.exe
BOOL DSPT_CleanDisk(int DriveIndex);
BOOL DSPT_FormatVolume(char DriveLetter, int fs);
BOOL DSPT_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize);
//powershell.exe
BOOL PSHELL_CleanDisk(int DriveIndex);
@@ -63,7 +64,7 @@ BOOL PSHELL_DeleteVtoyEFIPartition(int DriveIndex, UINT64 EfiPartOffset);
BOOL PSHELL_ChangeVtoyEFI2ESP(int DriveIndex, UINT64 Offset);
BOOL PSHELL_ChangeVtoyEFI2Basic(int DriveIndex, UINT64 Offset);
BOOL PSHELL_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLetter, UINT64 OldBytes, UINT64 ReduceBytes);
BOOL PSHELL_FormatVolume(char DriveLetter, int fs);
BOOL PSHELL_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize);
//
// Internel define

View File

@@ -86,7 +86,7 @@ BOOL DSPT_CleanDisk(int DriveIndex)
return DSPT_CommProc(CmdBuf);
}
BOOL DSPT_FormatVolume(char DriveLetter, int fs)
BOOL DSPT_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize)
{
const char* fsname = NULL;
CHAR CmdBuf[256];
@@ -98,15 +98,18 @@ BOOL DSPT_FormatVolume(char DriveLetter, int fs)
return FALSE;
}
if (fs == 1)
fsname = GetVentoyFsFmtNameByTypeA(fs);
if (ClusterSize > 0)
{
fsname = "NTFS";
sprintf_s(CmdBuf, sizeof(CmdBuf), "select volume %C:\r\nformat FS=%s LABEL=Ventoy UNIT=%u QUICK OVERRIDE\r\n", DriveLetter, fsname, ClusterSize);
}
else
{
fsname = "FAT32";
sprintf_s(CmdBuf, sizeof(CmdBuf), "select volume %C:\r\nformat FS=%s LABEL=Ventoy QUICK OVERRIDE\r\n", DriveLetter, fsname);
}
Log("Diskpart cmd:<%s>", CmdBuf);
sprintf_s(CmdBuf, sizeof(CmdBuf), "select volume %C:\r\nformat FS=%s LABEL=Ventoy QUICK OVERRIDE\r\n", DriveLetter, fsname);
return DSPT_CommProc(CmdBuf);
}

View File

@@ -1417,19 +1417,20 @@ BOOL VDS_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLetter,
STATIC BOOL VDS_CallBack_FormatVolume(void* pInterface, VDS_DISK_PROP* pDiskProp, UINT64 data)
{
int fs;
HRESULT hr, hr2;
ULONG completed;
IVdsAsync* pAsync;
IVdsVolumeMF3* pVolume = (IVdsVolumeMF3*)pInterface;
WCHAR* pFs = NULL;
WCHAR FsNTFS[32] = L"NTFS";
WCHAR FsFAT32[32] = L"FAT32";
VDS_PARA* VdsPara = (VDS_PARA*)data;
pFs = (VdsPara->Attr == 1) ? FsNTFS : FsFAT32;
Log("VDS_CallBack_FormatVolume (%C:) (%llu) ...", VdsPara->DriveLetter, (ULONGLONG)VdsPara->Attr);
fs = (int)VdsPara->Attr;
pFs = GetVentoyFsFmtNameByTypeW(fs);
Log("VDS_CallBack_FormatVolume (%C:) (%s) ClusterSize:%u ...", VdsPara->DriveLetter, GetVentoyFsFmtNameByTypeA(fs), VdsPara->ClusterSize);
hr = IVdsVolumeMF3_FormatEx2(pVolume, pFs, 0, 0, L"Ventoy", VDS_FSOF_FORCE | VDS_FSOF_QUICK, &pAsync);
hr = IVdsVolumeMF3_FormatEx2(pVolume, pFs, 0, VdsPara->ClusterSize, L"Ventoy", VDS_FSOF_FORCE | VDS_FSOF_QUICK, &pAsync);
while (SUCCEEDED(hr))
{
hr = IVdsAsync_QueryStatus(pAsync, &hr2, &completed);
@@ -1465,7 +1466,7 @@ STATIC BOOL VDS_CallBack_FormatVolume(void* pInterface, VDS_DISK_PROP* pDiskProp
return TRUE;
}
BOOL VDS_FormatVolume(char DriveLetter, int fs)
BOOL VDS_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize)
{
int i;
BOOL ret = FALSE;
@@ -1495,6 +1496,7 @@ BOOL VDS_FormatVolume(char DriveLetter, int fs)
Para.Attr = fs;
Para.DriveLetter = DriveLetter;
Para.ClusterSize = ClusterSize;
ret = VDS_VolumeCommProc(INTF_VOLUME_MF3, wGuid, VDS_CallBack_FormatVolume, (UINT64)&Para);
Log("VDS_FormatVolume %C: <%s> ret:%d (%s)", DriveLetter, VolumeGuid, ret, ret ? "SUCCESS" : "FAIL");

View File

@@ -256,25 +256,27 @@ BOOL PSHELL_ShrinkVolume(int DriveIndex, const char* VolumeGuid, CHAR DriveLette
return ret;
}
BOOL PSHELL_FormatVolume(char DriveLetter, int fs)
BOOL PSHELL_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize)
{
BOOL ret;
const char* fsname = NULL;
CHAR CmdBuf[512];
if (fs == 1)
fsname = GetVentoyFsFmtNameByTypeA(fs);
if (ClusterSize > 0)
{
fsname = "NTFS";
sprintf_s(CmdBuf, sizeof(CmdBuf),
"format-volume -DriveLetter %C -FileSystem %s -AllocationUnitSize %u -Force -NewFileSystemLabel Ventoy",
DriveLetter, fsname, ClusterSize);
}
else
{
fsname = "FAT32";
sprintf_s(CmdBuf, sizeof(CmdBuf),
"format-volume -DriveLetter %C -FileSystem %s -Force -NewFileSystemLabel Ventoy",
DriveLetter, fsname);
}
sprintf_s(CmdBuf, sizeof(CmdBuf),
"format-volume -DriveLetter %C -FileSystem %s -Force -NewFileSystemLabel Ventoy",
DriveLetter, fsname);
ret = PSHELL_CommProc(CmdBuf);
Log("PSHELL_FormatVolume %C: ret:%d (%s)", DriveLetter, ret, ret ? "SUCCESS" : "FAIL");
return ret;

View File

@@ -19,6 +19,7 @@
*/
#include <Windows.h>
#include <versionhelpers.h>
#include "Ventoy2Disk.h"
#include "Language.h"
@@ -33,13 +34,3 @@ const TCHAR * GetString(enum STR_ID ID)
return NULL;
}
};
static const UINT16 g_unicode_icon[UNICODE_BUTT][3] =
{
{ 0xD83D, 0xDD12, 0x0000 },
};
const UINT16 * GetUnicodeIcon(icon)
{
return g_unicode_icon[icon];
}

View File

@@ -88,6 +88,10 @@ typedef enum STR_ID
STR_PART_VENTOY_FS, //50
STR_PART_FS, //51
STR_PART_CLUSTER, //52
STR_PART_CLUSTER_DEFAULT, //53
STR_ID_MAX
}STR_ID;
@@ -151,13 +155,4 @@ const TCHAR * GetString(enum STR_ID ID);
#define _G(a) GetString(a)
typedef enum UNICODE_ICON
{
UNICODE_LOCK = 0,
UNICODE_BUTT
}UNICODE_ICON;
const UINT16 * GetUnicodeIcon(icon);
#define _UICON(i) GetUnicodeIcon(i)
#endif

Binary file not shown.

View File

@@ -1106,6 +1106,79 @@ static int WriteGrubStage1ToPhyDrive(HANDLE hDrive, int PartStyle)
}
static int FormatPart1LargeFAT32(UINT64 DiskSizeBytes, int CluserSize)
{
MKFS_PARM Option;
FRESULT Ret;
FATFS FS;
Option.fmt = FM_FAT32;
Option.n_fat = 1;
Option.align = 8;
Option.n_root = 1;
if (CluserSize == 0)
{
// < 32GB select 32KB as cluster size
// > 32GB select 128KB as cluster size
if (DiskSizeBytes / 1024 / 1024 / 1024 <= 32)
{
Option.au_size = 32768;
}
else
{
Option.au_size = 131072;
}
}
else
{
Option.au_size = CluserSize;
}
Log("Formatting Part1 large FAT32 ClusterSize:%u(%uKB) ...", CluserSize, CluserSize / 1024);
disk_io_reset_write_error();
Ret = f_mkfs(TEXT("0:"), &Option, 0, 8 * 1024 * 1024);
if (FR_OK == Ret)
{
if (disk_io_is_write_error())
{
Log("Formatting Part1 large FAT32 failed, write error.");
return 1;
}
Log("Formatting Part1 large FAT32 success, now set label");
Ret = f_mount(&FS, TEXT("0:"), 1);
if (FR_OK == Ret)
{
Log("f_mount SUCCESS");
Ret = f_setlabel(TEXT("0:Ventoy"));
if (FR_OK == Ret)
{
Log("f_setlabel SUCCESS");
Ret = f_unmount(TEXT("0:"));
Log("f_unmount %d %s", Ret, (FR_OK == Ret) ? "SUCCESS" : "FAILED");
}
else
{
Log("f_setlabel failed %d", Ret);
}
}
else
{
Log("f_mount failed %d", Ret);
}
return 0;
}
else
{
Log("Formatting Part1 large FAT32 failed");
return 1;
}
}
static int FormatPart1exFAT(UINT64 DiskSizeBytes)
{
@@ -1636,6 +1709,7 @@ int InstallVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int PartStyle, int TryId)
UINT64 Part1StartSector = 0;
UINT64 Part1SectorCount = 0;
UINT64 Part2StartSector = 0;
BOOL LargeFAT32 = FALSE;
Log("#####################################################");
Log("InstallVentoy2PhyDrive try%d %s PhyDrive%d <<%s %s %dGB>>", TryId,
@@ -1737,13 +1811,28 @@ int InstallVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int PartStyle, int TryId)
Sleep(1000 * 5);
}
Log("Formatting part1 exFAT ...");
if (0 != FormatPart1exFAT(pPhyDrive->SizeInBytes))
if (GetVentoyFsType() == VTOY_FS_FAT32 && (Part1SectorCount * 512 >= FAT32_MAX_LIMIT))
{
Log("FormatPart1exFAT failed.");
rc = 1;
goto End;
Log("Formatting part1 large FAT32 ...");
LargeFAT32 = TRUE;
if (0 != FormatPart1LargeFAT32(pPhyDrive->SizeInBytes, GetClusterSize()))
{
Log("FormatPart1LargeFAT32 failed.");
rc = 1;
goto End;
}
}
else
{
Log("Formatting part1 exFAT ...");
if (0 != FormatPart1exFAT(pPhyDrive->SizeInBytes))
{
Log("FormatPart1exFAT failed.");
rc = 1;
goto End;
}
}
PROGRESS_BAR_SET_POS(PT_FORMAT_PART2);
Log("Writing part2 FAT img ...");
@@ -1867,21 +1956,34 @@ End:
}
}
if (GetVentoyFsType() > 0)
if (state)
{
if (state)
if (LargeFAT32)
{
Log("Reformat %C:\\ to %s", MountDrive, GetVentoyFsName());
DISK_FormatVolume(MountDrive, GetVentoyFsType());
Log("No need to reformat for large FAT32");
pPhyDrive->VentoyFsClusterSize = GetVolumeClusterSize(MountDrive);
}
else if (DISK_FormatVolume(MountDrive, GetVentoyFsType(), Part1SectorCount * 512))
{
Log("Reformat %C:\\ to %s SUCCESS", MountDrive, GetVentoyFsName());
pPhyDrive->VentoyFsClusterSize = GetVolumeClusterSize(MountDrive);
if ((GetVentoyFsType() != VTOY_FS_UDF) && (pPhyDrive->VentoyFsClusterSize < 2048))
{
for (i = 0; i < 10; i++)
{
Log("### Invalid cluster size %d ###", pPhyDrive->VentoyFsClusterSize);
}
}
}
else
{
Log("Can not reformat %s to %s", DriveName, GetVentoyFsName());
Log("Reformat %C:\\ to %s FAILED", MountDrive, GetVentoyFsName());
}
}
else
{
Log("No need to reformat ventoy partition");
Log("Can not reformat %s to %s", DriveName, GetVentoyFsName());
}
Log("OK\n");

View File

@@ -251,10 +251,34 @@ static BOOL IsVentoyPhyDrive(int PhyDrive, UINT64 SizeBytes, MBR_HEAD *pMBR, UIN
return TRUE;
}
int GetVolumeClusterSize(char Drive)
{
CHAR Volume[32] = { 0 };
DWORD SectorsPerCluster = 0;
DWORD BytesPerSector = 0;
DWORD NumberOfFreeClusters = 0;
DWORD TotalNumberOfClusters = 0;
sprintf_s(Volume, sizeof(Volume), "%C:\\", Drive);
if (GetDiskFreeSpaceA(Volume, &SectorsPerCluster, &BytesPerSector, &NumberOfFreeClusters, &TotalNumberOfClusters))
{
Log("GetVolumeClusterSize %s SUCCESS %u %u %u", Volume, SectorsPerCluster, BytesPerSector, SectorsPerCluster * BytesPerSector);
return (int)(SectorsPerCluster * BytesPerSector);
}
else
{
Log("GetVolumeClusterSize %s failed err:%u", Volume, LASTERR);
}
return 0;
}
static int GetVentoyFsNameInPhyDrive(PHY_DRIVE_INFO* CurDrive)
{
int i = 0;
UINT64 Offset;
CHAR Volume[128] = { 0 };
CHAR FsName[MAX_PATH] = { 0 };
@@ -276,6 +300,8 @@ static int GetVentoyFsNameInPhyDrive(PHY_DRIVE_INFO* CurDrive)
if (Volume[0])
{
CurDrive->VentoyFsClusterSize = GetVolumeClusterSize(Volume[0]);
if (GetVolumeInformationA(Volume, NULL, 0, NULL, NULL, NULL, FsName, MAX_PATH))
{
if (_stricmp(FsName, "exFAT") == 0)

View File

@@ -23,7 +23,20 @@
#include <stdio.h>
typedef enum VTOY_FS
{
VTOY_FS_EXFAT = 0,
VTOY_FS_NTFS,
VTOY_FS_FAT32,
VTOY_FS_UDF,
VTOY_FS_BUTT
}VTOY_FS;
#define FAT32_MAX_LIMIT (32 * 1073741824ULL)
#define SIZE_1KB (1024)
#define SIZE_1GB (1024 * 1024 * 1024)
#define SIZE_1TB (1024ULL * 1024ULL * 1024ULL * 1024ULL)
#define SIZE_1MB (1024 * 1024)
#define SIZE_2MB (2048 * 1024)
#define VENTOY_EFI_PART_SIZE (32 * SIZE_1MB)
@@ -160,6 +173,7 @@ typedef struct PHY_DRIVE_INFO
CHAR DriveLetters[64];
int VentoyFsClusterSize;
CHAR VentoyFsType[16];
CHAR VentoyVersion[32];
@@ -251,6 +265,7 @@ int INIT unxz(unsigned char *in, int in_size,
unsigned char *out, int *in_used,
void(*error)(char *x));
void disk_io_set_param(HANDLE Handle, UINT64 SectorCount);
int GetVolumeClusterSize(char Drive);
extern BOOL g_InputYes;
INT_PTR CALLBACK YesDialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam);
@@ -259,7 +274,14 @@ int GetReservedSpaceInMB(void);
int IsPartNeed4KBAlign(void);
int GetVentoyFsType(void);
void SetVentoyFsType(int fs);
int GetClusterSize(void);
void SetClusterSize(int ClusterSize);
WCHAR* GetClusterSizeTip(void);
void FormatClusterSizeTip(int Size, WCHAR* pBuf, size_t len);
const char* GetVentoyFsName(void);
const char* GetVentoyFsNameByType(int fs);
CHAR* GetVentoyFsFmtNameByTypeA(int fs);
WCHAR* GetVentoyFsFmtNameByTypeW(int fs);
int FindProcessOccupyDisk(HANDLE hDrive, PHY_DRIVE_INFO *pPhyDrive);
int VentoyFillMBRLocation(UINT64 DiskSizeInBytes, UINT32 StartSectorId, UINT32 SectorCount, PART_TABLE *Table);
int ClearVentoyFromPhyDrive(HWND hWnd, PHY_DRIVE_INFO *pPhyDrive, char *pDrvLetter);
@@ -270,8 +292,6 @@ BOOL PartResizePreCheck(PHY_DRIVE_INFO** ppPhyDrive);
liCurrentPosition.QuadPart = pos; \
SetFilePointerEx(hDrive, liCurrentPosition, &liCurrentPosition, FILE_BEGIN)\
#define SECURE_ICON_STRING _UICON(UNICODE_LOCK)
extern int g_WriteImage;
#define VTSI_IMG_MAGIC 0x0000594F544E4556ULL // "VENTOY\0\0"

View File

@@ -400,6 +400,7 @@
<Image Include="res\icon2.ico" />
<Image Include="Res\refresh.ico" />
<Image Include="Res\secure.ico" />
<Image Include="Res\secure2.ico" />
<Image Include="Res\ventoy.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

View File

@@ -180,5 +180,8 @@
<Image Include="Res\secure.ico">
<Filter>资源文件</Filter>
</Image>
<Image Include="Res\secure2.ico">
<Filter>资源文件</Filter>
</Image>
</ItemGroup>
</Project>

Binary file not shown.

Binary file not shown.