This commit is contained in:
EmeraldLockdown 2026-03-29 16:55:48 -05:00 committed by GitHub
commit 16db720d3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 9 deletions

View file

@ -7,33 +7,43 @@
#include "pc/djui/djui_language.h" #include "pc/djui/djui_language.h"
#include "pc/djui/djui_popup.h" #include "pc/djui/djui_popup.h"
static ini_t* sEnglishLang = NULL;
static ini_t* sLang = NULL; static ini_t* sLang = NULL;
bool djui_language_init(char* lang) { bool djui_language_init(char* lang) {
// free old ini // free old ini
if (sLang != NULL) { ini_free(sLang);
ini_free(sLang); sLang = NULL;
sLang = NULL; ini_free(sEnglishLang);
} sEnglishLang = NULL;
// construct path // construct path
char path[SYS_MAX_PATH] = ""; char path[SYS_MAX_PATH] = "";
if (!lang || lang[0] == '\0') { lang = "English"; } if (!lang || lang[0] == '\0') { lang = "English"; }
snprintf(path, SYS_MAX_PATH, "%s/lang/%s.ini", sys_resource_path(), lang); snprintf(path, SYS_MAX_PATH, "%s/lang/%s.ini", sys_resource_path(), lang);
// load // load user lang
sLang = ini_load(path); 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; return sLang != NULL;
} }
char* djui_language_get(const char *section, const char *key) { static char* djui_language_get_english(const char *section, const char *key) {
if (!sLang) { return (char*)key; } char* value = (char*)ini_get(sEnglishLang, section, key);
char* value = (char*)ini_get(sLang, section, key);
if (!value) { return (char*)key; } if (!value) { return (char*)key; }
return value; return value;
} }
char* djui_language_get(const char *section, const char *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) { char* djui_language_find_key(const char* section, const char* value) {
if (!sLang) return NULL; if (!sLang) return NULL;
return (char*)ini_find_key(sLang, section, value); return (char*)ini_find_key(sLang, section, value);

View file

@ -215,7 +215,7 @@ fail:
* Deletes ini_t struct from memory. * Deletes ini_t struct from memory.
*/ */
void ini_free(ini_t *ini) { void ini_free(ini_t *ini) {
free(ini->data); if (ini) free(ini->data);
free(ini); free(ini);
} }
@ -256,6 +256,7 @@ const char* ini_find_key(ini_t *ini, const char* section, const char* value) {
* @return string with the key. * @return string with the key.
*/ */
const char* ini_get(ini_t *ini, const char *section, const char *key) { const char* ini_get(ini_t *ini, const char *section, const char *key) {
if (!ini) return NULL;
char *current_section = ""; char *current_section = "";
char *val; char *val;
char *p = ini->data; char *p = ini->data;