From 9a56475f4c1566925536bdf8bbd7a36c1d0c39f8 Mon Sep 17 00:00:00 2001 From: default Date: Fri, 14 Feb 2025 09:54:58 +0100 Subject: New function lang_str(). --- data.c | 25 +++++++++++++++++++++++++ snac.c | 1 + snac.h | 3 +++ 3 files changed, 29 insertions(+) diff --git a/data.c b/data.c index 9fc54a0..3aba471 100644 --- 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 index 9f5b50e..541828e 100644 --- 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 index d2d73af..69b1b74 100644 --- 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); -- cgit v1.2.3