diff --git a/include/renderd7/lang.hpp b/include/renderd7/lang.hpp index 799c43d..1944638 100644 --- a/include/renderd7/lang.hpp +++ b/include/renderd7/lang.hpp @@ -8,13 +8,17 @@ namespace RenderD7 { namespace Lang { /// @brief Get 3ds System lang! [en] by default /// @return Sytemlang as string -std::string getSys(); +std::string GetSys(); /// @brief Get The Translation String /// @param key Key of Translation /// @return The Translated String -std::string get(const std::string &key); +std::string Get(const std::string &key); /// @brief Load A Language json /// @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 RenderD7 diff --git a/source/lang.cpp b/source/lang.cpp index 0ef7b36..01e1a84 100644 --- a/source/lang.cpp +++ b/source/lang.cpp @@ -6,7 +6,7 @@ static nlohmann::json appJson; -std::string RenderD7::Lang::getSys() { +std::string RenderD7::Lang::GetSys() { u8 language = 1; CFGU_GetSystemLanguage(&language); @@ -39,13 +39,13 @@ std::string RenderD7::Lang::getSys() { return "zh-CN"; // Chinese (Simplified) break; - // case 7: - // return "ko"; // Korean - // break; + case 7: + return "ko"; // Korean + break; - // case 8: - // return "nl"; // Dutch - // break; + case 8: + return "nl"; // Dutch + break; case 9: return "pt"; // Portuguese @@ -64,14 +64,16 @@ std::string RenderD7::Lang::getSys() { break; } } -std::string RenderD7::Lang::get(const std::string &key) { - if (!appJson.contains(key)) return key; - return appJson.at(key).get(); +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(); } -void RenderD7::Lang::load(const std::string &lang) { +void RenderD7::Lang::Load(const std::string &lang) { 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); if (values.is_open()) { appJson = nlohmann::json::parse(values); @@ -92,4 +94,25 @@ void RenderD7::Lang::load(const std::string &lang) { } 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 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 RenderD7::Lang::GetShortcut() { + if (!appJson.contains("info")) return ""; + nlohmann::json js = appJson["info"]; + if (!js.contains("shortcut")) return "Unknown"; + return js.at("shortcut").get(); } \ No newline at end of file