commit 1554a20
default
·
2025-02-15 05:35:47 +0000 UTC
parent 91d2beb
The interface language preference can now be set.
M
data.c
+1,
-0
1@@ -151,6 +151,7 @@ int srv_open(const char *basedir, int auto_upgrade)
2
3 /* languages */
4 srv_langs = xs_dict_new();
5+ srv_langs = xs_dict_set(srv_langs, "en", xs_stock(XSTYPE_NULL));
6
7 xs *l_dir = xs_fmt("%s/lang/", srv_basedir);
8 mkdirx(l_dir);
M
html.c
+29,
-0
1@@ -1243,6 +1243,28 @@ xs_html *html_top_controls(snac *user)
2 else
3 metadata = xs_str_new(NULL);
4
5+ /* ui language */
6+ xs_html *lang_select = xs_html_tag("select",
7+ xs_html_attr("name", "web_ui_lang"));
8+
9+ const char *u_lang = xs_dict_get_def(user->config, "lang", "en");
10+ const char *lang;
11+ const xs_dict *langs;
12+
13+ xs_dict_foreach(srv_langs, lang, langs) {
14+ if (strcmp(u_lang, lang) == 0)
15+ xs_html_add(lang_select,
16+ xs_html_tag("option",
17+ xs_html_text(lang),
18+ xs_html_attr("value", lang),
19+ xs_html_attr("selected", "selected")));
20+ else
21+ xs_html_add(lang_select,
22+ xs_html_tag("option",
23+ xs_html_text(lang),
24+ xs_html_attr("value", lang)));
25+ }
26+
27 xs *user_setup_action = xs_fmt("%s/admin/user-setup", user->actor);
28
29 xs_html_add(top_controls,
30@@ -1433,6 +1455,11 @@ xs_html *html_top_controls(snac *user)
31 "/example.com/my-blog\nGPG Key=1FA54\n..."),
32 xs_html_text(metadata))),
33
34+ xs_html_tag("p",
35+ xs_html_text(L("Web interface language:")),
36+ xs_html_sctag("br", NULL),
37+ lang_select),
38+
39 xs_html_tag("p",
40 xs_html_text(L("New password:")),
41 xs_html_sctag("br", NULL),
42@@ -4505,6 +4532,8 @@ int html_post_handler(const xs_dict *req, const char *q_path,
43 snac.config = xs_dict_set(snac.config, "show_contact_metrics", xs_stock(XSTYPE_TRUE));
44 else
45 snac.config = xs_dict_set(snac.config, "show_contact_metrics", xs_stock(XSTYPE_FALSE));
46+ if ((v = xs_dict_get(p_vars, "web_ui_lang")) != NULL)
47+ snac.config = xs_dict_set(snac.config, "lang", v);
48
49 snac.config = xs_dict_set(snac.config, "latitude", xs_dict_get_def(p_vars, "latitude", ""));
50 snac.config = xs_dict_set(snac.config, "longitude", xs_dict_get_def(p_vars, "longitude", ""));