commit f0f93b8
default
·
2025-02-15 05:00:19 +0000 UTC
parent d8ae88e
Optimized lang_str().
M
data.c
+6,
-13
1@@ -4072,21 +4072,14 @@ void badlogin_inc(const char *user, const char *addr)
2 const char *lang_str(const char *str, const snac *user)
3 /* returns a translated string */
4 {
5- if (user && xs_is_string(str) && xs_is_dict(srv_langs)) {
6- /* get user preference */
7- const char *lang = xs_dict_get(user->config, "lang");
8+ const char *n_str = str;
9
10- if (xs_is_string(lang)) {
11- const xs_dict *strs = xs_dict_get(srv_langs, lang);
12+ if (user && xs_is_dict(user->lang) && xs_is_string(str)) {
13+ n_str = xs_dict_get(user->lang, str);
14
15- if (xs_is_dict(strs)) {
16- const char *n_str = xs_dict_get(strs, str);
17-
18- if (xs_is_string(n_str))
19- str = n_str;
20- }
21- }
22+ if (xs_is_null(n_str) || *n_str == '\0')
23+ n_str = str;
24 }
25
26- return str;
27+ return n_str;
28 }
M
html.c
+15,
-2
1@@ -3326,6 +3326,17 @@ xs_str *html_notifications(snac *user, int skip, int show)
2 }
3
4
5+void set_user_lang(snac *user)
6+/* sets the language dict according to user configuration */
7+{
8+ user->lang = NULL;
9+ const char *lang = xs_dict_get(user->config, "lang");
10+
11+ if (xs_is_string(lang))
12+ user->lang = xs_dict_get(srv_langs, lang);
13+}
14+
15+
16 int html_get_handler(const xs_dict *req, const char *q_path,
17 char **body, int *b_size, char **ctype,
18 xs_str **etag, xs_str **last_modified)
19@@ -3399,7 +3410,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
20 return HTTP_STATUS_NOT_FOUND;
21 }
22
23- user = &snac;
24+ user = &snac; /* for L() */
25+ set_user_lang(&snac);
26
27 if (xs_is_true(xs_dict_get(srv_config, "proxy_media")))
28 proxy = 1;
29@@ -4048,7 +4060,8 @@ int html_post_handler(const xs_dict *req, const char *q_path,
30 return HTTP_STATUS_UNAUTHORIZED;
31 }
32
33- user = &snac;
34+ user = &snac; /* for L() */
35+ set_user_lang(&snac);
36
37 p_vars = xs_dict_get(req, "p_vars");
38
M
snac.h
+1,
-0
1@@ -60,6 +60,7 @@ typedef struct {
2 xs_dict *links; /* validated links */
3 xs_str *actor; /* actor url */
4 xs_str *md5; /* actor url md5 */
5+ const xs_dict *lang;/* string translation dict */
6 } snac;
7
8 typedef struct {