mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-05-10 19:01:46 +00:00
Merge 348bb3b35a into 7604ef9297
This commit is contained in:
commit
16db720d3b
2 changed files with 20 additions and 9 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue