1 #include <shadowdive/shadowdive.h> 2 #include "resources/languages.h" 3 #include "resources/pathmanager.h" 4 #include "utils/array.h" 5 #include "utils/log.h" 6 7 array language_strings; 8 sd_language *language; 9 lang_init()10int lang_init() { 11 // Get filename 12 const char *filename = pm_get_resource_path(DAT_ENGLISH); 13 14 // Load up language file 15 language = malloc(sizeof(sd_language)); 16 if(sd_language_create(language) != SD_SUCCESS) { 17 goto error_0; 18 } 19 if(sd_language_load(language, filename)) { 20 PERROR("Unable to load language file '%s'!", filename); 21 goto error_1; 22 } 23 24 // Load language strings 25 array_create(&language_strings); 26 for(int i = 0; i < language->count; i++) { 27 array_set(&language_strings, i, language->strings[i].data); 28 } 29 30 INFO("Loaded language file '%s'.", filename); 31 return 0; 32 33 error_1: 34 sd_language_free(language); 35 error_0: 36 free(language); 37 return 1; 38 } 39 lang_close()40void lang_close() { 41 array_free(&language_strings); 42 sd_language_free(language); 43 free(language); 44 language = NULL; 45 } 46 lang_get(unsigned int id)47const char* lang_get(unsigned int id) { 48 return (const char*)array_get(&language_strings, id); 49 } 50