From 7f3d39916a9026e657894251ca7c8ca9fa96781f Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sat, 22 Oct 2022 20:02:29 +0200 Subject: [PATCH 01/11] First work towards language selection --- include/configMenu.h | 3 +++ include/input.h | 1 + include/json.h | 9 +++---- include/language.h | 2 ++ include/savemng.h | 7 ++++- src/configMenu.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++ src/input.cpp | 6 +++++ src/language.cpp | 49 ++++++++++++++++++++++++++++++++++ src/main.cpp | 9 +++---- 9 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 include/configMenu.h create mode 100644 src/configMenu.cpp diff --git a/include/configMenu.h b/include/configMenu.h new file mode 100644 index 0000000..75b285b --- /dev/null +++ b/include/configMenu.h @@ -0,0 +1,3 @@ +#pragma once + +void configMenu(); \ No newline at end of file diff --git a/include/input.h b/include/input.h index 7e259b5..ba7d619 100644 --- a/include/input.h +++ b/include/input.h @@ -7,6 +7,7 @@ typedef enum Button { PAD_BUTTON_A, PAD_BUTTON_B, + PAD_BUTTON_X, PAD_BUTTON_UP, PAD_BUTTON_DOWN, PAD_BUTTON_LEFT, diff --git a/include/json.h b/include/json.h index ca9cb86..0bc85b2 100644 --- a/include/json.h +++ b/include/json.h @@ -5,11 +5,10 @@ class Date { public: - Date(uint32_t high, uint32_t low, uint8_t s) { - highID = high; - lowID = low; - slot = s; - path = stringFormat("sd:/wiiu/backups/%08x%08x/%u/savemiiMeta.json", highID, lowID, slot); + Date(uint32_t high, uint32_t low, uint8_t s) : highID(high), + lowID(low), + slot(s), + path(stringFormat("sd:/wiiu/backups/%08x%08x/%u/savemiiMeta.json", highID, lowID, slot)) { } std::string get(); bool set(std::string date); diff --git a/include/language.h b/include/language.h index 93b54a6..37de3e4 100644 --- a/include/language.h +++ b/include/language.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -26,6 +27,7 @@ typedef enum { } Swkbd_LanguageType; void loadLanguage(Swkbd_LanguageType language) __attribute__((cold)); +void getLoadedLanguage(char *out); Swkbd_LanguageType getSystemLanguage() __attribute__((cold)); bool gettextLoadLanguage(const char *langFile); void gettextCleanUp() __attribute__((__cold__)); diff --git a/include/savemng.h b/include/savemng.h index ab9b4c9..67d0783 100644 --- a/include/savemng.h +++ b/include/savemng.h @@ -20,7 +20,12 @@ #include #include -#define PATH_SIZE 0x400 +#define PATH_SIZE 0x400 + +#define VERSION_MAJOR 1 +#define VERSION_MINOR 4 +#define VERSION_MICRO 8 +#define M_OFF 1 typedef struct { uint32_t highID; diff --git a/src/configMenu.cpp b/src/configMenu.cpp new file mode 100644 index 0000000..f41c6c7 --- /dev/null +++ b/src/configMenu.cpp @@ -0,0 +1,62 @@ +#include "draw.h" +#include +#include +#include +#include +#include +#include + +#define M_OFF 1 + +static int cursorPos = 0; +bool redraw = true; + +static char *language = (char *) ""; + +static void drawConfigMenuFrame() { + clearBuffersEx(); + consolePrintPos(0, 0, "SaveMii v%u.%u.%u", VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO); + consolePrintPos(0, 1, "----------------------------------------------------------------------------"); + consolePrintPos(M_OFF, 2, gettext(" Language: %s"), language); + consolePrintPos(M_OFF, 2 + cursorPos, "\u2192"); + consolePrintPos(0, 16, "----------------------------------------------------------------------------"); + consolePrintPos(0, 17, gettext("Press \ue044 to exit.")); + flipBuffers(); + WHBLogFreetypeDraw(); +} + +void configMenu() { + Input input; + getLoadedLanguage(language); + while (AppRunning()) { + input.read(); + if (input.get(TRIGGER, PAD_BUTTON_ANY)) + redraw = true; + if (input.get(TRIGGER, PAD_BUTTON_B)) + break; + if (input.get(TRIGGER, PAD_BUTTON_A) || input.get(TRIGGER, PAD_BUTTON_RIGHT)) { + if (strcmp(language, "Japanese") == 0) + loadLanguage(Swkbd_LanguageType__Italian); + else if (strcmp(language, "Italian") == 0) + loadLanguage(Swkbd_LanguageType__Spanish); + else if (strcmp(language, "Spanish") == 0) + loadLanguage(Swkbd_LanguageType__Chinese1); + else if (strcmp(language, "Traditional Chinese") == 0) + loadLanguage(Swkbd_LanguageType__Korean); + else if (strcmp(language, "Korean") == 0) + loadLanguage(Swkbd_LanguageType__Russian); + else if (strcmp(language, "Russian") == 0) + loadLanguage(Swkbd_LanguageType__Chinese2); + else if (strcmp(language, "Simplified Chinese") == 0) + loadLanguage(Swkbd_LanguageType__English); + else if (strcmp(language, "English") == 0) + loadLanguage(Swkbd_LanguageType__Japanese); + } + if (redraw) { + getLoadedLanguage(language); + drawConfigMenuFrame(); + redraw = false; + } + } + return; +} \ No newline at end of file diff --git a/src/input.cpp b/src/input.cpp index d90646b..d7b4826 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -55,6 +55,12 @@ bool Input::get(ButtonState state, Button button) { if (kpadClassicState & WPAD_CLASSIC_BUTTON_B) return true; if (kpadProState & WPAD_PRO_BUTTON_B) return true; break; + case PAD_BUTTON_X: + if (vpadState & VPAD_BUTTON_X) return true; + if (kpadState & WPAD_BUTTON_1) return true; + if (kpadClassicState & WPAD_CLASSIC_BUTTON_X) return true; + if (kpadProState & WPAD_PRO_BUTTON_X) return true; + break; case PAD_BUTTON_UP: if (vpadState & VPAD_BUTTON_UP) return true; if (vpadState & VPAD_STICK_L_EMULATION_UP) return true; diff --git a/src/language.cpp b/src/language.cpp index cfb1022..5ac080c 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -20,7 +21,10 @@ static MSG *baseMSG = NULL; Swkbd_LanguageType sysLang; +Swkbd_LanguageType loadedLang; + void loadLanguage(Swkbd_LanguageType language) { + loadedLang = language; switch (language) { case Swkbd_LanguageType__Japanese: gettextLoadLanguage("romfs:/japanese.json"); @@ -65,6 +69,51 @@ void loadLanguage(Swkbd_LanguageType language) { } } +void getLoadedLanguage(char *out) { + switch (loadedLang) { + case Swkbd_LanguageType__Japanese: + sprintf(out, "%s", gettext("Japanese")); + break; + /*case Swkbd_LanguageType__English: + gettextLoadLanguage("romfs:/english.json"); + break;*/ + /*case Swkbd_LanguageType__French: + gettextLoadLanguage("romfs:/french.json"); + break; + case Swkbd_LanguageType__German: + gettextLoadLanguage("romfs:/german.json"); + break;*/ + case Swkbd_LanguageType__Italian: + sprintf(out, "%s", gettext("Italian")); + break; + case Swkbd_LanguageType__Spanish: + sprintf(out, "%s", gettext("Spanish")); + break; + case Swkbd_LanguageType__Chinese1: + sprintf(out, "%s", gettext("Traditional Chinese")); + break; + case Swkbd_LanguageType__Korean: + sprintf(out, "%s", gettext("Korean")); + break; + /* + case Swkbd_LanguageType__Dutch: + gettextLoadLanguage("romfs:/dutch.json"); + break; + case Swkbd_LanguageType__Potuguese: + gettextLoadLanguage("romfs:/portuguese.json"); + break;*/ + case Swkbd_LanguageType__Russian: + sprintf(out, "%s", gettext("Russian")); + break; + case Swkbd_LanguageType__Chinese2: + sprintf(out, "%s", gettext("Simplified Chinese")); + break; + default: + sprintf(out, "%s", gettext("English")); + break; + } +} + Swkbd_LanguageType getSystemLanguage() { UCHandle handle = UCOpen(); if (handle < 1) diff --git a/src/main.cpp b/src/main.cpp index 8ba9ecc..fd39855 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,6 @@ +#include #include +#include #include #include #include @@ -8,11 +10,6 @@ #include #include -#define VERSION_MAJOR 1 -#define VERSION_MINOR 4 -#define VERSION_MICRO 8 -#define M_OFF 1 - static uint8_t slot = 0; static int8_t allusers = -1, allusers_d = -1, sdusers = -1; static bool common = true; @@ -1055,6 +1052,8 @@ int main() { } if (menu == selectTask) cursor = cursort; + } else if (input.get(TRIGGER, PAD_BUTTON_X) && menu == mainMenu) { + configMenu(); } } From 99ac80af250022501ea8cd76613c74c2130324ff Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sat, 22 Oct 2022 20:03:24 +0200 Subject: [PATCH 02/11] Build configMenu too --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ad73fc3..e2d5ccb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,6 +6,7 @@ on: push: branches: - refactor + - configMenu jobs: build-binary: From 5a67dc4e0e095ff659234b4751808aa73b40dabc Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 13:12:01 +0200 Subject: [PATCH 03/11] Try to fix lang selection --- include/language.h | 2 +- src/configMenu.cpp | 31 ++++++++++++++++--------------- src/language.cpp | 11 ++++++++++- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/include/language.h b/include/language.h index 37de3e4..ac8bed1 100644 --- a/include/language.h +++ b/include/language.h @@ -27,7 +27,7 @@ typedef enum { } Swkbd_LanguageType; void loadLanguage(Swkbd_LanguageType language) __attribute__((cold)); -void getLoadedLanguage(char *out); +std::string getLoadedLanguage(); Swkbd_LanguageType getSystemLanguage() __attribute__((cold)); bool gettextLoadLanguage(const char *langFile); void gettextCleanUp() __attribute__((__cold__)); diff --git a/src/configMenu.cpp b/src/configMenu.cpp index f41c6c7..dcc54e0 100644 --- a/src/configMenu.cpp +++ b/src/configMenu.cpp @@ -1,4 +1,4 @@ -#include "draw.h" +#include #include #include #include @@ -11,13 +11,14 @@ static int cursorPos = 0; bool redraw = true; -static char *language = (char *) ""; +static std::string language = ""; static void drawConfigMenuFrame() { - clearBuffersEx(); + OSScreenClearBufferEx(SCREEN_DRC, 0x00006F00); + OSScreenClearBufferEx(SCREEN_TV, 0x00006F00); consolePrintPos(0, 0, "SaveMii v%u.%u.%u", VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO); consolePrintPos(0, 1, "----------------------------------------------------------------------------"); - consolePrintPos(M_OFF, 2, gettext(" Language: %s"), language); + consolePrintPos(M_OFF, 2, gettext(" Language: %s"), language.c_str()); consolePrintPos(M_OFF, 2 + cursorPos, "\u2192"); consolePrintPos(0, 16, "----------------------------------------------------------------------------"); consolePrintPos(0, 17, gettext("Press \ue044 to exit.")); @@ -27,33 +28,33 @@ static void drawConfigMenuFrame() { void configMenu() { Input input; - getLoadedLanguage(language); + language = getLoadedLanguage(); while (AppRunning()) { input.read(); if (input.get(TRIGGER, PAD_BUTTON_ANY)) redraw = true; if (input.get(TRIGGER, PAD_BUTTON_B)) break; - if (input.get(TRIGGER, PAD_BUTTON_A) || input.get(TRIGGER, PAD_BUTTON_RIGHT)) { - if (strcmp(language, "Japanese") == 0) + if (input.get(TRIGGER, PAD_BUTTON_RIGHT)) { + if (language == "Japanese") loadLanguage(Swkbd_LanguageType__Italian); - else if (strcmp(language, "Italian") == 0) + else if (language == "Italian") loadLanguage(Swkbd_LanguageType__Spanish); - else if (strcmp(language, "Spanish") == 0) + else if (language == "Spanish") loadLanguage(Swkbd_LanguageType__Chinese1); - else if (strcmp(language, "Traditional Chinese") == 0) + else if (language == "Traditional Chinese") loadLanguage(Swkbd_LanguageType__Korean); - else if (strcmp(language, "Korean") == 0) + else if (language == "Korean") loadLanguage(Swkbd_LanguageType__Russian); - else if (strcmp(language, "Russian") == 0) + else if (language == "Russian") loadLanguage(Swkbd_LanguageType__Chinese2); - else if (strcmp(language, "Simplified Chinese") == 0) + else if (language == "Simplified Chinese") loadLanguage(Swkbd_LanguageType__English); - else if (strcmp(language, "English") == 0) + else if (language == "English") loadLanguage(Swkbd_LanguageType__Japanese); } if (redraw) { - getLoadedLanguage(language); + language = getLoadedLanguage(); drawConfigMenuFrame(); redraw = false; } diff --git a/src/language.cpp b/src/language.cpp index 5ac080c..c3c31cd 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -69,10 +69,12 @@ void loadLanguage(Swkbd_LanguageType language) { } } -void getLoadedLanguage(char *out) { +std::string getLoadedLanguage() { + char out[255]; switch (loadedLang) { case Swkbd_LanguageType__Japanese: sprintf(out, "%s", gettext("Japanese")); + return std::string(out); break; /*case Swkbd_LanguageType__English: gettextLoadLanguage("romfs:/english.json"); @@ -85,15 +87,19 @@ void getLoadedLanguage(char *out) { break;*/ case Swkbd_LanguageType__Italian: sprintf(out, "%s", gettext("Italian")); + return std::string(out); break; case Swkbd_LanguageType__Spanish: sprintf(out, "%s", gettext("Spanish")); + return std::string(out); break; case Swkbd_LanguageType__Chinese1: sprintf(out, "%s", gettext("Traditional Chinese")); + return std::string(out); break; case Swkbd_LanguageType__Korean: sprintf(out, "%s", gettext("Korean")); + return std::string(out); break; /* case Swkbd_LanguageType__Dutch: @@ -104,12 +110,15 @@ void getLoadedLanguage(char *out) { break;*/ case Swkbd_LanguageType__Russian: sprintf(out, "%s", gettext("Russian")); + return std::string(out); break; case Swkbd_LanguageType__Chinese2: sprintf(out, "%s", gettext("Simplified Chinese")); + return std::string(out); break; default: sprintf(out, "%s", gettext("English")); + return std::string(out); break; } } From 63a93345e1e17cd791f348a6903c6939191ae5a2 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 15:49:54 +0200 Subject: [PATCH 04/11] Fix english selection --- languages/english.json | 192 ++++++++++++++++++++--------------------- src/language.cpp | 37 +++----- 2 files changed, 110 insertions(+), 119 deletions(-) diff --git a/languages/english.json b/languages/english.json index 9f548f8..a80c33c 100644 --- a/languages/english.json +++ b/languages/english.json @@ -1,98 +1,98 @@ { - "Disclaimer:": "", - "There is always the potential for a brick.": "", - "Everything you do with this software is your own responsibility": "", - "Out of memory.": "", - "Loaded %i Wii U titles.": "", - "%s%s (No banner.bin)": "", - "Loaded %i Wii titles.": "", - "None": "", - "Name": "", - "Storage": "", - "Storage+Name": "", - "initFS failed. Please make sure your MochaPayload is up-to-date": "", - " Wii U Save Management (%u Title%s)": "", - " vWii Save Management (%u Title%s)": "", - " Batch Backup": "", - "\ue000: Select Mode": "", - " Backup All (%u Title%s)": "", - " Backup Wii U (%u Title%s)": "", - " Backup vWii (%u Title%s)": "", - "\ue000: Backup \ue001: Back": "", - "%s Sort: %s \ue084": "", - " [Not Init]": "", - "\ue000: Select Game \ue001: Back": "", - " Backup savedata": "", - " Restore savedata": "", - " Wipe savedata": "", - " Import from loadiine": "", - " Export to loadiine": "", - " Copy Savedata to Title in %s": "", - "\ue000: Select Task \ue001: Back": "", - "Destination:": "", - "Select %s:": "", - "version": "", - "Delete from:": "", - "slot": "", - "Empty": "", - "Used": "", - "Select SD user to copy from:": "", - "all users": "", - "Has Save": "", - "Select Wii U user to delete from:": "", - "Select Wii U user%s:": "", - " to copy from": "", - " to copy to": "", - "Date: %s": "", - "Include 'common' save?": "", - "yes": "", - "no ": "", - "No 'common' save found.": "", - "\ue000: Restore \ue001: Back": "", - "\ue000: Wipe \ue001: Back": "", - "\ue000: Import \ue001: Back": "", - "\ue000: Export \ue001: Back": "", - "\ue000: Copy \ue001: Back": "", - "Press \ue044 to exit.": "", - "No Wii U titles found.": "", - "No vWii saves found.": "", - "CBHC save. Could be dangerous to modify. Continue?": "", - "Are you REALLY sure?": "", - "vWii saves are in the vWii section. Continue?": "", - "Recommended to run Game at least one time. Continue?": "", - "No save to Backup.": "", - "No save to Wipe.": "", - "No save to Export.": "", - "No save to Copy.": "", - "Copying file: %s": "", - "From: %s": "", - "To: %s": "", - "\ue000 Yes - \ue001 No": "", - "\ue000 Confirm - \ue001 Cancel": "", - "Filesize: %d bytes": "", - "Deleting folder %s": "", - "From: \n%s": "", - "Failed to delete folder %s\n%s": "", - "Deleting file %s": "", - "Failed to delete file %s\n%s": "", - "Loadiine game folder not found.": "", - "Failed to open Loadiine game save directory.": "", - "Are you sure?": "", - "Backup current savedata first to next empty slot?": "", - "Backup done. Now copying Savedata.": "", - "Common save not found.": "", - "Copy failed.": "", - "Backup failed.": "", - "Backup found on this slot. Overwrite it?": "", - "No save found for this user.": "", - "Backup failed. DO NOT restore from this slot.": "", - "No backup found on selected slot.": "", - "Restore failed.": "", - "Hm, are you REALLY sure?": "", - "Backup current savedata first?": "", - "Failed to delete common folder.\n%s": "", - "Failed to delete savefile.": "", - "Failed to delete user folder.\n%s": "", - "Failed to import savedata from loadiine.": "", - "Failed to export savedata to loadiine.": "" + "Disclaimer:": "Disclaimer:", + "There is always the potential for a brick.": "There is always the potential for a brick.", + "Everything you do with this software is your own responsibility": "Everything you do with this software is your own responsibility", + "Out of memory.": "Out of memory.", + "Loaded %i Wii U titles.": "Loaded %i Wii U titles.", + "%s%s (No banner.bin)": "%s%s (No banner.bin)", + "Loaded %i Wii titles.": "Loaded %i Wii titles.", + "None": "None", + "Name": "Name", + "Storage": "Storage", + "Storage+Name": "Storage+Name", + "initFS failed. Please make sure your MochaPayload is up-to-date": "initFS failed. Please make sure your MochaPayload is up-to-date", + " Wii U Save Management (%u Title%s)": " Wii U Save Management (%u Title%s)", + " vWii Save Management (%u Title%s)": " vWii Save Management (%u Title%s)", + " Batch Backup": " Batch Backup", + "\ue000: Select Mode": "\ue000: Select Mode", + " Backup All (%u Title%s)": " Backup All (%u Title%s)", + " Backup Wii U (%u Title%s)": " Backup Wii U (%u Title%s)", + " Backup vWii (%u Title%s)": " Backup vWii (%u Title%s)", + "\ue000: Backup \ue001: Back": "\ue000: Backup \ue001: Back", + "%s Sort: %s \ue084": "%s Sort: %s \ue084", + " [Not Init]": " [Not Init]", + "\ue000: Select Game \ue001: Back": "\ue000: Select Game \ue001: Back", + " Backup savedata": " Backup savedata", + " Restore savedata": " Restore savedata", + " Wipe savedata": " Wipe savedata", + " Import from loadiine": " Import from loadiine", + " Export to loadiine": " Export to loadiine", + " Copy Savedata to Title in %s": " Copy Savedata to Title in %s", + "\ue000: Select Task \ue001: Back": "\ue000: Select Task \ue001: Back", + "Destination:": "Destination:", + "Select %s:": "Select %s:", + "version": "version", + "Delete from:": "Delete from:", + "slot": "slot", + "Empty": "Empty", + "Used": "Used", + "Select SD user to copy from:": "Select SD user to copy from:", + "all users": "all users", + "Has Save": "Has Save", + "Select Wii U user to delete from:": "Select Wii U user to delete from:", + "Select Wii U user%s:": "Select Wii U user%s:", + " to copy from": " to copy from", + " to copy to": " to copy to", + "Date: %s": "Date: %s", + "Include 'common' save?": "Include 'common' save?", + "yes": "yes", + "no ": "no ", + "No 'common' save found.": "No 'common' save found.", + "\ue000: Restore \ue001: Back": "\ue000: Restore \ue001: Back", + "\ue000: Wipe \ue001: Back": "\ue000: Wipe \ue001: Back", + "\ue000: Import \ue001: Back": "\ue000: Import \ue001: Back", + "\ue000: Export \ue001: Back": "\ue000: Export \ue001: Back", + "\ue000: Copy \ue001: Back": "\ue000: Copy \ue001: Back", + "Press \ue044 to exit.": "Press \ue044 to exit.", + "No Wii U titles found.": "No Wii U titles found.", + "No vWii saves found.": "No vWii saves found.", + "CBHC save. Could be dangerous to modify. Continue?": "CBHC save. Could be dangerous to modify. Continue?", + "Are you REALLY sure?": "Are you REALLY sure?", + "vWii saves are in the vWii section. Continue?": "vWii saves are in the vWii section. Continue?", + "Recommended to run Game at least one time. Continue?": "Recommended to run Game at least one time. Continue?", + "No save to Backup.": "No save to Backup.", + "No save to Wipe.": "No save to Wipe.", + "No save to Export.": "No save to Export.", + "No save to Copy.": "No save to Copy.", + "Copying file: %s": "Copying file: %s", + "From: %s": "From: %s", + "To: %s": "To: %s", + "\ue000 Yes - \ue001 No": "\ue000 Yes - \ue001 No", + "\ue000 Confirm - \ue001 Cancel": "\ue000 Confirm - \ue001 Cancel", + "Filesize: %d bytes": "Filesize: %d bytes", + "Deleting folder %s": "Deleting folder %s", + "From: \n%s": "From: \n%s", + "Failed to delete folder %s\n%s": "Failed to delete folder %s\n%s", + "Deleting file %s": "Deleting file %s", + "Failed to delete file %s\n%s": "Failed to delete file %s\n%s", + "Loadiine game folder not found.": "Loadiine game folder not found.", + "Failed to open Loadiine game save directory.": "Failed to open Loadiine game save directory.", + "Are you sure?": "Are you sure?", + "Backup current savedata first to next empty slot?": "Backup current savedata first to next empty slot?", + "Backup done. Now copying Savedata.": "Backup done. Now copying Savedata.", + "Common save not found.": "Common save not found.", + "Copy failed.": "Copy failed.", + "Backup failed.": "Backup failed.", + "Backup found on this slot. Overwrite it?": "Backup found on this slot. Overwrite it?", + "No save found for this user.": "No save found for this user.", + "Backup failed. DO NOT restore from this slot.": "Backup failed. DO NOT restore from this slot.", + "No backup found on selected slot.": "No backup found on selected slot.", + "Restore failed.": "Restore failed.", + "Hm, are you REALLY sure?": "Hm, are you REALLY sure?", + "Backup current savedata first?": "Backup current savedata first?", + "Failed to delete common folder.\n%s": "Failed to delete common folder.\n%s", + "Failed to delete savefile.": "Failed to delete savefile.", + "Failed to delete user folder.\n%s": "Failed to delete user folder.\n%s", + "Failed to import savedata from loadiine.": "Failed to import savedata from loadiine.", + "Failed to export savedata to loadiine.": "Failed to export savedata to loadiine." } \ No newline at end of file diff --git a/src/language.cpp b/src/language.cpp index c3c31cd..6ce557f 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -29,9 +29,9 @@ void loadLanguage(Swkbd_LanguageType language) { case Swkbd_LanguageType__Japanese: gettextLoadLanguage("romfs:/japanese.json"); break; - /*case Swkbd_LanguageType__English: + case Swkbd_LanguageType__English: gettextLoadLanguage("romfs:/english.json"); - break;*/ + break; /*case Swkbd_LanguageType__French: gettextLoadLanguage("romfs:/french.json"); break; @@ -64,21 +64,19 @@ void loadLanguage(Swkbd_LanguageType language) { gettextLoadLanguage("romfs:/SChinese.json"); break; default: - //gettextLoadLanguage("romfs:/english.json"); + gettextLoadLanguage("romfs:/english.json"); break; } } std::string getLoadedLanguage() { - char out[255]; switch (loadedLang) { case Swkbd_LanguageType__Japanese: - sprintf(out, "%s", gettext("Japanese")); - return std::string(out); + return gettext("Japanese"); + break; + case Swkbd_LanguageType__English: + return gettext("English"); break; - /*case Swkbd_LanguageType__English: - gettextLoadLanguage("romfs:/english.json"); - break;*/ /*case Swkbd_LanguageType__French: gettextLoadLanguage("romfs:/french.json"); break; @@ -86,20 +84,16 @@ std::string getLoadedLanguage() { gettextLoadLanguage("romfs:/german.json"); break;*/ case Swkbd_LanguageType__Italian: - sprintf(out, "%s", gettext("Italian")); - return std::string(out); + return gettext("Italian"); break; case Swkbd_LanguageType__Spanish: - sprintf(out, "%s", gettext("Spanish")); - return std::string(out); + return gettext("Spanish"); break; case Swkbd_LanguageType__Chinese1: - sprintf(out, "%s", gettext("Traditional Chinese")); - return std::string(out); + return gettext("Traditional Chinese"); break; case Swkbd_LanguageType__Korean: - sprintf(out, "%s", gettext("Korean")); - return std::string(out); + return gettext("Korean"); break; /* case Swkbd_LanguageType__Dutch: @@ -109,16 +103,13 @@ std::string getLoadedLanguage() { gettextLoadLanguage("romfs:/portuguese.json"); break;*/ case Swkbd_LanguageType__Russian: - sprintf(out, "%s", gettext("Russian")); - return std::string(out); + return gettext("Russian"); break; case Swkbd_LanguageType__Chinese2: - sprintf(out, "%s", gettext("Simplified Chinese")); - return std::string(out); + return gettext("Simplified Chinese"); break; default: - sprintf(out, "%s", gettext("English")); - return std::string(out); + return gettext("English"); break; } } From ac6c2e1a41e577652374f640bb8c6cca1e21cf66 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 15:58:10 +0200 Subject: [PATCH 05/11] Fixes --- src/configMenu.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/configMenu.cpp b/src/configMenu.cpp index dcc54e0..221658e 100644 --- a/src/configMenu.cpp +++ b/src/configMenu.cpp @@ -36,21 +36,39 @@ void configMenu() { if (input.get(TRIGGER, PAD_BUTTON_B)) break; if (input.get(TRIGGER, PAD_BUTTON_RIGHT)) { - if (language == "Japanese") + if (language == gettext("Japanese")) loadLanguage(Swkbd_LanguageType__Italian); - else if (language == "Italian") + else if (language == gettext("Italian")) loadLanguage(Swkbd_LanguageType__Spanish); - else if (language == "Spanish") + else if (language == gettext("Spanish")) loadLanguage(Swkbd_LanguageType__Chinese1); - else if (language == "Traditional Chinese") + else if (language == gettext("Traditional Chinese")) loadLanguage(Swkbd_LanguageType__Korean); - else if (language == "Korean") + else if (language == gettext("Korean")) loadLanguage(Swkbd_LanguageType__Russian); - else if (language == "Russian") + else if (language == gettext("Russian")) loadLanguage(Swkbd_LanguageType__Chinese2); - else if (language == "Simplified Chinese") + else if (language == gettext("Simplified Chinese")) loadLanguage(Swkbd_LanguageType__English); - else if (language == "English") + else if (language == gettext("English")) + loadLanguage(Swkbd_LanguageType__Japanese); + } + if (input.get(TRIGGER, PAD_BUTTON_LEFT)) { + if (language == gettext("Japanese")) + loadLanguage(Swkbd_LanguageType__English); + else if(language == gettext("English")) + loadLanguage(Swkbd_LanguageType__Chinese2); + else if(language == gettext("Simplified Chinese")) + loadLanguage(Swkbd_LanguageType__Russian); + else if(language == gettext("Russian")) + loadLanguage(Swkbd_LanguageType__Korean); + else if(language == gettext("Korean")) + loadLanguage(Swkbd_LanguageType__Chinese1); + else if(language == gettext("Traditional Chinese")) + loadLanguage(Swkbd_LanguageType__Spanish); + else if(language == gettext("Spanish")) + loadLanguage(Swkbd_LanguageType__Italian); + else if(language == gettext("Italian")) loadLanguage(Swkbd_LanguageType__Japanese); } if (redraw) { From 4c2954f7a3dcbe9b48c5d4166ed0c1347c477c2c Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 16:06:43 +0200 Subject: [PATCH 06/11] Add indication in main menu for options --- languages/SChinese.json | 2 +- languages/TChinese.json | 4 ++-- languages/english.json | 2 +- languages/italian.json | 2 +- languages/japanese.json | 4 ++-- languages/korean.json | 4 ++-- languages/russian.json | 2 +- languages/spanish.json | 2 +- src/main.cpp | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/languages/SChinese.json b/languages/SChinese.json index b07620a..7a870ee 100644 --- a/languages/SChinese.json +++ b/languages/SChinese.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Wii U保存数据管理(%u 软件%s)", " vWii Save Management (%u Title%s)": " vWii保存数据管理(%u 软件%s)", " Batch Backup": " 批量备份", - "\ue000: Select Mode": "\ue000:选择模式", + "\uE002: Options \ue000: Select Mode": "\uE002:选项 \ue000:选择模式", " Backup All (%u Title%s)": " 备份所有保存数据(%u 软件%s)", " Backup Wii U (%u Title%s)": " 备份Wii U软件的保存数据(%u 软件%s)", " Backup vWii (%u Title%s)": " 备份vWii软件的保存数据(%u 软件%s)", diff --git a/languages/TChinese.json b/languages/TChinese.json index 9b66454..7dc1fdb 100644 --- a/languages/TChinese.json +++ b/languages/TChinese.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Wii U保存資料管理(%u軟體%s)", " vWii Save Management (%u Title%s)": " vWii保存資料管理(%u軟體%s)", " Batch Backup": " 批量備份", - "\ue000: Select Mode": "\ue000:選擇模式", + "\uE002: Options \ue000: Select Mode": "\uE002:選項 \ue000:選擇模式", " Backup All (%u Title%s)": " 全部備份(%u 標題%s)", " Backup Wii U (%u Title%s)": " 備份Wii U軟體(%u Title%s)", " Backup vWii (%u Title%s)": " 備份vWii軟體(%u軟體%s)", @@ -95,4 +95,4 @@ "Failed to delete user folder.\n%s": "無法刪除使用者資料夾。\n%s", "Failed to import savedata from loadiine.": "無法從loadiine導入保存數據。", "Failed to export savedata to loadiine.": "無法導出保存數據到Loadiine。" -} +} \ No newline at end of file diff --git a/languages/english.json b/languages/english.json index a80c33c..61afe05 100644 --- a/languages/english.json +++ b/languages/english.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Wii U Save Management (%u Title%s)", " vWii Save Management (%u Title%s)": " vWii Save Management (%u Title%s)", " Batch Backup": " Batch Backup", - "\ue000: Select Mode": "\ue000: Select Mode", + "\uE002: Options \ue000: Select Mode": "\uE002: Options \ue000: Select Mode", " Backup All (%u Title%s)": " Backup All (%u Title%s)", " Backup Wii U (%u Title%s)": " Backup Wii U (%u Title%s)", " Backup vWii (%u Title%s)": " Backup vWii (%u Title%s)", diff --git a/languages/italian.json b/languages/italian.json index da782b5..c87b75f 100644 --- a/languages/italian.json +++ b/languages/italian.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Gestione di salvataggio Wii U (%u Titolo%s)", " vWii Save Management (%u Title%s)": " gestione di salvataggio vWii (%u Titolo%s)", " Batch Backup": " Backup Batch", - "\ue000: Select Mode": "\ue000: Seleziona La Modalità", + "\uE002: Options \ue000: Select Mode": "\uE002: Opzioni \ue000: Seleziona La Modalità", " Backup All (%u Title%s)": " Backup di tutto (%u titolo%s)", " Backup Wii U (%u Title%s)": " Backup Wii U (%u Titolo%s)", " Backup vWii (%u Title%s)": " Backup vWii (%u Titolo%s)", diff --git a/languages/japanese.json b/languages/japanese.json index 47d01e0..d0d4e6e 100644 --- a/languages/japanese.json +++ b/languages/japanese.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": "Wii U セーブ管理 (%u タイトル%s)", " vWii Save Management (%u Title%s)": "vWii セーブ管理 (%u タイトル%s)", " Batch Backup": "バッチバックアップ", - "\ue000: Select Mode": "\ue000: モードの選択", + "\uE002: Options \ue000: Select Mode": "\uE002: オプション \ue000: モードの選択", " Backup All (%u Title%s)": "すべてバックアップ (%u タイトル%s)", " Backup Wii U (%u Title%s)": "バックアップ Wii U (%u タイトル%s)", " Backup vWii (%u Title%s)": "バックアップ vWii (%u タイトル%s)", @@ -95,4 +95,4 @@ "Failed to delete user folder.\n%s": "ユーザー フォルダの削除に失敗しました。\n%s", "Failed to import savedata from loadiine.": "loadiine からセーブデータをインポートできませんでした。", "Failed to export savedata to loadiine.": "セーブデータを loadiine にエクスポートできませんでした。" -} +} \ No newline at end of file diff --git a/languages/korean.json b/languages/korean.json index 1c4e922..921a845 100644 --- a/languages/korean.json +++ b/languages/korean.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Wii U 저장 관리 (%u 타이틀%s)", " vWii Save Management (%u Title%s)": " vWii 저장 관리(%u 타이틀%s)", " Batch Backup": " 일괄 백업", - "\ue000: Select Mode": "\ue000: 모드 선택", + "\uE002: Options \ue000: Select Mode": "\uE002: 옵션 \ue000: 모드 선택", " Backup All (%u Title%s)": " 모두 백업 (%u 타이틀%s)", " Backup Wii U (%u Title%s)": " Wii U 백업 (%u 타이틀%s)", " Backup vWii (%u Title%s)": " vWii 백업 (%u 타이틀%s)", @@ -95,4 +95,4 @@ "Failed to delete user folder.\n%s": "사용자 폴더를 삭제하지 못했습니다.\n%s", "Failed to import savedata from loadiine.": "loadiine에서 저장 데이터를 가져오지 못했습니다.", "Failed to export savedata to loadiine.": "저장 데이터를 loadiine으로 내보내지 못했습니다." -} +} \ No newline at end of file diff --git a/languages/russian.json b/languages/russian.json index 03ac0bd..1350ae9 100644 --- a/languages/russian.json +++ b/languages/russian.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Управление сохранениями Wii U (%u Имя%s)", " vWii Save Management (%u Title%s)": " Управление сохранениями vWii (%u Имя%s)", " Batch Backup": " Пакетный бекап", - ": Select Mode": ": Выбор режима", + "\uE002: Options \ue000: Select Mode": "\uE002: Опции \ue000: Выбор режима", " Backup All (%u Title%s)": " Сделать бекап для всех (%u Имя%s)", " Backup Wii U (%u Title%s)": " Бекап только для Wii U (%u Имя%s)", " Backup vWii (%u Title%s)": " Бекап только для vWii (%u Имя%s)", diff --git a/languages/spanish.json b/languages/spanish.json index 26ddbcc..17db2ba 100644 --- a/languages/spanish.json +++ b/languages/spanish.json @@ -14,7 +14,7 @@ " Wii U Save Management (%u Title%s)": " Gestión de saves de Wii U (%u Título%s)", " vWii Save Management (%u Title%s)": " Gestión de saves de vWii (%u Título%s)", " Batch Backup": " Copia de seguridad en masa", - "\ue000: Select Mode": "\ue000: Seleccionar", + "\uE002: Options \ue000: Select Mode": "\uE002: Opciones \ue000: Seleccionar", " Backup All (%u Title%s)": " Copiar Todo (%u Título%s)", " Backup Wii U (%u Title%s)": " Copiar Wii U (%u Título%s)", " Backup vWii (%u Title%s)": " Copiar vWii (%u Título%s)", diff --git a/src/main.cpp b/src/main.cpp index fd39855..caa2441 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -473,7 +473,7 @@ int main() { (vWiiTitlesCount > 1) ? "s" : ""); consolePrintPos(M_OFF, 4, gettext(" Batch Backup")); consolePrintPos(M_OFF, 2 + cursor, "\u2192"); - consolePrintPosAligned(17, 4, 2, gettext("\ue000: Select Mode")); + consolePrintPosAligned(17, 4, 2, gettext("\uE002: Options \ue000: Select Mode")); } break; case selectTitle: { if (mode == batchBackup) { From f0ba6270b2836c8e3890acd0690b168794aa7885 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 16:10:09 +0200 Subject: [PATCH 07/11] Make redraw static --- src/configMenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configMenu.cpp b/src/configMenu.cpp index 221658e..2d04a30 100644 --- a/src/configMenu.cpp +++ b/src/configMenu.cpp @@ -9,7 +9,7 @@ #define M_OFF 1 static int cursorPos = 0; -bool redraw = true; +static bool redraw = true; static std::string language = ""; From 94bcbbebcfb48bc93e76e0e5a80b1053bd5f0964 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 16:11:43 +0200 Subject: [PATCH 08/11] Remove duplicate define --- src/configMenu.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/configMenu.cpp b/src/configMenu.cpp index 2d04a30..6a5f060 100644 --- a/src/configMenu.cpp +++ b/src/configMenu.cpp @@ -6,8 +6,6 @@ #include #include -#define M_OFF 1 - static int cursorPos = 0; static bool redraw = true; From 4f3de27d0423128ebc7f958ef2d7a6c26ae81276 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 16:12:17 +0200 Subject: [PATCH 09/11] clang-format --- src/configMenu.cpp | 18 +++++++++--------- src/language.cpp | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/configMenu.cpp b/src/configMenu.cpp index 6a5f060..b7c3f04 100644 --- a/src/configMenu.cpp +++ b/src/configMenu.cpp @@ -1,6 +1,6 @@ -#include #include #include +#include #include #include #include @@ -54,19 +54,19 @@ void configMenu() { if (input.get(TRIGGER, PAD_BUTTON_LEFT)) { if (language == gettext("Japanese")) loadLanguage(Swkbd_LanguageType__English); - else if(language == gettext("English")) + else if (language == gettext("English")) loadLanguage(Swkbd_LanguageType__Chinese2); - else if(language == gettext("Simplified Chinese")) + else if (language == gettext("Simplified Chinese")) loadLanguage(Swkbd_LanguageType__Russian); - else if(language == gettext("Russian")) - loadLanguage(Swkbd_LanguageType__Korean); - else if(language == gettext("Korean")) + else if (language == gettext("Russian")) + loadLanguage(Swkbd_LanguageType__Korean); + else if (language == gettext("Korean")) loadLanguage(Swkbd_LanguageType__Chinese1); - else if(language == gettext("Traditional Chinese")) + else if (language == gettext("Traditional Chinese")) loadLanguage(Swkbd_LanguageType__Spanish); - else if(language == gettext("Spanish")) + else if (language == gettext("Spanish")) loadLanguage(Swkbd_LanguageType__Italian); - else if(language == gettext("Italian")) + else if (language == gettext("Italian")) loadLanguage(Swkbd_LanguageType__Japanese); } if (redraw) { diff --git a/src/language.cpp b/src/language.cpp index 6ce557f..e4e3584 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -30,7 +30,7 @@ void loadLanguage(Swkbd_LanguageType language) { gettextLoadLanguage("romfs:/japanese.json"); break; case Swkbd_LanguageType__English: - gettextLoadLanguage("romfs:/english.json"); + gettextLoadLanguage("romfs:/english.json"); break; /*case Swkbd_LanguageType__French: gettextLoadLanguage("romfs:/french.json"); @@ -75,7 +75,7 @@ std::string getLoadedLanguage() { return gettext("Japanese"); break; case Swkbd_LanguageType__English: - return gettext("English"); + return gettext("English"); break; /*case Swkbd_LanguageType__French: gettextLoadLanguage("romfs:/french.json"); From c82b013bcce979f623af61cc543b2f0b8f3946c0 Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 19:09:19 +0200 Subject: [PATCH 10/11] Fix some translations and load correct fonts --- include/log_freetype.h | 1 + languages/italian.json | 26 +++++++++++++------------- languages/japanese.json | 28 ++++++++++++++-------------- src/language.cpp | 10 ++++++++++ src/log_freetype.cpp | 17 +++++++++++++++++ 5 files changed, 55 insertions(+), 27 deletions(-) diff --git a/include/log_freetype.h b/include/log_freetype.h index 5fb9bc7..ecea27b 100644 --- a/include/log_freetype.h +++ b/include/log_freetype.h @@ -18,6 +18,7 @@ #endif bool WHBLogFreetypeInit() __attribute__((cold)); +bool setFont(OSSharedDataType font); void WHBLogFreetypeFree() __attribute__((cold)); void drawPixel(int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a); void ttfFontColor32(uint32_t color); diff --git a/languages/italian.json b/languages/italian.json index c87b75f..78dbd3b 100644 --- a/languages/italian.json +++ b/languages/italian.json @@ -18,10 +18,10 @@ " Backup All (%u Title%s)": " Backup di tutto (%u titolo%s)", " Backup Wii U (%u Title%s)": " Backup Wii U (%u Titolo%s)", " Backup vWii (%u Title%s)": " Backup vWii (%u Titolo%s)", - "\ue000: Backup \ue001: Back": "\ue000: Backup : Indietro", + "\ue000: Backup \ue001: Back": "\ue000: Backup \ue001: Indietro", "%s Sort: %s \ue084": "%s Ordinamento: %s \ue084", " [Not Init]": " [Non Init]", - "\ue000: Select Game \ue001: Back": "\ue000: Seleziona Partita \ue001:Indietro", + "\ue000: Select Game \ue001: Back": "\ue000: Seleziona Partita \ue001: Indietro", " Backup savedata": " Backup salvataggio", " Restore savedata": " Ripristina salvataggio", " Wipe savedata": " Pulisci salvataggio", @@ -44,15 +44,15 @@ " to copy from": " per copiare da", " to copy to": " per copiare su", "Date: %s": "Data: %s", - "Include 'common' save?": "Includi salvataggio 'comuni'?", + "Include 'common' save?": "Includi salvataggio 'common'?", "yes": "sì", "no ": "no ", "No 'common' save found.": "Nessun salvataggio 'comune' trovato.", "\ue000: Restore \ue001: Back": "\ue000: Ripristina \ue001: Indietro", - "\ue000: Wipe \ue001: Back": "\ue000: Pulire \ue001:Indietro", - "\ue000: Import \ue001: Back": "\ue000: Importa \ue001:Indietro", - "\ue000: Export \ue001: Back": "\ue000: Esporta \ue001:Indietro", - "\ue000: Copy \ue001: Back": "\ue000: Copia \ue001:Indietro", + "\ue000: Wipe \ue001: Back": "\ue000: Pulire \ue001: Indietro", + "\ue000: Import \ue001: Back": "\ue000: Importa \ue001: Indietro", + "\ue000: Export \ue001: Back": "\ue000: Esporta \ue001: Indietro", + "\ue000: Copy \ue001: Back": "\ue000: Copia \ue001: Indietro", "Press \ue044 to exit.": "Premi \ue044 per uscire.", "No Wii U titles found.": "Nessun titolo Wii U trovato.", "No vWii saves found.": "Nessun salvataggio vWii trovato.", @@ -70,11 +70,11 @@ "\ue000 Yes - \ue001 No": "\ue000 Sì - \ue001 No", "\ue000 Confirm - \ue001 Cancel": "\ue000 Conferma - \ue001 Annulla", "Filesize: %d bytes": "Dimensione file: %d byte", - "Deleting folder %s": "Eliminazione cartella '%s'", - "From: \n%s": "Da: %s", - "Failed to delete folder %s\n%s": "Non è stato possibile eliminare il file %s %s", - "Deleting file %s": "Eliminazione cartella '%s'", - "Failed to delete file %s\n%s": "Non è stato possibile eliminare il file %s %s", + "Deleting folder %s": "Eliminazione cartella %s", + "From: \n%s": "Da: \n%s", + "Failed to delete folder %s\n%s": "Non è stato possibile eliminare il file %s\n%s", + "Deleting file %s": "Eliminazione cartella %s", + "Failed to delete file %s\n%s": "Non è stato possibile eliminare il file %s\n%s", "Loadiine game folder not found.": "Cartella di gioco Loadiine non trovata.", "Failed to open Loadiine game save directory.": "Apertura della directory di salvataggio del gioco Loadiine non riuscita.", "Are you sure?": "Sei sicuro?", @@ -92,7 +92,7 @@ "Backup current savedata first?": "Salvare prima il salvataggio corrente?", "Failed to delete common folder.\n%s": "Impossibile eliminare la cartella comune.\n%s", "Failed to delete savefile.": "Non è stato possibile eliminare il salvataggio.", - "Failed to delete user folder.\n%s": "Impossibile eliminare la cartella. %s", + "Failed to delete user folder.\n%s": "Impossibile eliminare la cartella.\n%s", "Failed to import savedata from loadiine.": "Impossibile importare salvataggi da loadiine.", "Failed to export savedata to loadiine.": "Impossibile importare salvataggi da loadiine." } \ No newline at end of file diff --git a/languages/japanese.json b/languages/japanese.json index d0d4e6e..cf3cf8e 100644 --- a/languages/japanese.json +++ b/languages/japanese.json @@ -11,23 +11,23 @@ "Storage": "ストレージ", "Storage+Name": "ストレージ+名前", "initFS failed. Please make sure your MochaPayload is up-to-date": "initFS が失敗しました。 MochaPayload が最新であることを確認してください", - " Wii U Save Management (%u Title%s)": "Wii U セーブ管理 (%u タイトル%s)", - " vWii Save Management (%u Title%s)": "vWii セーブ管理 (%u タイトル%s)", - " Batch Backup": "バッチバックアップ", + " Wii U Save Management (%u Title%s)": " Wii U セーブ管理 (%u タイトル%s)", + " vWii Save Management (%u Title%s)": " vWii セーブ管理 (%u タイトル%s)", + " Batch Backup": " バッチバックアップ", "\uE002: Options \ue000: Select Mode": "\uE002: オプション \ue000: モードの選択", - " Backup All (%u Title%s)": "すべてバックアップ (%u タイトル%s)", - " Backup Wii U (%u Title%s)": "バックアップ Wii U (%u タイトル%s)", - " Backup vWii (%u Title%s)": "バックアップ vWii (%u タイトル%s)", + " Backup All (%u Title%s)": " すべてバックアップ (%u タイトル%s)", + " Backup Wii U (%u Title%s)": " バックアップ Wii U (%u タイトル%s)", + " Backup vWii (%u Title%s)": " バックアップ vWii (%u タイトル%s)", "\ue000: Backup \ue001: Back": "\ue000: バックアップ \ue001: 戻る", "%s Sort: %s \ue084": "%s 並べ替え: %s \ue084", " [Not Init]": "[初期化しない]", "\ue000: Select Game \ue001: Back": "\ue000: ゲームを選択 \ue001: 戻る", - " Backup savedata": "セーブデータのバックアップ", - " Restore savedata": "セーブデータの復元", - " Wipe savedata": "セーブデータを消去", - " Import from loadiine": "ローディーンからインポート", - " Export to loadiine": "ローディーンにエクスポート", - " Copy Savedata to Title in %s": "セーブデータを %s のタイトルにコピー", + " Backup savedata": " セーブデータのバックアップ", + " Restore savedata": " セーブデータの復元", + " Wipe savedata": " セーブデータを消去", + " Import from loadiine": " ローディーンからインポート", + " Export to loadiine": " ローディーンにエクスポート", + " Copy Savedata to Title in %s": " セーブデータを %s のタイトルにコピー", "\ue000: Select Task \ue001: Back": "\ue000: タスクを選択 \ue001: 戻る", "Destination:": "行き先:", "Select %s:": "%s を選択:", @@ -41,8 +41,8 @@ "Has Save": "保存あり", "Select Wii U user to delete from:": "削除するWii Uユーザーを選択:", "Select Wii U user%s:": "Wii Uユーザー%sを選択:", - " to copy from": "からコピーする", - " to copy to": "コピーする", + " to copy from": " からコピーする", + " to copy to": " コピーする", "Date: %s": "日付: %s", "Include 'common' save?": "「共通」保存を含めますか?", "yes": "はい", diff --git a/src/language.cpp b/src/language.cpp index e4e3584..53bd87f 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -1,3 +1,4 @@ +#include "log_freetype.h" #include #include #include @@ -27,9 +28,11 @@ void loadLanguage(Swkbd_LanguageType language) { loadedLang = language; switch (language) { case Swkbd_LanguageType__Japanese: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/japanese.json"); break; case Swkbd_LanguageType__English: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/english.json"); break; /*case Swkbd_LanguageType__French: @@ -39,15 +42,19 @@ void loadLanguage(Swkbd_LanguageType language) { gettextLoadLanguage("romfs:/german.json"); break;*/ case Swkbd_LanguageType__Italian: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/italian.json"); break; case Swkbd_LanguageType__Spanish: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/spanish.json"); break; case Swkbd_LanguageType__Chinese1: + setFont(OS_SHAREDDATATYPE_FONT_CHINESE); gettextLoadLanguage("romfs:/TChinese.json"); break; case Swkbd_LanguageType__Korean: + setFont(OS_SHAREDDATATYPE_FONT_KOREAN); gettextLoadLanguage("romfs:/korean.json"); break; /* @@ -58,12 +65,15 @@ void loadLanguage(Swkbd_LanguageType language) { gettextLoadLanguage("romfs:/portuguese.json"); break;*/ case Swkbd_LanguageType__Russian: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/russian.json"); break; case Swkbd_LanguageType__Chinese2: + setFont(OS_SHAREDDATATYPE_FONT_CHINESE); gettextLoadLanguage("romfs:/SChinese.json"); break; default: + setFont(OS_SHAREDDATATYPE_FONT_STANDARD); gettextLoadLanguage("romfs:/english.json"); break; } diff --git a/src/log_freetype.cpp b/src/log_freetype.cpp index 51acc30..1d978fe 100644 --- a/src/log_freetype.cpp +++ b/src/log_freetype.cpp @@ -143,6 +143,23 @@ bool WHBLogFreetypeInit() { return false; } +bool setFont(OSSharedDataType font) { + FT_Error result; + if ((result = FT_Init_FreeType(&fontLibrary)) != 0) + return true; + + uint32_t fontSize; + OSGetSharedData(font, 0, (void **) &fontBuffer, &fontSize); + + if ((result = FT_New_Memory_Face(fontLibrary, fontBuffer, fontSize, 0, &fontFace)) != 0) + return true; + if ((result = FT_Select_Charmap(fontFace, FT_ENCODING_UNICODE)) != 0) + return true; + if ((result = FT_Set_Pixel_Sizes(fontFace, 0, 22))) + return true; + return false; +} + void WHBLogFreetypeFree() { FT_Done_Face(fontFace); FT_Done_FreeType(fontLibrary); From 1322094ab7e58cf0b48d2ef279daec684558bdac Mon Sep 17 00:00:00 2001 From: Xpl0itU Date: Sun, 23 Oct 2022 19:09:41 +0200 Subject: [PATCH 11/11] Bump version --- include/savemng.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/savemng.h b/include/savemng.h index 67d0783..1094700 100644 --- a/include/savemng.h +++ b/include/savemng.h @@ -24,7 +24,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 4 -#define VERSION_MICRO 8 +#define VERSION_MICRO 9 #define M_OFF 1 typedef struct {