Restructure Language System

This commit is contained in:
tobid7 2024-05-02 15:26:18 +02:00
parent a72ea0beb4
commit e78ac834db
2 changed files with 42 additions and 15 deletions

View File

@ -8,13 +8,17 @@ namespace RenderD7 {
namespace Lang { namespace Lang {
/// @brief Get 3ds System lang! [en] by default /// @brief Get 3ds System lang! [en] by default
/// @return Sytemlang as string /// @return Sytemlang as string
std::string getSys(); std::string GetSys();
/// @brief Get The Translation String /// @brief Get The Translation String
/// @param key Key of Translation /// @param key Key of Translation
/// @return The Translated String /// @return The Translated String
std::string get(const std::string &key); std::string Get(const std::string &key);
/// @brief Load A Language json /// @brief Load A Language json
/// @param lang The Language Key [en], [de], etc, or getSys() /// @param lang The Language Key [en], [de], etc, or getSys()
void load(const std::string &lang); void Load(const std::string &lang);
// New funcs
std::string GetName();
std::string GetAuthor();
std::string GetShortcut();
} // namespace Lang } // namespace Lang
} // namespace RenderD7 } // namespace RenderD7

View File

@ -6,7 +6,7 @@
static nlohmann::json appJson; static nlohmann::json appJson;
std::string RenderD7::Lang::getSys() { std::string RenderD7::Lang::GetSys() {
u8 language = 1; u8 language = 1;
CFGU_GetSystemLanguage(&language); CFGU_GetSystemLanguage(&language);
@ -39,13 +39,13 @@ std::string RenderD7::Lang::getSys() {
return "zh-CN"; // Chinese (Simplified) return "zh-CN"; // Chinese (Simplified)
break; break;
// case 7: case 7:
// return "ko"; // Korean return "ko"; // Korean
// break; break;
// case 8: case 8:
// return "nl"; // Dutch return "nl"; // Dutch
// break; break;
case 9: case 9:
return "pt"; // Portuguese return "pt"; // Portuguese
@ -64,14 +64,16 @@ std::string RenderD7::Lang::getSys() {
break; break;
} }
} }
std::string RenderD7::Lang::get(const std::string &key) { std::string RenderD7::Lang::Get(const std::string &key) {
if (!appJson.contains(key)) return key; if(!appJson.contains("keys")) return "ERR-01";
return appJson.at(key).get<std::string>(); nlohmann::json js = appJson["keys"];
if (!js.contains(key)) return key;
return js.at(key).get<std::string>();
} }
void RenderD7::Lang::load(const std::string &lang) { void RenderD7::Lang::Load(const std::string &lang) {
std::fstream values; std::fstream values;
if (std::filesystem::is_character_file("romfs:/lang/" + lang + "/app.json")) { if (std::filesystem::exists("romfs:/lang/" + lang + "/app.json")) {
values.open("romfs:/lang/" + lang + "/app.json", std::ios::in); values.open("romfs:/lang/" + lang + "/app.json", std::ios::in);
if (values.is_open()) { if (values.is_open()) {
appJson = nlohmann::json::parse(values); appJson = nlohmann::json::parse(values);
@ -92,4 +94,25 @@ void RenderD7::Lang::load(const std::string &lang) {
} }
return; return;
} }
}
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>();
} }