diff options
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 19 |
1 files changed, 6 insertions, 13 deletions
| @@ -4072,21 +4072,14 @@ void badlogin_inc(const char *user, const char *addr) | |||
| 4072 | const char *lang_str(const char *str, const snac *user) | 4072 | const char *lang_str(const char *str, const snac *user) |
| 4073 | /* returns a translated string */ | 4073 | /* returns a translated string */ |
| 4074 | { | 4074 | { |
| 4075 | if (user && xs_is_string(str) && xs_is_dict(srv_langs)) { | 4075 | const char *n_str = str; |
| 4076 | /* get user preference */ | ||
| 4077 | const char *lang = xs_dict_get(user->config, "lang"); | ||
| 4078 | 4076 | ||
| 4079 | if (xs_is_string(lang)) { | 4077 | if (user && xs_is_dict(user->lang) && xs_is_string(str)) { |
| 4080 | const xs_dict *strs = xs_dict_get(srv_langs, lang); | 4078 | n_str = xs_dict_get(user->lang, str); |
| 4081 | 4079 | ||
| 4082 | if (xs_is_dict(strs)) { | 4080 | if (xs_is_null(n_str) || *n_str == '\0') |
| 4083 | const char *n_str = xs_dict_get(strs, str); | 4081 | n_str = str; |
| 4084 | |||
| 4085 | if (xs_is_string(n_str)) | ||
| 4086 | str = n_str; | ||
| 4087 | } | ||
| 4088 | } | ||
| 4089 | } | 4082 | } |
| 4090 | 4083 | ||
| 4091 | return str; | 4084 | return n_str; |
| 4092 | } | 4085 | } |