#include "lang.h"
#include "UserNode.h"
#include "DBHelper.h"
+#include "mysqlConn.h"
#define DEFAULT_LANG_TAG "EN"
#define DEFAULT_LANG_NAME "English"
}
+void load_languages() {
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ printf_mysql_query("SELECT `lang`, `text` FROM `language` WHERE `ident` = 'name'");
+ res = mysql_use();
+ while((row = mysql_fetch_row(res)) != NULL) {
+ load_language(row[0], row[1]);
+ }
+}
+
static struct language* add_language(char *langtag, char *langname) {
int cindex;
for(cindex = 0; cindex < MAXLANGUAGES; cindex++) {
return (underscore[1] - 'A');
}
+void load_language(char *tag, char *name) {
+ struct language *lang = get_language_by_tag(tag);
+ if(lang == get_default_language()) return;
+ if(lang) {
+ //remove all entrys
+ int cindex;
+ struct language_table *entry, *next;
+ for(cindex = 0; cindex < 27; cindex++) {
+ for(entry = lang->entrys[cindex]; entry; entry = next) {
+ next = entry->next;
+ free(entry->ident);
+ free(entry->text);
+ free(entry);
+ }
+ lang->entrys[cindex] = NULL;
+ }
+ } else
+ lang = add_language(tag, name);
+ if(!lang) return;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ printf_mysql_query("SELECT `ident`, `text` FROM `language` WHERE `lang` = '%s' AND `ident` != 'name'", escape_string(tag));
+ res = mysql_use();
+ while((row = mysql_fetch_row(res)) != NULL) {
+ register_language_string(lang, row[0], row[1]);
+ }
+}
+
struct language* get_language_by_tag(char *tag) {
int cindex;
for(cindex = 0; cindex < MAXLANGUAGES; cindex++) {
}
}
+void register_language_string(struct language *lang, char *ident, char *text) {
+ int cindex = get_entry_index(ident);
+ struct language_table *lang_entry = malloc(sizeof(*lang_entry));
+ if (!lang_entry) {
+ perror("malloc() failed");
+ return;
+ }
+ lang_entry->ident = strdup(ident);
+ lang_entry->text = strdup(text);
+ lang_entry->next = lang->entrys[cindex];
+ lang->entrys[cindex] = lang_entry;
+}
+
char *get_language_string(struct UserNode *user, const char* msg_ident) {
struct language* lang;
if((user->flags & USERFLAG_ISAUTHED)) {
struct language* get_language_by_tag(char *tag);
struct language* get_language_by_name(char *name);
struct language* get_default_language();
+void load_languages();
+void load_language(char *tag, char *name);
+void register_language_string(struct language *lang, char *ident, char *text);
void register_default_language_table(const struct default_language_entry *msgtab);
char *get_language_string(struct UserNode *user, const char* msg_ident);
char *build_language_string(struct UserNode *user, char *buffer, const char *msg_ident, ...);