diff options
Diffstat (limited to '')
| -rw-r--r-- | data.c | 25 | ||||
| -rw-r--r-- | snac.c | 1 | ||||
| -rw-r--r-- | snac.h | 3 |
3 files changed, 29 insertions, 0 deletions
| @@ -4064,3 +4064,28 @@ void badlogin_inc(const char *user, const char *addr) | |||
| 4064 | pthread_mutex_unlock(&data_mutex); | 4064 | pthread_mutex_unlock(&data_mutex); |
| 4065 | } | 4065 | } |
| 4066 | } | 4066 | } |
| 4067 | |||
| 4068 | |||
| 4069 | /** language strings **/ | ||
| 4070 | |||
| 4071 | const char *lang_str(const char *str, const snac *user) | ||
| 4072 | /* returns a translated string */ | ||
| 4073 | { | ||
| 4074 | if (user && xs_is_string(str) && xs_is_dict(srv_langs)) { | ||
| 4075 | /* get user preference */ | ||
| 4076 | const char *lang = xs_dict_get(user->config, "lang"); | ||
| 4077 | |||
| 4078 | if (xs_is_string(lang)) { | ||
| 4079 | const xs_dict *strs = xs_dict_get(srv_langs, lang); | ||
| 4080 | |||
| 4081 | if (xs_is_dict(strs)) { | ||
| 4082 | const char *n_str = xs_dict_get(strs, str); | ||
| 4083 | |||
| 4084 | if (xs_is_string(n_str)) | ||
| 4085 | str = n_str; | ||
| 4086 | } | ||
| 4087 | } | ||
| 4088 | } | ||
| 4089 | |||
| 4090 | return str; | ||
| 4091 | } | ||
| @@ -34,6 +34,7 @@ xs_str *srv_basedir = NULL; | |||
| 34 | xs_dict *srv_config = NULL; | 34 | xs_dict *srv_config = NULL; |
| 35 | xs_str *srv_baseurl = NULL; | 35 | xs_str *srv_baseurl = NULL; |
| 36 | xs_str *srv_proxy_token_seed = NULL; | 36 | xs_str *srv_proxy_token_seed = NULL; |
| 37 | xs_dict *srv_langs = NULL; | ||
| 37 | 38 | ||
| 38 | int dbglevel = 0; | 39 | int dbglevel = 0; |
| 39 | 40 | ||
| @@ -33,6 +33,7 @@ extern xs_str *srv_basedir; | |||
| 33 | extern xs_dict *srv_config; | 33 | extern xs_dict *srv_config; |
| 34 | extern xs_str *srv_baseurl; | 34 | extern xs_str *srv_baseurl; |
| 35 | extern xs_str *srv_proxy_token_seed; | 35 | extern xs_str *srv_proxy_token_seed; |
| 36 | extern xs_dict *srv_langs; | ||
| 36 | 37 | ||
| 37 | extern int dbglevel; | 38 | extern int dbglevel; |
| 38 | 39 | ||
| @@ -444,3 +445,5 @@ xs_str *make_url(const char *href, const char *proxy, int by_token); | |||
| 444 | 445 | ||
| 445 | int badlogin_check(const char *user, const char *addr); | 446 | int badlogin_check(const char *user, const char *addr); |
| 446 | void badlogin_inc(const char *user, const char *addr); | 447 | void badlogin_inc(const char *user, const char *addr); |
| 448 | |||
| 449 | const char *lang_str(const char *str, const snac *user); | ||