renderd7/source/lang.cpp

118 lines
2.6 KiB
C++
Raw Normal View History

2024-02-19 19:20:37 +01:00
#include <3ds.h>
#include <filesystem>
#include <fstream>
#include <renderd7/lang.hpp>
static nlohmann::json appJson;
2024-05-02 15:26:18 +02:00
std::string RenderD7::Lang::GetSys() {
2024-02-19 19:20:37 +01:00
u8 language = 1;
CFGU_GetSystemLanguage(&language);
switch (language) {
case 0:
return "jp"; // Japanese
break;
case 1:
return "en"; // English
break;
case 2:
return "fr"; // French
break;
case 3:
return "de"; // German
break;
case 4:
return "it"; // Italian
break;
case 5:
return "es"; // Spanish
break;
case 6:
return "zh-CN"; // Chinese (Simplified)
break;
2024-05-02 15:26:18 +02:00
case 7:
return "ko"; // Korean
break;
2024-02-19 19:20:37 +01:00
2024-05-02 15:26:18 +02:00
case 8:
return "nl"; // Dutch
break;
2024-02-19 19:20:37 +01:00
case 9:
return "pt"; // Portuguese
break;
case 10:
return "ru"; // Russian
break;
case 11:
return "zh-TW"; // Chinese (Traditional)
break;
default:
return "en"; // Fall back to English if missing
break;
}
}
2024-05-02 15:26:18 +02:00
std::string RenderD7::Lang::Get(const std::string &key) {
if(!appJson.contains("keys")) return "ERR-01";
nlohmann::json js = appJson["keys"];
if (!js.contains(key)) return key;
return js.at(key).get<std::string>();
2024-02-19 19:20:37 +01:00
}
2024-05-02 15:26:18 +02:00
void RenderD7::Lang::Load(const std::string &lang) {
2024-02-19 19:20:37 +01:00
std::fstream values;
2024-05-02 15:26:18 +02:00
if (std::filesystem::exists("romfs:/lang/" + lang + "/app.json")) {
2024-02-19 19:20:37 +01:00
values.open("romfs:/lang/" + lang + "/app.json", std::ios::in);
if (values.is_open()) {
appJson = nlohmann::json::parse(values);
}
values.close();
if (appJson.is_discarded()) {
appJson = {};
}
return;
} else {
values.open("romfs:/lang/en/app.json", std::ios::in);
if (values.is_open()) {
appJson = nlohmann::json::parse(values);
}
values.close();
if (appJson.is_discarded()) {
appJson = {};
}
return;
}
2024-05-02 15:26:18 +02:00
}
std::string RenderD7::Lang::GetName() {
if (!appJson.contains("info")) return "";
nlohmann::json js = appJson["info"];
if (!js.contains("name")) return "Unknown";
return js.at("name").get<std::string>();
}
std::string RenderD7::Lang::GetAuthor() {
if (!appJson.contains("info")) return "";
nlohmann::json js = appJson["info"];
if (!js.contains("author")) return "Unknown";
return js.at("author").get<std::string>();
}
std::string RenderD7::Lang::GetShortcut() {
if (!appJson.contains("info")) return "";
nlohmann::json js = appJson["info"];
if (!js.contains("shortcut")) return "Unknown";
return js.at("shortcut").get<std::string>();
2021-07-23 15:58:16 +02:00
}