diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-04 22:37:51 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-04 22:37:51 +0300 |
commit | 58b8c8d8cb9f78537495f908887fea9d0a451637 (patch) | |
tree | 74438cc91f5c5a6a7a953c98aa52106eb88b250f /src/map/lang.c | |
parent | 857c86d93ebd68e5edbbe14ce26a16a967622822 (diff) | |
download | evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.gz evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.bz2 evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.xz evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.zip |
Rename login/char/map dirs to elogin/echar/emap for avoid conflicts with hercules.
Diffstat (limited to 'src/map/lang.c')
-rw-r--r-- | src/map/lang.c | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/src/map/lang.c b/src/map/lang.c deleted file mode 100644 index ffc682d..0000000 --- a/src/map/lang.c +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. -// Copyright (c) 2014 Evol developers - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "../../../common/HPMi.h" -#include "../../../common/malloc.h" -#include "../../../common/mmo.h" -#include "../../../common/socket.h" -#include "../../../common/strlib.h" -#include "../../../map/npc.h" -#include "../../../map/pc.h" - -#include "map/lang.h" -#include "map/data/session.h" -#include "map/struct/sessionext.h" - -#define MAX_LANGS 100 - -struct DBMap *translate_db = NULL; -char *lang_langs[MAX_LANGS]; -int lang_num = 0; - -static int langsdb_readdb (void); -static int langsdb_readlangs (void); - -void do_init_langs (void) -{ - translate_db = strdb_alloc(DB_OPT_RELEASE_BOTH, 1000); - - langsdb_readlangs (); - langsdb_readdb (); -} - -static int delete_lang_sub(DBKey key __attribute__ ((unused)), - DBData *data, - va_list args __attribute__ ((unused))) -{ - int f; - char **strings = DB->data2ptr(data); - for (f = 0; f < lang_num; f ++) - { - aFree(strings[f]); - strings[f] = NULL; - } - return 0; -} - -void do_final_langs(void) -{ - translate_db->destroy(translate_db, delete_lang_sub); - int f; - for (f = 0; f < lang_num; f ++) - aFree(lang_langs[f]); -} - -static int langsdb_readlangs (void) -{ - FILE *fp; - lang_num = 0; - fp = fopen("langs/langs.txt", "r"); - if (fp == NULL) - { - printf ("can't read langs/langs.txt\n"); - return 1; - } - char line[100]; - char text[101]; - while (fgets (line, 99, fp)) - { - if (sscanf(line, "%99s\n", text) < 1) - continue; - - lang_langs[lang_num] = aStrdup (text); - lang_num ++; - } - fclose(fp); - return 0; -} - -static int langsdb_readdb (void) -{ - char line[1020], line1[1020], line2[1020]; - char filename[1000]; - char **strings = NULL; - char *idx; - int i; - int sz; - for (i = 0; i < lang_num; i ++) - { - strcpy (filename, "langs/lang_"); - strcat (filename, lang_langs[i]); - strcat (filename, ".txt"); - - FILE *fp = fopen(filename, "r"); - if (fp == NULL) - { - printf ("can't read %s\n", filename); - return 1; - } - - if (!fgets (line, 1010, fp)) - { - printf ("can't read %s\n", filename); - continue; - } - - line1[0] = 0; - line2[0] = 0; - while (fgets (line, 1010, fp)) - { - if (*line) - { - idx = strrchr (line, '\n'); - if (idx) - *idx = 0; - } - - if (!*line) - { - line1[0] = 0; - line2[0] = 0; - continue; - } - else if (!*line1) - { - strcpy (line1, line); - continue; - } - strcpy (line2, line); - - strings = (char **)strdb_get(translate_db, line1); - if (!strings) - { - strings = aCalloc (lang_num, sizeof(int*)); - sz = strlen(line1) + 1; - strings[0] = aCalloc (sz < 24 ? 24 : sz, sizeof(char)); - strcpy (strings[0], line2); - strdb_put(translate_db, aStrdup (line1), strings); - } - else - { - sz = strlen(line2) + 1; - strings[i] = aCalloc (sz < 24 ? 24 : sz, sizeof(char)); - strcpy (strings[i], line2); - } - - *line1 = 0; - *line2 = 0; - } - fclose (fp); - } - return 0; -} - -const char* lang_trans(const char *str, int lng, int flg) -{ - if (!str) - return 0; - - if (lng < 0 || lng >= lang_num) - return str; - - char **strings = (char **)strdb_get(translate_db, str); - if (!strings) - { - if (flg) - printf ("no translations for: %s\n", str); - return str; - } - - if (!strings[lng]) - { - if (flg) - printf ("no lang string (%s) for: %s\n", lang_langs[lng], str); - return str; - } - - return strings[lng]; -} - -const char* lang_pctrans(const char *str, TBL_PC *sd) -{ - int lng = 0; - int flg = 1; - if (!str) - return 0; - - if (*str == '#') - flg = 0; - if (sd) - { - struct SessionExt *data = session_get_bysd(sd); - if (data) - lng = data->language; - } - - return lang_trans(str, lng, flg); -} - -int lang_getId(const char *str) -{ - char *str1 = aStrdup(str); - char *str2 = NULL; - int f; - - if ((str2 = strchr(str, '.'))) - *str2 = 0; - - for (f = 0; f < MAX_LANGS && lang_langs[f]; f ++) - { - if (!strcmp(str, lang_langs[f])) - { - aFree (str1); - return f; - } - } - - if ((str2 = strchr(str1, '_'))) - *str2 = 0; - - for (f = 0; f < MAX_LANGS && lang_langs[f]; f ++) - { - if (strstr(lang_langs[f], str1) == lang_langs[f]) - { - aFree (str1); - return f; - } - } - aFree (str1); - return -1; -} |