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()10 int 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()40 void 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)47 const char* lang_get(unsigned int id) {
48     return (const char*)array_get(&language_strings, id);
49 }
50