commit 9a56475

default  ·  2025-02-14 08:54:58 +0000 UTC
parent c523216
New function lang_str().
3 files changed,  +29, -0
M data.c
M snac.c
M snac.h
M data.c
+25, -0
 1@@ -4064,3 +4064,28 @@ void badlogin_inc(const char *user, const char *addr)
 2         pthread_mutex_unlock(&data_mutex);
 3     }
 4 }
 5+
 6+
 7+/** language strings **/
 8+
 9+const char *lang_str(const char *str, const snac *user)
10+/* returns a translated string */
11+{
12+    if (user && xs_is_string(str) && xs_is_dict(srv_langs)) {
13+        /* get user preference */
14+        const char *lang = xs_dict_get(user->config, "lang");
15+
16+        if (xs_is_string(lang)) {
17+            const xs_dict *strs = xs_dict_get(srv_langs, lang);
18+
19+            if (xs_is_dict(strs)) {
20+                const char *n_str = xs_dict_get(strs, str);
21+
22+                if (xs_is_string(n_str))
23+                    str = n_str;
24+            }
25+        }
26+    }
27+
28+    return str;
29+}
M snac.c
+1, -0
1@@ -34,6 +34,7 @@ xs_str *srv_basedir = NULL;
2 xs_dict *srv_config = NULL;
3 xs_str *srv_baseurl = NULL;
4 xs_str *srv_proxy_token_seed = NULL;
5+xs_dict *srv_langs = NULL;
6 
7 int dbglevel = 0;
8 
M snac.h
+3, -0
 1@@ -33,6 +33,7 @@ extern xs_str *srv_basedir;
 2 extern xs_dict *srv_config;
 3 extern xs_str *srv_baseurl;
 4 extern xs_str *srv_proxy_token_seed;
 5+extern xs_dict *srv_langs;
 6 
 7 extern int dbglevel;
 8 
 9@@ -444,3 +445,5 @@ xs_str *make_url(const char *href, const char *proxy, int by_token);
10 
11 int badlogin_check(const char *user, const char *addr);
12 void badlogin_inc(const char *user, const char *addr);
13+
14+const char *lang_str(const char *str, const snac *user);