Browse Source

New function lang_str().

default 1 month ago
parent
commit
9a56475f4c
3 changed files with 29 additions and 0 deletions
  1. 25 0
      data.c
  2. 1 0
      snac.c
  3. 3 0
      snac.h

+ 25 - 0
data.c

@@ -4064,3 +4064,28 @@ void badlogin_inc(const char *user, const char *addr)
         pthread_mutex_unlock(&data_mutex);
     }
 }
+
+
+/** language strings **/
+
+const char *lang_str(const char *str, const snac *user)
+/* returns a translated string */
+{
+    if (user && xs_is_string(str) && xs_is_dict(srv_langs)) {
+        /* get user preference */
+        const char *lang = xs_dict_get(user->config, "lang");
+
+        if (xs_is_string(lang)) {
+            const xs_dict *strs = xs_dict_get(srv_langs, lang);
+
+            if (xs_is_dict(strs)) {
+                const char *n_str = xs_dict_get(strs, str);
+
+                if (xs_is_string(n_str))
+                    str = n_str;
+            }
+        }
+    }
+
+    return str;
+}

+ 1 - 0
snac.c

@@ -34,6 +34,7 @@ xs_str *srv_basedir = NULL;
 xs_dict *srv_config = NULL;
 xs_str *srv_baseurl = NULL;
 xs_str *srv_proxy_token_seed = NULL;
+xs_dict *srv_langs = NULL;
 
 int dbglevel = 0;
 

+ 3 - 0
snac.h

@@ -33,6 +33,7 @@ extern xs_str *srv_basedir;
 extern xs_dict *srv_config;
 extern xs_str *srv_baseurl;
 extern xs_str *srv_proxy_token_seed;
+extern xs_dict *srv_langs;
 
 extern int dbglevel;
 
@@ -444,3 +445,5 @@ xs_str *make_url(const char *href, const char *proxy, int by_token);
 
 int badlogin_check(const char *user, const char *addr);
 void badlogin_inc(const char *user, const char *addr);
+
+const char *lang_str(const char *str, const snac *user);