commit 9a56475f4c1566925536bdf8bbd7a36c1d0c39f8
parent c523216bf3fbee74897f15b4526e0ea5bef22c90
Author: default <nobody@localhost>
Date: Fri, 14 Feb 2025 09:54:58 +0100
New function lang_str().
Diffstat:
3 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/data.c b/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;
+}
diff --git a/snac.c b/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;
diff --git a/snac.h b/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);