From 14c12eb0e5d2f3a2aeb0d0fb83833cfc3362fe3e Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:34:19 -0500 Subject: [PATCH] Make languages default to english with missing data --- src/pc/djui/djui_language.c | 28 ++++++++++++++++++++-------- src/pc/ini.c | 4 +++- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/pc/djui/djui_language.c b/src/pc/djui/djui_language.c index 1de53e651..5ba673c7e 100644 --- a/src/pc/djui/djui_language.c +++ b/src/pc/djui/djui_language.c @@ -7,33 +7,45 @@ #include "pc/djui/djui_language.h" #include "pc/djui/djui_popup.h" +static ini_t* sEnglishLang = NULL; static ini_t* sLang = NULL; bool djui_language_init(char* lang) { // free old ini - if (sLang != NULL) { - ini_free(sLang); - sLang = NULL; - } + ini_free(sLang); + sLang = NULL; + ini_free(sEnglishLang); + sEnglishLang = NULL; // construct path char path[SYS_MAX_PATH] = ""; if (!lang || lang[0] == '\0') { lang = "English"; } snprintf(path, SYS_MAX_PATH, "%s/lang/%s.ini", sys_resource_path(), lang); - // load + // load normal lang sLang = ini_load(path); + // load english lang + snprintf(path, SYS_MAX_PATH, "%s/lang/English.ini", sys_resource_path()); + sEnglishLang = ini_load(path); + return sLang != NULL; } -char* djui_language_get(const char *section, const char *key) { - if (!sLang) { return (char*)key; } - char* value = (char*)ini_get(sLang, section, key); +static char* djui_language_get_english(const char *section, const char *key) { + if (!sEnglishLang) { return (char*)key; } + char* value = (char*)ini_get(sEnglishLang, section, key); if (!value) { return (char*)key; } return value; } +char* djui_language_get(const char *section, const char *key) { + if (!sLang) { return djui_language_get_english(section, key); } + char* value = (char*)ini_get(sLang, section, key); + if (!value) { return djui_language_get_english(section, key); } + return value; +} + char* djui_language_find_key(const char* section, const char* value) { if (!sLang) return NULL; return (char*)ini_find_key(sLang, section, value); diff --git a/src/pc/ini.c b/src/pc/ini.c index 91927cbba..87fef555e 100644 --- a/src/pc/ini.c +++ b/src/pc/ini.c @@ -215,7 +215,9 @@ fail: * Deletes ini_t struct from memory. */ void ini_free(ini_t *ini) { - free(ini->data); + if (ini) { + free(ini->data); + } free(ini); }