2020/08/19 : Zithair - last update

This commit is contained in:
Rintim 2020-08-19 23:08:03 +08:00
parent 37a628f5a9
commit 1d25c5f0a9
16 changed files with 98 additions and 98 deletions

View File

@ -63,7 +63,7 @@ static Result action_delete_pending_titles_restore(void* data, u32 index) {
}
static bool action_delete_pending_titles_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_delete_pending_titles_draw_top, res, "Failed to delete pending title.");
*errorView = error_display_res(data, action_delete_pending_titles_draw_top, res, "無法刪除待裝程式");
return true;
}
@ -84,7 +84,7 @@ static void action_delete_pending_titles_update(ui_view* view, void* data, float
info_destroy(view);
if(R_SUCCEEDED(deleteData->deleteInfo.result)) {
prompt_display_notify("Success", "Pending title(s) deleted.", COLOR_TEXT, NULL, NULL, NULL);
prompt_display_notify("成功", "待裝程式已刪除", COLOR_TEXT, NULL, NULL, NULL);
}
action_delete_pending_titles_free_data(deleteData);
@ -106,9 +106,9 @@ static void action_delete_pending_titles_onresponse(ui_view* view, void* data, u
if(response == PROMPT_YES) {
Result res = task_data_op(&deleteData->deleteInfo);
if(R_SUCCEEDED(res)) {
info_display("Deleting Pending Title(s)", "Press B to cancel.", true, data, action_delete_pending_titles_update, action_delete_pending_titles_draw_top);
info_display("刪除待裝程式中", "按B鍵取消", true, data, action_delete_pending_titles_update, action_delete_pending_titles_draw_top);
} else {
error_display_res(NULL, NULL, res, "Failed to initiate delete operation.");
error_display_res(NULL, NULL, res, "無法初始化刪除操作");
action_delete_pending_titles_free_data(deleteData);
}

View File

@ -28,12 +28,12 @@ static void action_delete_system_save_data_update(ui_view* view, void* data, flo
info_destroy(view);
if(R_FAILED(res)) {
error_display_res(info, task_draw_system_save_data_info, res, "Failed to delete system save data.");
error_display_res(info, task_draw_system_save_data_info, res, "Failed to delete 系統儲存數據");
} else {
linked_list_remove(deleteData->items, deleteData->selected);
task_free_system_save_data(deleteData->selected);
prompt_display_notify("Success", "System save data deleted.", COLOR_TEXT, NULL, NULL, NULL);
prompt_display_notify("成功", "系統儲存數據已刪除", COLOR_TEXT, NULL, NULL, NULL);
}
free(data);
@ -41,7 +41,7 @@ static void action_delete_system_save_data_update(ui_view* view, void* data, flo
static void action_delete_system_save_data_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Deleting System Save Data", "", false, data, action_delete_system_save_data_update, action_delete_system_save_data_draw_top);
info_display("正在刪除系統儲存數據中", "", false, data, action_delete_system_save_data_update, action_delete_system_save_data_draw_top);
} else {
free(data);
}
@ -50,7 +50,7 @@ static void action_delete_system_save_data_onresponse(ui_view* view, void* data,
void action_delete_system_save_data(linked_list* items, list_item* selected) {
delete_system_save_data_data* data = (delete_system_save_data_data*) calloc(1, sizeof(delete_system_save_data_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete system save data data.");
error_display(NULL, NULL, "無法分配刪除系統儲存數據的數據");
return;
}
@ -58,5 +58,5 @@ void action_delete_system_save_data(linked_list* items, list_item* selected) {
data->items = items;
data->selected = selected;
prompt_display_yes_no("Confirmation", "Delete the selected system save data?", COLOR_TEXT, data, action_delete_system_save_data_draw_top, action_delete_system_save_data_onresponse);
prompt_display_yes_no("確認", "即將刪除選定的系統儲存數據,是否繼續?", COLOR_TEXT, data, action_delete_system_save_data_draw_top, action_delete_system_save_data_onresponse);
}

View File

@ -59,7 +59,7 @@ static Result action_delete_tickets_restore(void* data, u32 index) {
}
static bool action_delete_tickets_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_delete_tickets_draw_top, res, "Failed to delete ticket(s).");
*errorView = error_display_res(data, action_delete_tickets_draw_top, res, "無法刪除憑據");
return true;
}
@ -80,7 +80,7 @@ static void action_delete_tickets_update(ui_view* view, void* data, float* progr
info_destroy(view);
if(R_SUCCEEDED(deleteData->deleteInfo.result)) {
prompt_display_notify("Success", "Ticket(s) deleted.", COLOR_TEXT, NULL, NULL, NULL);
prompt_display_notify("成功", "憑據已刪除", COLOR_TEXT, NULL, NULL, NULL);
}
action_delete_tickets_free_data(deleteData);
@ -102,9 +102,9 @@ static void action_delete_tickets_onresponse(ui_view* view, void* data, u32 resp
if(response == PROMPT_YES) {
Result res = task_data_op(&deleteData->deleteInfo);
if(R_SUCCEEDED(res)) {
info_display("Deleting", "Press B to cancel.", true, data, action_delete_tickets_update, action_delete_tickets_draw_top);
info_display("正在刪除中", "按B鍵取消", true, data, action_delete_tickets_update, action_delete_tickets_draw_top);
} else {
error_display_res(NULL, NULL, res, "Failed to initiate delete operation.");
error_display_res(NULL, NULL, res, "無法初始化刪除操作");
action_delete_tickets_free_data(deleteData);
}
@ -148,9 +148,9 @@ static void action_delete_tickets_loading_update(ui_view* view, void* data, floa
loadingData->deleteData->deleteInfo.total = linked_list_size(&loadingData->deleteData->contents);
loadingData->deleteData->deleteInfo.processed = loadingData->deleteData->deleteInfo.total;
prompt_display_yes_no("Confirmation", loadingData->message, COLOR_TEXT, loadingData->deleteData, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
prompt_display_yes_no("確認", loadingData->message, COLOR_TEXT, loadingData->deleteData, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
} else {
error_display_res(NULL, NULL, loadingData->popData.result, "Failed to populate ticket list.");
error_display_res(NULL, NULL, loadingData->popData.result, "無法列舉憑據目錄");
action_delete_tickets_free_data(loadingData->deleteData);
}
@ -163,13 +163,13 @@ static void action_delete_tickets_loading_update(ui_view* view, void* data, floa
svcSignalEvent(loadingData->popData.cancelEvent);
}
snprintf(text, PROGRESS_TEXT_MAX, "Fetching ticket list...");
snprintf(text, PROGRESS_TEXT_MAX, "正在獲取憑據目錄中......");
}
static void action_delete_tickets_internal(linked_list* items, list_item* selected, const char* message, bool unused) {
delete_tickets_data* data = (delete_tickets_data*) calloc(1, sizeof(delete_tickets_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete data.");
error_display(NULL, NULL, "無法分配刪除數據");
return;
}
@ -195,7 +195,7 @@ static void action_delete_tickets_internal(linked_list* items, list_item* select
if(unused) {
delete_tickets_loading_data* loadingData = (delete_tickets_loading_data*) calloc(1, sizeof(delete_tickets_loading_data));
if(loadingData == NULL) {
error_display(NULL, NULL, "Failed to allocate loading data.");
error_display(NULL, NULL, "無法分配讀取數據");
action_delete_tickets_free_data(data);
return;
@ -208,28 +208,28 @@ static void action_delete_tickets_internal(linked_list* items, list_item* select
Result listRes = task_populate_tickets(&loadingData->popData);
if(R_FAILED(listRes)) {
error_display_res(NULL, NULL, listRes, "Failed to initiate ticket list population.");
error_display_res(NULL, NULL, listRes, "無法初始化憑據目錄結構");
free(loadingData);
action_delete_tickets_free_data(data);
return;
}
info_display("Loading", "Press B to cancel.", false, loadingData, action_delete_tickets_loading_update, action_delete_tickets_loading_draw_top);
info_display("正在讀取中", "按B鍵取消", false, loadingData, action_delete_tickets_loading_update, action_delete_tickets_loading_draw_top);
} else {
linked_list_add(&data->contents, selected);
data->deleteInfo.total = 1;
data->deleteInfo.processed = data->deleteInfo.total;
prompt_display_yes_no("Confirmation", message, COLOR_TEXT, data, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
prompt_display_yes_no("確認", message, COLOR_TEXT, data, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
}
}
void action_delete_ticket(linked_list* items, list_item* selected) {
action_delete_tickets_internal(items, selected, "Delete the selected ticket?", false);
action_delete_tickets_internal(items, selected, "即將刪除所選的憑據,是否繼續?", false);
}
void action_delete_tickets_unused(linked_list* items, list_item* selected) {
action_delete_tickets_internal(items, selected, "Delete all unused tickets?", true);
action_delete_tickets_internal(items, selected, "即將刪除所有未使用的憑據,是否繼續?", true);
}

View File

@ -32,12 +32,12 @@ static void action_delete_title_update(ui_view* view, void* data, float* progres
info_destroy(view);
if(R_FAILED(res)) {
error_display_res(info, task_draw_title_info, res, "Failed to delete title.");
error_display_res(info, task_draw_title_info, res, "無法刪除程式");
} else {
linked_list_remove(deleteData->items, deleteData->selected);
task_free_title(deleteData->selected);
prompt_display_notify("Success", "Title deleted.", COLOR_TEXT, NULL, NULL, NULL);
prompt_display_notify("成功", "程式已刪除", COLOR_TEXT, NULL, NULL, NULL);
}
free(data);
@ -45,7 +45,7 @@ static void action_delete_title_update(ui_view* view, void* data, float* progres
static void action_delete_title_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Deleting Title", "", false, data, action_delete_title_update, action_delete_title_draw_top);
info_display("正在刪除程式中", "", false, data, action_delete_title_update, action_delete_title_draw_top);
} else {
free(data);
}
@ -54,7 +54,7 @@ static void action_delete_title_onresponse(ui_view* view, void* data, u32 respon
static void action_delete_title_internal(linked_list* items, list_item* selected, const char* message, bool ticket) {
delete_title_data* data = (delete_title_data*) calloc(1, sizeof(delete_title_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete title data.");
error_display(NULL, NULL, "無法分配程式刪除數據");
return;
}
@ -63,13 +63,13 @@ static void action_delete_title_internal(linked_list* items, list_item* selected
data->selected = selected;
data->ticket = ticket;
prompt_display_yes_no("Confirmation", message, COLOR_TEXT, data, action_delete_title_draw_top, action_delete_title_onresponse);
prompt_display_yes_no("確認", message, COLOR_TEXT, data, action_delete_title_draw_top, action_delete_title_onresponse);
}
void action_delete_title(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title?", false);
action_delete_title_internal(items, selected, "即將刪除所選的程式,是否繼續?", false);
}
void action_delete_title_ticket(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title and ticket?", true);
action_delete_title_internal(items, selected, "即將刪除所選的程式及憑據,是否繼續?", true);
}

View File

@ -75,7 +75,7 @@ static Result action_erase_twl_save_restore(void* data, u32 index) {
}
static bool action_erase_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((erase_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to erase save.");
*errorView = error_display_res(((erase_twl_save_data*) data)->title, task_draw_title_info, res, "無法清楚儲存數據");
return true;
}
@ -87,7 +87,7 @@ static void action_erase_twl_save_update(ui_view* view, void* data, float* progr
info_destroy(view);
if(R_SUCCEEDED(eraseData->eraseInfo.result)) {
prompt_display_notify("Success", "Save erased.", COLOR_TEXT, eraseData->title, task_draw_title_info, NULL);
prompt_display_notify("成功", "儲存數據已清理", COLOR_TEXT, eraseData->title, task_draw_title_info, NULL);
}
free(data);
@ -116,9 +116,9 @@ static void action_erase_twl_save_onresponse(ui_view* view, void* data, u32 resp
Result res = task_data_op(&eraseData->eraseInfo);
if(R_SUCCEEDED(res)) {
info_display("Erasing Save", "Press B to cancel.", true, data, action_erase_twl_save_update, action_erase_twl_save_draw_top);
info_display("正在清理存儲數據中", "按B鍵取消", true, data, action_erase_twl_save_update, action_erase_twl_save_draw_top);
} else {
error_display_res(eraseData->title, task_draw_title_info, res, "Failed to initiate save erase.");
error_display_res(eraseData->title, task_draw_title_info, res, "無法初始化清理儲存數據");
free(data);
}
} else {
@ -129,7 +129,7 @@ static void action_erase_twl_save_onresponse(ui_view* view, void* data, u32 resp
void action_erase_twl_save(linked_list* items, list_item* selected) {
erase_twl_save_data* data = (erase_twl_save_data*) calloc(1, sizeof(erase_twl_save_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate erase TWL save data.");
error_display(NULL, NULL, "無法分配清理DSi儲存數據");
return;
}
@ -164,5 +164,5 @@ void action_erase_twl_save(linked_list* items, list_item* selected) {
data->eraseInfo.finished = true;
prompt_display_yes_no("Confirmation", "Erase the save of the selected title?", COLOR_TEXT, data, action_erase_twl_save_draw_top, action_erase_twl_save_onresponse);
prompt_display_yes_no("確認", "即將清理所選程式的儲存數據,是否繼續?", COLOR_TEXT, data, action_erase_twl_save_draw_top, action_erase_twl_save_onresponse);
}

View File

@ -19,7 +19,7 @@ static void action_export_secure_value_update(ui_view* view, void* data, float*
ui_pop();
info_destroy(view);
prompt_display_notify("Failure", "Secure value not set.", COLOR_TEXT, info, task_draw_title_info, NULL);
prompt_display_notify("失敗", "安全值未設置", COLOR_TEXT, info, task_draw_title_info, NULL);
return;
}
@ -53,18 +53,18 @@ static void action_export_secure_value_update(ui_view* view, void* data, float*
info_destroy(view);
if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Secure value exported.", COLOR_TEXT, info, task_draw_title_info, NULL);
prompt_display_notify("成功", "已導出安全值", COLOR_TEXT, info, task_draw_title_info, NULL);
} else {
error_display_res(info, task_draw_title_info, res, "Failed to export secure value.");
error_display_res(info, task_draw_title_info, res, "無法導出安全值");
}
}
static void action_export_secure_value_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Exporting Secure Value", "", false, data, action_export_secure_value_update, task_draw_title_info);
info_display("正在導出安全值中", "", false, data, action_export_secure_value_update, task_draw_title_info);
}
}
void action_export_secure_value(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Export the secure value of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_export_secure_value_onresponse);
prompt_display_yes_no("確認", "即將導出所選程式的安全值,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_export_secure_value_onresponse);
}

View File

@ -97,7 +97,7 @@ static Result action_export_twl_save_restore(void* data, u32 index) {
}
static bool action_export_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((export_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to export save.");
*errorView = error_display_res(((export_twl_save_data*) data)->title, task_draw_title_info, res, "無法導出儲存數據");
return true;
}
@ -109,7 +109,7 @@ static void action_export_twl_save_update(ui_view* view, void* data, float* prog
info_destroy(view);
if(R_SUCCEEDED(exportData->exportInfo.result)) {
prompt_display_notify("Success", "Save exported.", COLOR_TEXT, exportData->title, task_draw_title_info, NULL);
prompt_display_notify("成功", "儲存數據已導出", COLOR_TEXT, exportData->title, task_draw_title_info, NULL);
}
free(data);
@ -138,9 +138,9 @@ static void action_export_twl_save_onresponse(ui_view* view, void* data, u32 res
Result res = task_data_op(&exportData->exportInfo);
if(R_SUCCEEDED(res)) {
info_display("Exporting Save", "Press B to cancel.", true, data, action_export_twl_save_update, action_export_twl_save_draw_top);
info_display("正在導出儲存數據中", "按B鍵取消", true, data, action_export_twl_save_update, action_export_twl_save_draw_top);
} else {
error_display_res(exportData->title, task_draw_title_info, res, "Failed to initiate save export.");
error_display_res(exportData->title, task_draw_title_info, res, "無法初始化導出儲存數據");
free(data);
}
} else {
@ -151,7 +151,7 @@ static void action_export_twl_save_onresponse(ui_view* view, void* data, u32 res
void action_export_twl_save(linked_list* items, list_item* selected) {
export_twl_save_data* data = (export_twl_save_data*) calloc(1, sizeof(export_twl_save_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate export TWL save data.");
error_display(NULL, NULL, "無法分配導出DSi儲存數據");
return;
}
@ -186,5 +186,5 @@ void action_export_twl_save(linked_list* items, list_item* selected) {
data->exportInfo.finished = true;
prompt_display_yes_no("Confirmation", "Export the save of the selected title?", COLOR_TEXT, data, action_export_twl_save_draw_top, action_export_twl_save_onresponse);
prompt_display_yes_no("確認", "即將導出所選程式的儲存數據,是否繼續?", COLOR_TEXT, data, action_export_twl_save_draw_top, action_export_twl_save_onresponse);
}

View File

@ -61,18 +61,18 @@ static void action_extract_smdh_update(ui_view* view, void* data, float* progres
info_destroy(view);
if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "SMDH extracted.", COLOR_TEXT, info, task_draw_title_info, NULL);
prompt_display_notify("成功", "SMDH 已提取", COLOR_TEXT, info, task_draw_title_info, NULL);
} else {
error_display_res(info, task_draw_title_info, res, "Failed to extract SMDH.");
error_display_res(info, task_draw_title_info, res, "無法提取 SMDH.");
}
}
static void action_extract_smdh_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Extracting SMDH", "", false, data, action_extract_smdh_update, task_draw_title_info);
info_display("正在提取 SMDH 中", "", false, data, action_extract_smdh_update, task_draw_title_info);
}
}
void action_extract_smdh(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Extract the SMDH of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_extract_smdh_onresponse);
prompt_display_yes_no("確認", "即將提取所選程式的 SMDH是否繼續", COLOR_TEXT, selected->data, task_draw_title_info, action_extract_smdh_onresponse);
}

View File

@ -37,18 +37,18 @@ static void action_import_secure_value_update(ui_view* view, void* data, float*
info_destroy(view);
if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Secure value imported.", COLOR_TEXT, info, task_draw_title_info, NULL);
prompt_display_notify("成功", "已導入安全值", COLOR_TEXT, info, task_draw_title_info, NULL);
} else {
error_display_res(info, task_draw_title_info, res, "Failed to import secure value.");
error_display_res(info, task_draw_title_info, res, "無法導入安全值");
}
}
static void action_import_secure_value_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Importing Secure Value", "", false, data, action_import_secure_value_update, task_draw_title_info);
info_display("正在導入安全值中", "", false, data, action_import_secure_value_update, task_draw_title_info);
}
}
void action_import_secure_value(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Import the secure value of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_secure_value_onresponse);
prompt_display_yes_no("確認", "即將導入所選的安全值到所選的程式中,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_secure_value_onresponse);
}

View File

@ -16,7 +16,7 @@ static void action_import_seed_update(ui_view* view, void* data, float* progress
info_destroy(view);
if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Seed imported.", COLOR_TEXT, info, task_draw_title_info, NULL);
prompt_display_notify("成功", "已導入 Seed.", COLOR_TEXT, info, task_draw_title_info, NULL);
} else {
error_display_res(info, task_draw_title_info, res, "Failed to import seed.");
}
@ -24,10 +24,10 @@ static void action_import_seed_update(ui_view* view, void* data, float* progress
static void action_import_seed_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) {
info_display("Importing Seed", "", false, data, action_import_seed_update, task_draw_title_info);
info_display("正在導入 Seed 中", "", false, data, action_import_seed_update, task_draw_title_info);
}
}
void action_import_seed(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Import the seed of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_seed_onresponse);
prompt_display_yes_no("確認", "即將導入所選的 Seed 到所選的程式中,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_seed_onresponse);
}

View File

@ -83,7 +83,7 @@ static Result action_import_twl_save_restore(void* data, u32 index) {
}
static bool action_import_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((import_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to import save.");
*errorView = error_display_res(((import_twl_save_data*) data)->title, task_draw_title_info, res, "無法導入儲存數據");
return true;
}
@ -95,7 +95,7 @@ static void action_import_twl_save_update(ui_view* view, void* data, float* prog
info_destroy(view);
if(R_SUCCEEDED(importData->importInfo.result)) {
prompt_display_notify("Success", "Save imported.", COLOR_TEXT, importData->title, task_draw_title_info, NULL);
prompt_display_notify("成功", "已導入儲存數據", COLOR_TEXT, importData->title, task_draw_title_info, NULL);
}
free(data);
@ -124,9 +124,9 @@ static void action_import_twl_save_onresponse(ui_view* view, void* data, u32 res
Result res = task_data_op(&importData->importInfo);
if(R_SUCCEEDED(res)) {
info_display("Importing Save", "Press B to cancel.", true, data, action_import_twl_save_update, action_import_twl_save_draw_top);
info_display("正在導入儲存數據中", "按B鍵取消", true, data, action_import_twl_save_update, action_import_twl_save_draw_top);
} else {
error_display_res(importData->title, task_draw_title_info, res, "Failed to initiate save import.");
error_display_res(importData->title, task_draw_title_info, res, "無法初始化儲存數據導入");
free(data);
}
} else {
@ -137,7 +137,7 @@ static void action_import_twl_save_onresponse(ui_view* view, void* data, u32 res
void action_import_twl_save(linked_list* items, list_item* selected) {
import_twl_save_data* data = (import_twl_save_data*) calloc(1, sizeof(import_twl_save_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate import TWL save data.");
error_display(NULL, NULL, "無法分配DSi儲存數據導入");
return;
}
@ -172,5 +172,5 @@ void action_import_twl_save(linked_list* items, list_item* selected) {
data->importInfo.finished = true;
prompt_display_yes_no("Confirmation", "Import the save of the selected title?", COLOR_TEXT, data, action_import_twl_save_draw_top, action_import_twl_save_onresponse);
prompt_display_yes_no("確認", "即將導入所選儲存數據到所選程式中,是否繼續?", COLOR_TEXT, data, action_import_twl_save_draw_top, action_import_twl_save_onresponse);
}

View File

@ -129,7 +129,7 @@ static Result action_install_tickets_restore(void* data, u32 index) {
}
static bool action_install_tickets_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_install_tickets_draw_top, res, "Failed to install ticket.");
*errorView = error_display_res(data, action_install_tickets_draw_top, res, "無法安裝憑據");
return true;
}
@ -158,7 +158,7 @@ static void action_install_tickets_update(ui_view* view, void* data, float* prog
info_destroy(view);
if(R_SUCCEEDED(installData->installInfo.result)) {
prompt_display_notify("Success", "Install finished.", COLOR_TEXT, NULL, NULL, NULL);
prompt_display_notify("成功", "已成功安裝", COLOR_TEXT, NULL, NULL, NULL);
}
action_install_tickets_free_data(installData);
@ -171,7 +171,7 @@ static void action_install_tickets_update(ui_view* view, void* data, float* prog
}
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s, ETA %s", installData->installInfo.processed, installData->installInfo.total,
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s, 剩餘 %s", installData->installInfo.processed, installData->installInfo.total,
ui_get_display_size(installData->installInfo.currProcessed),
ui_get_display_size_units(installData->installInfo.currProcessed),
ui_get_display_size(installData->installInfo.currTotal),
@ -187,9 +187,9 @@ static void action_install_tickets_onresponse(ui_view* view, void* data, u32 res
if(response == PROMPT_YES) {
Result res = task_data_op(&installData->installInfo);
if(R_SUCCEEDED(res)) {
info_display("Installing ticket(s)", "Press B to cancel.", true, data, action_install_tickets_update, action_install_tickets_draw_top);
info_display("正在安裝憑據中", "按B鍵取消", true, data, action_install_tickets_update, action_install_tickets_draw_top);
} else {
error_display_res(NULL, NULL, res, "Failed to initiate ticket installation.");
error_display_res(NULL, NULL, res, "無法初始化憑據安裝");
action_install_tickets_free_data(installData);
}
@ -222,9 +222,9 @@ static void action_install_tickets_loading_update(ui_view* view, void* data, flo
loadingData->installData->installInfo.total = linked_list_size(&loadingData->installData->contents);
loadingData->installData->installInfo.processed = loadingData->installData->installInfo.total;
prompt_display_yes_no("Confirmation", loadingData->message, COLOR_TEXT, loadingData->installData, action_install_tickets_draw_top, action_install_tickets_onresponse);
prompt_display_yes_no("確認", loadingData->message, COLOR_TEXT, loadingData->installData, action_install_tickets_draw_top, action_install_tickets_onresponse);
} else {
error_display_res(NULL, NULL, loadingData->popData.result, "Failed to populate ticket list.");
error_display_res(NULL, NULL, loadingData->popData.result, "無法列舉憑據目錄");
action_install_tickets_free_data(loadingData->installData);
}
@ -237,13 +237,13 @@ static void action_install_tickets_loading_update(ui_view* view, void* data, flo
svcSignalEvent(loadingData->popData.cancelEvent);
}
snprintf(text, PROGRESS_TEXT_MAX, "Fetching ticket list...");
snprintf(text, PROGRESS_TEXT_MAX, "獲取憑據目錄......");
}
static void action_install_tickets_internal(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData, const char* message, bool delete) {
install_tickets_data* data = (install_tickets_data*) calloc(1, sizeof(install_tickets_data));
if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate install tickets data.");
error_display(NULL, NULL, "無法分配憑據安裝數據");
return;
}
@ -253,7 +253,7 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
file_info* targetInfo = (file_info*) selected->data;
Result targetCreateRes = task_create_file_item(&data->targetItem, targetInfo->archive, targetInfo->path, targetInfo->attributes, true);
if(R_FAILED(targetCreateRes)) {
error_display_res(NULL, NULL, targetCreateRes, "Failed to create target file item.");
error_display_res(NULL, NULL, targetCreateRes, "無法創建目標档案");
action_install_tickets_free_data(data);
return;
@ -293,7 +293,7 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
install_tickets_loading_data* loadingData = (install_tickets_loading_data*) calloc(1, sizeof(install_tickets_loading_data));
if(loadingData == NULL) {
error_display(NULL, NULL, "Failed to allocate loading data.");
error_display(NULL, NULL, "無法分配讀取數據");
action_install_tickets_free_data(data);
return;
@ -316,28 +316,28 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
Result listRes = task_populate_files(&loadingData->popData);
if(R_FAILED(listRes)) {
error_display_res(NULL, NULL, listRes, "Failed to initiate ticket list population.");
error_display_res(NULL, NULL, listRes, "無法初始化憑據目錄結構");
free(loadingData);
action_install_tickets_free_data(data);
return;
}
info_display("Loading", "Press B to cancel.", false, loadingData, action_install_tickets_loading_update, action_install_tickets_loading_draw_top);
info_display("正在讀取中", "按B鍵取消", false, loadingData, action_install_tickets_loading_update, action_install_tickets_loading_draw_top);
}
void action_install_ticket(linked_list* items, list_item* selected) {
action_install_tickets_internal(items, selected, NULL, NULL, "Install the selected ticket?", false);
action_install_tickets_internal(items, selected, NULL, NULL, "即將安裝所選的憑據,是否繼續?", false);
}
void action_install_ticket_delete(linked_list* items, list_item* selected) {
action_install_tickets_internal(items, selected, NULL, NULL, "Install and delete the selected ticket?", true);
action_install_tickets_internal(items, selected, NULL, NULL, "即將安裝並刪除所選的憑據,是否繼續?", true);
}
void action_install_tickets(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) {
action_install_tickets_internal(items, selected, filter, filterData, "Install all tickets in the current directory?", false);
action_install_tickets_internal(items, selected, filter, filterData, "即將安裝當前資料夾中所有的憑據,是否繼續?", false);
}
void action_install_tickets_delete(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) {
action_install_tickets_internal(items, selected, filter, filterData, "Install and delete all tickets in the current directory?", true);
action_install_tickets_internal(items, selected, filter, filterData, "即將安裝並刪除當前資料夾中所有的憑據,是否繼續?", true);
}

View File

@ -11,7 +11,7 @@
#include "../core/core.h"
static list_item browse_user_save_data = {"瀏覽使用者儲存資料", COLOR_TEXT, action_browse_user_ext_save_data};
static list_item browse_spotpass_save_data = {"瀏覽SpotPass儲存資料", COLOR_TEXT, action_browse_boss_ext_save_data};
static list_item browse_spotpass_save_data = {"瀏覽悄然連接儲存資料", COLOR_TEXT, action_browse_boss_ext_save_data};
static list_item delete_save_data = {"刪除儲存資料", COLOR_TEXT, action_delete_ext_save_data};
typedef struct {
@ -69,7 +69,7 @@ static void extsavedata_action_update(ui_view* view, void* data, linked_list* it
static void extsavedata_action_open(linked_list* items, list_item* selected) {
extsavedata_action_data* data = (extsavedata_action_data*) calloc(1, sizeof(extsavedata_action_data));
if(data == NULL) {
error_display(NULL, NULL, "無法分配額外儲存數據操作的數據.");
error_display(NULL, NULL, "無法分配追加儲存數據操作的數據.");
return;
}
@ -77,7 +77,7 @@ static void extsavedata_action_open(linked_list* items, list_item* selected) {
data->items = items;
data->selected = selected;
list_display("額外儲存數據操作", "A: 選擇, B: 返回", data, extsavedata_action_update, extsavedata_action_draw_top);
list_display("追加儲存數據操作", "A: 選擇, B: 返回", data, extsavedata_action_update, extsavedata_action_draw_top);
}
static void extsavedata_options_add_entry(linked_list* items, const char* name, bool* val) {
@ -188,14 +188,14 @@ static void extsavedata_update(ui_view* view, void* data, linked_list* items, li
listData->populateData.items = items;
Result res = task_populate_ext_save_data(&listData->populateData);
if(R_FAILED(res)) {
error_display_res(NULL, NULL, res, "無法初始化額外儲存數據目錄結構");
error_display_res(NULL, NULL, res, "無法初始化追加儲存數據目錄結構");
}
listData->populated = true;
}
if(listData->populateData.finished && R_FAILED(listData->populateData.result)) {
error_display_res(NULL, NULL, listData->populateData.result, "無法列舉額外儲存數據目錄");
error_display_res(NULL, NULL, listData->populateData.result, "無法列舉追加儲存數據目錄");
listData->populateData.result = 0;
}
@ -255,7 +255,7 @@ static int extsavedata_compare(void* data, const void* p1, const void* p2) {
void extsavedata_open() {
extsavedata_data* data = (extsavedata_data*) calloc(1, sizeof(extsavedata_data));
if(data == NULL) {
error_display(NULL, NULL, "無法分配額外儲存數據數據");
error_display(NULL, NULL, "無法分配追加儲存數據數據");
return;
}
@ -271,7 +271,7 @@ void extsavedata_open() {
data->sortById = false;
data->sortByName = true;
list_display("額外儲存數據", "A: 選擇, B: 返回, X: 刷新, Select: 選項", data, extsavedata_update, extsavedata_draw_top);
list_display("追加儲存數據", "A: 選擇, B: 返回, X: 刷新, Select: 選項", data, extsavedata_update, extsavedata_draw_top);
}
// オケー

View File

@ -25,7 +25,7 @@ static list_item install_and_delete_ticket = {"安裝並刪除憑據", COLOR_TEX
static list_item delete_dir = {"刪除", COLOR_TEXT, action_delete_dir};
static list_item copy_all_contents = {"拷貝所有档案", COLOR_TEXT, NULL};
static list_item delete_all_contents = {"刪除所有档案", COLOR_TEXT, action_delete_dir_contents};
static list_item new_folder = {"資料夾", COLOR_TEXT, action_new_folder};
static list_item new_folder = {"資料夾", COLOR_TEXT, action_new_folder};
static list_item install_all_cias = {"安裝所有3DS可導入档案", COLOR_TEXT, action_install_cias};
static list_item install_and_delete_all_cias = {"安裝並刪除所有3DS可導入档案", COLOR_TEXT, action_install_cias_delete};

View File

@ -19,7 +19,7 @@ static list_item tickets = {"憑據", COLOR_TEXT, tickets_open};
static list_item ext_save_data = {"追加儲存數據", COLOR_TEXT, extsavedata_open};
static list_item system_save_data = {"系統儲存數據", COLOR_TEXT, systemsavedata_open};
static list_item remote_install = {"遠程安裝", COLOR_TEXT, remoteinstall_open};
static list_item update = {"升級", COLOR_TEXT, update_open};
static list_item update = {"升級至最新Latest Not Releases", COLOR_TEXT, update_open};
static void mainmenu_draw_top(ui_view* view, void* data, float x1, float y1, float x2, float y2, list_item* selected) {
u32 logoWidth;

View File

@ -13,8 +13,8 @@
static list_item launch_title = {"啓動程式", COLOR_TEXT, action_launch_title};
static list_item delete_title = {"刪除程式", COLOR_TEXT, action_delete_title};
static list_item delete_title_ticket = {"刪除程式和儲存數據", COLOR_TEXT, action_delete_title_ticket};
static list_item extract_smdh = {"提取SMDH", COLOR_TEXT, action_extract_smdh};
static list_item import_seed = {"導入Seed", COLOR_TEXT, action_import_seed};
static list_item extract_smdh = {"提取 SMDH", COLOR_TEXT, action_extract_smdh};
static list_item import_seed = {"導入 Seed", COLOR_TEXT, action_import_seed};
static list_item browse_save_data = {"瀏覽儲存文件", COLOR_TEXT, action_browse_title_save_data};
static list_item import_save_data = {"導入儲存文件", COLOR_TEXT, action_import_twl_save};
static list_item export_save_data = {"導出儲存文件", COLOR_TEXT, action_export_twl_save};
@ -176,10 +176,10 @@ static void titles_options_update(ui_view* view, void* data, linked_list* items,
}
if(linked_list_size(items) == 0) {
titles_options_add_entry(items, "顯示遊戲Card", &listData->showGameCard);
titles_options_add_entry(items, "顯示SD Card程式", &listData->showSD);
titles_options_add_entry(items, "顯示NAND程式", &listData->showNAND);
titles_options_add_entry(items, "ID排列", &listData->sortById);
titles_options_add_entry(items, "顯示遊戲 Card", &listData->showGameCard);
titles_options_add_entry(items, "顯示 SD Card 程式", &listData->showSD);
titles_options_add_entry(items, "顯示 NAND 程式", &listData->showNAND);
titles_options_add_entry(items, " ID 排列", &listData->sortById);
titles_options_add_entry(items, "按名稱排列", &listData->sortByName);
titles_options_add_entry(items, "按大小排列", &listData->sortBySize);
}
@ -231,14 +231,14 @@ static void titles_update(ui_view* view, void* data, linked_list* items, list_it
listData->populateData.items = items;
Result res = task_populate_titles(&listData->populateData);
if(R_FAILED(res)) {
error_display_res(NULL, NULL, res, "無法初始化程式列表");
error_display_res(NULL, NULL, res, "無法初始化程式目錄結構");
}
listData->populated = true;
}
if(listData->populateData.finished && R_FAILED(listData->populateData.result)) {
error_display_res(NULL, NULL, listData->populateData.result, "無法填充程式列表");
error_display_res(NULL, NULL, listData->populateData.result, "無法列舉程式目錄");
listData->populateData.result = 0;
}