Try to fix lang selection

This commit is contained in:
Xpl0itU 2022-10-23 13:12:01 +02:00
parent 99ac80af25
commit 5a67dc4e0e
3 changed files with 27 additions and 17 deletions

View File

@ -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__));

View File

@ -1,4 +1,4 @@
#include "draw.h"
#include <draw.h>
#include <configMenu.h>
#include <cstring>
#include <input.h>
@ -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;
}

View File

@ -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;
}
}