aboutsummaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'data.c')
-rw-r--r--data.c25
1 files changed, 25 insertions, 0 deletions
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;
+}