commit bfd071c

byte  ·  2026-01-24 20:33:30 +0000 UTC
parents d413752, c6b411a
Merge pull request 'master' (#7) from grunfink/snac2:master into main

Reviewed-on: https://codeberg.org/byte/snac2/pulls/7
65 files changed,  +5223, -3316
M data.c
M html.c
M http.c
M main.c
M rss.c
M snac.c
M snac.h
M xs.h
+1, -1
1@@ -37,7 +37,7 @@
2 ### Supported activities and objects
3 
4 - **Inbound**: `Follow`, `Accept`, `Create`, `Update`, `Delete`, `Announce`, `Like`, `EmojiReact`, `Undo` (for Follow/Like/Announce), and `Move` covering `Note`, `Question`, `Page`, `Article`, `Event`, and `Video`.
5-- **Outbound**: the same set, except for `EmojiReact` (normalised into `Like` internally) and `Create` currently emits `Note` and `Question` objects.
6+- **Outbound**: the same set. `Create` currently emits `Note` and `Question` objects.
7 - Ordered collections: outboxes present the latest entries; follower/following collections hide membership by default.
8 
9 ### Delivery and moderation
+1, -1
1@@ -1,6 +1,6 @@
2 MIT License
3 
4-Copyright (c) 2022 - 2025 grunfink et al. (Fediverse: @grunfink@comam.es)
5+Copyright (c) 2022 - 2026 grunfink et al. (Fediverse: @grunfink@comam.es)
6 
7 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
8 
+4, -4
 1@@ -46,7 +46,7 @@ update-po:
 2 		xgettext --omit-header -j -o $$a --language=C --keyword=L --from-code=utf-8 *.c ; \
 3 	done
 4 
 5-activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \
 6+activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_url.h xs_mime.h \
 7  xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \
 8  xs_webmention.h xs_http.h xs_http_codes.h snac.h
 9 data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \
10@@ -68,16 +68,16 @@ mastoapi.o: mastoapi.c xs.h xs_hex.h xs_openssl.h xs_json.h xs_io.h \
11  xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \
12  xs_unicode.h xs_http.h xs_http_codes.h snac.h
13 rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \
14- xs_openssl.h xs_json.h xs_http.h xs_http_codes.h snac.h
15+ xs_openssl.h xs_json.h xs_http.h xs_http_codes.h xs_unicode.h snac.h
16 sandbox.o: sandbox.c xs.h snac.h
17 snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \
18  xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \
19  xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \
20  xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \
21- xs_webmention.h snac.h
22+ xs_webmention.h xs_list_tools.h snac.h
23 upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
24 utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \
25  xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \
26- snac.h
27+ xs_list_tools.h xs_set.h snac.h
28 webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \
29  xs_http_codes.h snac.h
+4, -4
 1@@ -35,7 +35,7 @@ uninstall:
 2 	rm $(PREFIX_MAN)/man5/snac.5
 3 	rm $(PREFIX_MAN)/man8/snac.8
 4 
 5-activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \
 6+activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_url.h xs_mime.h \
 7  xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \
 8  xs_webmention.h xs_http.h xs_http_codes.h snac.h
 9 data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \
10@@ -57,16 +57,16 @@ mastoapi.o: mastoapi.c xs.h xs_hex.h xs_openssl.h xs_json.h xs_io.h \
11  xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \
12  xs_unicode.h xs_http.h xs_http_codes.h snac.h
13 rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \
14- xs_openssl.h xs_json.h xs_http.h xs_http_codes.h snac.h
15+ xs_openssl.h xs_json.h xs_http.h xs_http_codes.h xs_unicode.h snac.h
16 sandbox.o: sandbox.c xs.h snac.h
17 snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \
18  xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \
19  xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \
20  xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \
21- xs_webmention.h snac.h
22+ xs_webmention.h xs_list_tools.h snac.h
23 upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
24 utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \
25  xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \
26- snac.h
27+ xs_list_tools.h xs_set.h snac.h
28 webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \
29  xs_http_codes.h snac.h
+51, -1
 1@@ -1,13 +1,63 @@
 2 # Release Notes
 3 
 4-## UNRELEASED
 5+## 2.89
 6+
 7+Fixed crash in pronouns processing (contributed by byte).
 8+
 9+Added counters in the people page (contributed by byte).
10+
11+New command-line option `refresh`, to refresh all follower and following `Actor` objects, marking them as broken if they are.
12+
13+## 2.88
14+
15+If `disable_emojireact` is set to `true` in `server.json`, EmojiReacts (incoming and outgoing) are totally disabled.
16+
17+New command-line option `top_ten`, that returns the top ten most popular posts by a user (ordered by the sum of likes and boosts) (contributed by aov).
18+
19+Added a new set of per-user muted words; if a post contains any of them, it's hidden behind a dropdown (contributed by byte).
20+
21+If an account has a metadata named `pronouns`, it's shown by the name (contributed by violette).
22+
23+Mastodon API: children of a post are returned recursively, not just the first level (contributed by violette).
24+
25+Implemented optional metadata stripping for images and videos using external tools (contributed by Stefano Marinelli).
26+
27+## 2.87
28+
29+Hide EmojiReacts from muted actors and blocked instances.
30+
31+## 2.86
32+
33+Truncate RSS titles at UTF-8 character boundaries (contributed by lxo).
34+
35+Link contacts to single-user people pages. Also, user's posts are shown (contributed by lxo).
36+
37+Added emoji reactions (contributed by violette).
38+
39+Mastodon API: Fix for some client notifications (contributed by violette), fix for a status visibility error (contributed by fruye).
40+
41+If the query variable `terse` of a public post page is set to anything, no header is shown.
42+
43+Fixed search failures when the query string has any leading blank.
44+
45+## 2.85
46 
47 Quoted posts are now shown.
48 
49+Added metadata to remote users in the people page (contributed by dandelions).
50+
51 Fixed memory leak (contributed by dandelions).
52 
53+Fixed user matching (contributed by rakoo).
54+
55+Rendering visibility conditionally, with lesser reach if needed (contributed by byte).
56+
57+Added a button next to a follow notification to follow back.
58+
59 Fixed typo in man page (contributed by spky).
60 
61+Updated Czech and German translations (contributed by pmjv and zen).
62+
63 ## 2.84
64 
65 Implemented more scopes to match other ActivityPub implementations (public, unlisted, followers-only and direct message) (contributed by byte).
+8, -8
 1@@ -6,10 +6,6 @@ It seems that Microsoft is planning to laminate Basic HTTP Auth, so make a plan,
 2 
 3 Investigate the problem with boosts inside the same instance (see https://codeberg.org/grunfink/snac2/issues/214).
 4 
 5-Editing / Updating a post does not index newly added hashtags.
 6-
 7-Unfollowing guppe groups seems to work (http status of 200), but messages continue to arrive as if it didn't.
 8-
 9 Important: deleting a follower should do more that just delete the object, see https://codeberg.org/grunfink/snac2/issues/43#issuecomment-956721
10 
11 ## Wishlist
12@@ -32,10 +28,6 @@ Track "FEP-ef61: Portable Objects" https://codeberg.org/fediverse/fep/src/branch
13 
14 Integrate "Added handling for International Domain Names" PR https://codeberg.org/grunfink/snac2/pulls/104
15 
16-Do something about Akkoma and Misskey's quoted replies (they use the `quoteUrl` field instead of `inReplyTo`).
17-
18-Take a look at crashes in the brittle Mastodon official app (crashes when hitting the reply button, crashes or 'ownVotes is null' errors when trying to show polls).
19-
20 The 'history' pages are just monthly HTML snapshots of the local timeline. This is ok and cheap and easy, but is problematic if you e.g. intentionally delete a post because it will remain there in the history forever. If you activate local timeline purging, purged entries will remain in the history as 'ghosts', which may or may not be what the user wants.
21 
22 ## Closed
23@@ -381,3 +373,11 @@ Add command-line tools for creating and manipulating lists (2025-04-18T10:04:41+
24 Do a [Webmention](https://www.w3.org/TR/webmention/) to every link written in a post (2025-05-04T11:16:21+0200).
25 
26 The local purge should generate `Delete` activities for local posts (2025-07-25T18:55:16+0200).
27+
28+Unfollowing guppe groups seems to work (http status of 200), but messages continue to arrive as if it didn't. (No longer relevant, as guppe seems to not exist anymore) (2025-12-09T05:31:56+0100).
29+
30+Do something about Akkoma and Misskey's quoted replies (they use the `quoteUrl` field instead of `inReplyTo`) (2025-12-09T05:31:56+0100).
31+
32+Take a look at crashes in the brittle Mastodon official app (crashes when hitting the reply button, crashes or 'ownVotes is null' errors when trying to show polls) (2025-12-09T05:31:56+0100).
33+
34+Editing / Updating a post does not index newly added hashtags (2025-12-19T15:29:38+0100).
+195, -14
  1@@ -1,9 +1,10 @@
  2 /* snac - A simple, minimalistic ActivityPub instance */
  3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
  4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  5 
  6 #include "xs.h"
  7 #include "xs_json.h"
  8 #include "xs_curl.h"
  9+#include "xs_url.h"
 10 #include "xs_mime.h"
 11 #include "xs_openssl.h"
 12 #include "xs_regex.h"
 13@@ -779,7 +780,7 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
 14             object_get(object, &obj);
 15 
 16         /* if it's about one of our posts, accept it */
 17-        if (xs_startswith(object, snac->actor))
 18+        if (is_msg_mine(snac, object))
 19             return 2;
 20 
 21         /* blocked by hashtag? */
 22@@ -1242,7 +1243,7 @@ void notify(snac *snac, const char *type, const char *utype, const char *actor,
 23 
 24     if (xs_match(type, "Like|Announce|EmojiReact")) {
 25         /* if it's not an admiration about something by us, done */
 26-        if (xs_is_null(objid) || !xs_startswith(objid, snac->actor))
 27+        if (xs_is_null(objid) || !is_msg_mine(snac, objid))
 28             return;
 29 
 30         /* if it's an announce by our own relay, done */
 31@@ -1267,7 +1268,7 @@ void notify(snac *snac, const char *type, const char *utype, const char *actor,
 32             return;
 33 
 34         /* if it's not ours and we didn't vote, discard */
 35-        if (!xs_startswith(poll_id, snac->actor) && !was_question_voted(snac, poll_id))
 36+        if (!is_msg_mine(snac, poll_id) && !was_question_voted(snac, poll_id))
 37             return;
 38     }
 39 
 40@@ -1530,11 +1531,24 @@ xs_dict *msg_update(snac *snac, const xs_dict *object)
 41 
 42 
 43 xs_dict *msg_admiration(snac *snac, const char *object, const char *type)
 44-/* creates a Like or Announce message */
 45+/* creates a Like, Announce or EmojiReact message */
 46 {
 47     xs *a_msg    = NULL;
 48     xs_dict *msg = NULL;
 49     xs *wrk      = NULL;
 50+    char t       = 0;
 51+
 52+    switch (*type) {
 53+        case 'L':
 54+            t = 'l';
 55+            break;
 56+        case 'A':
 57+            t = 'a';
 58+            break;
 59+        case 'E':
 60+            t = 'e';
 61+            break;
 62+    }
 63 
 64     /* call the object */
 65     timeline_request(snac, &object, &wrk, 0);
 66@@ -1542,7 +1556,7 @@ xs_dict *msg_admiration(snac *snac, const char *object, const char *type)
 67     if (valid_status(object_get(object, &a_msg))) {
 68         xs *rcpts = xs_list_new();
 69         xs *o_md5 = xs_md5_hex(object, strlen(object));
 70-        xs *id    = xs_fmt("%s/%s/%s", snac->actor, *type == 'L' ? "l" : "a", o_md5);
 71+        xs *id    = xs_fmt("%s/%c/%s", snac->actor, t, o_md5);
 72 
 73         msg = msg_base(snac, type, id, snac->actor, "@now", object);
 74 
 75@@ -1586,6 +1600,138 @@ xs_dict *msg_repulsion(snac *user, const char *id, const char *type)
 76     return msg;
 77 }
 78 
 79+xs_dict *msg_emoji_init(snac *snac, const char *mid, const char *eid_o)
 80+/* creates an emoji reaction from a local user */
 81+{
 82+    xs_dict *n_msg = msg_admiration(snac, mid, "EmojiReact");
 83+
 84+    xs *eid = xs_strip_chars_i(xs_dup(eid_o), ":");
 85+    xs *content = NULL;
 86+    xs *tag = xs_list_new();
 87+    xs *dict = xs_dict_new();
 88+    xs *icon = xs_dict_new();
 89+    xs *accounts = xs_list_new();
 90+    xs *emjs = emojis_rm_categories();
 91+
 92+    /* may be a default emoji */
 93+    xs *eidd = xs_dup(eid);
 94+    const char *eidda = eid;
 95+
 96+    if (xs_is_emoji(xs_utf8_dec(&eidda)))
 97+        content = xs_dup(eid);
 98+
 99+    else if (*eid == '%') {
100+        content = xs_url_dec_emoji(xs_dup(eid));
101+        if (content == NULL) {
102+            return NULL;
103+        }
104+    }
105+    else {
106+        content = xs_fmt(":%s:", eid);
107+        const char *emo = xs_dict_get(emjs, content);
108+
109+        if (emo == NULL)
110+            return NULL;
111+
112+        if (xs_match(emo, "https://*|http://*")) { /* emoji is an URL to an image */
113+            icon = xs_dict_set(icon, "type", "Image");
114+            icon = xs_dict_set(icon, "url", emo);
115+            dict = xs_dict_set(dict, "icon", icon);
116+
117+            dict = xs_dict_set(dict, "id", emo);
118+            dict = xs_dict_set(dict, "name", content);
119+            dict = xs_dict_set(dict, "type", "Emoji");
120+            tag = xs_list_append(tag, dict);
121+        }
122+        else
123+        if (xs_startswith(emo, "&#")) {
124+            /* snac default emoji as an HTML entity: decode */
125+            content = xs_free(content);
126+
127+            xs *s1 = xs_strip_chars_i(xs_dup(emo), "&#");
128+            unsigned int cpoint = 0;
129+            sscanf(s1, "%u;", &cpoint);
130+
131+            if (cpoint)
132+                content = xs_utf8_cat(xs_str_new(NULL), cpoint);
133+            else
134+                content = xs_dup(emo);
135+        }
136+        else {
137+            /* use as it is and hope for the best */
138+            xs_free(content);
139+            content = xs_dup(emo);
140+        }
141+    }
142+
143+    accounts = xs_list_append(accounts, snac->actor);
144+
145+    n_msg = xs_dict_set(n_msg, "content", content);
146+    n_msg = xs_dict_set(n_msg, "accounts", accounts);
147+    n_msg = xs_dict_set(n_msg, "attributedTo", xs_list_get(xs_dict_get(n_msg, "to"), 1));
148+    n_msg = xs_dict_set(n_msg, "accountId", snac->uid);
149+    n_msg = xs_dict_set(n_msg, "tag", tag);
150+
151+    int ret = timeline_admire(snac, xs_dict_get(n_msg, "object"), snac->actor, 1, n_msg);
152+    if (ret == 200 || ret == 201) {
153+        enqueue_message(snac, n_msg);
154+        return n_msg;
155+    }
156+
157+    return NULL;
158+}
159+
160+xs_dict *msg_emoji_unreact(snac *user, const char *mid, const char *eid)
161+/* creates an Undo + emoji reaction message */
162+{
163+    xs *a_msg    = NULL;
164+    xs_dict *msg = NULL;
165+
166+    if (valid_status(object_get(mid, &a_msg))) {
167+        /* create a clone of the original admiration message */
168+        xs *object = msg_admiration(user, mid, "EmojiReact");
169+
170+        /* delete the published date */
171+        object = xs_dict_del(object, "published");
172+
173+        /* create an undo message for this object */
174+        msg = msg_undo(user, object);
175+
176+        /* copy the 'to' field */
177+        msg = xs_dict_set(msg, "to", xs_dict_get(object, "to"));
178+    }
179+
180+    xs *emotes = object_get_emoji_reacts(mid);
181+    const char *v;
182+    int c = 0;
183+
184+    /* may be a default emoji */
185+    if (strlen(eid) == 12 && *eid == '%') {
186+        eid = xs_url_dec(eid);
187+        if (eid == NULL) {
188+            return NULL;
189+        }
190+    }
191+
192+    /* lets get all emotes for this msg, and compare it to our content */
193+    while (xs_list_next(emotes, &v, &c)) {
194+        xs_dict *e = NULL;
195+        if (valid_status(object_get_by_md5(v, &e))) {
196+            const char *content = xs_dict_get(e, "content");
197+            const char *id = xs_dict_get(e, "id");
198+            const char *actor = xs_dict_get(e, "actor");
199+            /* maybe formated as :{emoteName}: too */
200+            if (xs_str_in(eid, content) != -1)
201+                if (strcmp(user->actor, actor) == 0) {
202+                    object_rm_emoji_react(mid, id);
203+                    return msg;
204+                }
205+        }
206+    }
207+
208+    return NULL;
209+}
210+
211 
212 xs_dict *msg_actor_place(snac *user, const char *label)
213 /* creates a Place object, if the user has a location defined */
214@@ -2432,6 +2578,11 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
215         return -1;
216     }
217 
218+    if (strcmp(type, "EmojiReact") == 0 && xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) {
219+        srv_log(xs_fmt("Dropping EmojiReact from %s due to admin configuration", actor));
220+        return -1;
221+    }
222+
223     const char *object, *utype;
224 
225     object = xs_dict_get(msg, "object");
226@@ -2605,6 +2756,16 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
227     else
228     if (strcmp(type, "Undo") == 0) { /** **/
229         const char *id = xs_dict_get(object, "object");
230+        const char *content = xs_dict_get(object, "content");
231+        /* misskey sends emojis as like + tag */
232+        xs *cd = xs_dup(content);
233+        const char *sna = cd;
234+        const xs_dict *tag = xs_dict_get(object, "tag");
235+        unsigned int utf = xs_utf8_dec((const char **)&sna);
236+
237+        int isEmoji = 0;
238+        if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
239+            isEmoji = 1;
240 
241         if (xs_type(object) != XSTYPE_DICT) {
242             snac_debug(snac, 1, xs_fmt("undo: overriding utype %s | %s | %s",
243@@ -2633,8 +2794,19 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
244             else
245                 snac_log(snac, xs_fmt("error deleting follower %s", actor));
246         }
247+        /* *key emojis are like w/ Emoji tag */
248+        else
249+        if ((isEmoji || strcmp(utype, "EmojiReact") == 0) &&
250+                (content && strcmp(content, "♥") != 0)) {
251+            const xs_val *mid = xs_dict_get(object, "id");
252+            int status = object_rm_emoji_react((char *)id, mid);
253+            /* ensure *key notifications type */
254+            utype = "EmojiReact";
255+
256+            snac_log(snac, xs_fmt("Undo 'EmojiReact' for %s %d", id, status));
257+        }
258         else
259-        if (strcmp(utype, "Like") == 0 || strcmp(utype, "EmojiReact") == 0) { /** **/
260+        if (strcmp(utype, "Like") == 0) { /** **/
261             int status = object_unadmire(id, actor, 1);
262 
263             snac_log(snac, xs_fmt("Undo '%s' for %s %d", utype, id, status));
264@@ -2771,13 +2943,22 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
265     }
266     else
267     if (strcmp(type, "Like") == 0 || strcmp(type, "EmojiReact") == 0) { /** **/
268+        /* misskey sends emojis as Like + tag.
269+         * It is easier to handle them both at the same time. */
270+        const char *sna = xs_dict_get(msg, "content");
271+        const xs_dict *tag = xs_dict_get(msg, "tag");
272+        unsigned int utf = xs_utf8_dec((const char **)&sna);
273+
274+        if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
275+            type = "EmojiReact";
276+
277         if (xs_type(object) == XSTYPE_DICT)
278             object = xs_dict_get(object, "id");
279 
280         if (xs_is_null(object))
281             snac_log(snac, xs_fmt("malformed message: no 'id' field"));
282         else
283-        if (timeline_admire(snac, object, actor, 1) == HTTP_STATUS_CREATED)
284+        if (timeline_admire(snac, object, actor, 1, msg) == HTTP_STATUS_CREATED)
285             snac_log(snac, xs_fmt("new '%s' %s %s", type, actor, object));
286         else
287             snac_log(snac, xs_fmt("repeated '%s' from %s to %s", type, actor, object));
288@@ -2792,10 +2973,10 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
289         if (xs_is_null(object))
290             snac_log(snac, xs_fmt("malformed message: no 'id' field"));
291         else
292-        if (is_muted(snac, actor) && !xs_startswith(object, snac->actor))
293+        if (is_muted(snac, actor) && !is_msg_mine(snac, object))
294             snac_log(snac, xs_fmt("dropped 'Announce' from muted actor %s", actor));
295         else
296-        if (is_limited(snac, actor) && !xs_startswith(object, snac->actor))
297+        if (is_limited(snac, actor) && !is_msg_mine(snac, object))
298             snac_log(snac, xs_fmt("dropped 'Announce' from limited actor %s", actor));
299         else {
300             xs *a_msg = NULL;
301@@ -2818,7 +2999,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
302                         xs *this_relay = xs_fmt("%s/relay", srv_baseurl);
303 
304                         if (strcmp(actor, this_relay) != 0) {
305-                            if (valid_status(timeline_admire(snac, object, actor, 0)))
306+                            if (valid_status(timeline_admire(snac, object, actor, 0, a_msg)))
307                                 snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object));
308                             else
309                                 snac_log(snac, xs_fmt("repeated 'Announce' from %s to %s",
310@@ -2903,7 +3084,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
311             snac_log(snac, xs_fmt("malformed message: no 'id' field"));
312         else
313         if (object_here(object)) {
314-            if (xs_startswith(object, srv_baseurl) && !xs_startswith(object, actor))
315+            if (xs_startswith(object, srv_baseurl) && !is_msg_mine(snac, object))
316                 snac_log(snac, xs_fmt("ignored incorrect 'Delete' %s %s", actor, object));
317             else {
318                 timeline_del(snac, object);
319@@ -3214,7 +3395,7 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
320                 actor_add(actor, actor_o);
321             }
322             else {
323-                if (status == HTTP_STATUS_GONE) {
324+                if (status == HTTP_STATUS_GONE || status == HTTP_STATUS_NOT_FOUND) {
325                     actor_failure(actor, 1);
326                     snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status));
327                 }
328@@ -3716,7 +3897,7 @@ int activitypub_get_handler(const xs_dict *req, const char *q_path,
329                 const char *type = xs_dict_get(i, "type");
330                 const char *id   = xs_dict_get(i, "id");
331 
332-                if (type && id && strcmp(type, "Note") == 0 && xs_startswith(id, snac.actor)) {
333+                if (type && id && strcmp(type, "Note") == 0 && is_msg_mine(&snac, id)) {
334                     if (is_msg_public(i)) {
335                         xs *c_msg = msg_create(&snac, i);
336                         list = xs_list_append(list, c_msg);
+0, -0
M data.c
+147, -15
  1@@ -1,5 +1,5 @@
  2 /* snac - A simple, minimalistic ActivityPub instance */
  3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
  4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  5 
  6 #include "xs.h"
  7 #include "xs_hex.h"
  8@@ -89,8 +89,15 @@ int srv_open(const char *basedir, int auto_upgrade)
  9                 else {
 10                     if (xs_number_get(xs_dict_get(srv_config, "layout")) < disk_layout)
 11                         error = xs_fmt("ERROR: disk layout changed - execute 'snac upgrade' first");
 12-                    else
 13-                        ret = 1;
 14+                    else {
 15+                        if (!check_strip_tool()) {
 16+                            const char *mp = xs_dict_get(srv_config, "mogrify_path");
 17+                            if (mp == NULL) mp = "mogrify";
 18+                            error = xs_fmt("ERROR: strip_exif enabled but '%s' not found or not working (set 'mogrify_path' in server.json)", mp);
 19+                        }
 20+                        else
 21+                            ret = 1;
 22+                    }
 23                 }
 24             }
 25 
 26@@ -1043,6 +1050,14 @@ xs_list *object_children(const char *id)
 27 }
 28 
 29 
 30+xs_list *object_get_emoji_reacts(const char *id)
 31+/* returns the list of an object's emoji reactions */
 32+{
 33+    xs *fn = _object_index_fn(id, "_e.idx");
 34+    return index_list(fn, XS_ALL);
 35+}
 36+
 37+
 38 xs_list *object_likes(const char *id)
 39 {
 40     xs *fn = _object_index_fn(id, "_l.idx");
 41@@ -1086,12 +1101,26 @@ int object_admire(const char *id, const char *actor, int like)
 42 
 43 
 44 int object_unadmire(const char *id, const char *actor, int like)
 45-/* actor no longer likes or announces this object */
 46+/* actor retrives their likes, announces or emojis this object */
 47 {
 48+    switch (like) {
 49+    case 0:
 50+        like = 'a';
 51+        break;
 52+    case 1:
 53+        like = 'l';
 54+        break;
 55+    case 2:
 56+        like = 'e';
 57+        break;
 58+    }
 59     int status;
 60     xs *fn = _object_fn(id);
 61 
 62-    fn = xs_replace_i(fn, ".json", like ? "_l.idx" : "_a.idx");
 63+    char sfx[7] = "_x.idx";
 64+    sfx[1] = like;
 65+
 66+    fn = xs_replace_i(fn, ".json", sfx);
 67 
 68     status = index_del(fn, actor);
 69 
 70@@ -1099,7 +1128,46 @@ int object_unadmire(const char *id, const char *actor, int like)
 71         index_gc(fn);
 72 
 73     srv_debug(0,
 74-        xs_fmt("object_unadmire (%s) %s %s %d", like ? "Like" : "Announce", actor, fn, status));
 75+        xs_fmt("object_unadmire (%s) %s %s %d", like >= 'e' ?
 76+            (like == 'l' ? "Like" : "EmojiReact") : "Announce" , actor, fn, status));
 77+
 78+    return status;
 79+}
 80+
 81+int object_emoji_react(const char *mid, const char *eid)
 82+/* actor reacts w/ an emoji */
 83+{
 84+    int status = HTTP_STATUS_OK;
 85+    xs *fn     = _object_fn(mid);
 86+
 87+    fn = xs_replace_i(fn, ".json", "_e.idx");
 88+
 89+    if (!index_in(fn, eid)) {
 90+        status = index_add(fn, eid);
 91+
 92+        srv_debug(1, xs_fmt("object_emoji_react (%s) added %s to %s", "EmojiReact", eid, fn));
 93+    }
 94+
 95+    return status;
 96+}
 97+
 98+
 99+int object_rm_emoji_react(const char *mid, const char *eid)
100+/* actor retrives their emoji reaction */
101+{
102+    int status;
103+    xs *fn = _object_fn(mid);
104+
105+    fn = xs_replace_i(fn, ".json", "_e.idx");
106+
107+    status = index_del(fn, eid);
108+    object_del(eid);
109+
110+    if (valid_status(status))
111+        index_gc(fn);
112+
113+    srv_debug(0,
114+        xs_fmt("object_unadmire (EmojiReact) %s %s %d", eid, fn, status));
115 
116     return status;
117 }
118@@ -1358,6 +1426,20 @@ int pending_count(snac *user)
119 }
120 
121 
122+int is_msg_mine(snac *user, const char *id)
123+/* returns true if a post id is by the given user */
124+{
125+    int ret = 0;
126+
127+    if (xs_is_string(id)) {
128+        xs *s1 = xs_fmt("%s/", user->actor);
129+        ret = xs_startswith(id, s1);
130+    }
131+
132+    return ret;
133+}
134+
135+
136 /** timeline **/
137 
138 double timeline_mtime(snac *snac)
139@@ -1453,7 +1535,7 @@ void timeline_update_indexes(snac *snac, const char *id)
140 {
141     object_user_cache_add(snac, id, "private");
142 
143-    if (xs_startswith(id, snac->actor)) {
144+    if (is_msg_mine(snac, id)) {
145         xs *msg = NULL;
146 
147         if (valid_status(object_get(id, &msg))) {
148@@ -1492,19 +1574,48 @@ int timeline_add(snac *snac, const char *id, const xs_dict *o_msg)
149 }
150 
151 
152-int timeline_admire(snac *snac, const char *id, const char *admirer, int like)
153-/* updates a timeline entry with a new admiration */
154+int timeline_emoji_react(const char *act, const char *id, const xs_dict *msg_o)
155+/* adds an emoji reaction to a message */
156 {
157+    xs *msg = xs_dup(msg_o);
158+    msg = xs_dict_append(msg, "attributedTo", act);
159+    msg = xs_dict_set(msg, "type", "EmojiReact");
160+    const char *emote_id = xs_dict_get(msg, "id");
161+
162+    int ret = object_add(emote_id, msg);
163+    if (ret == HTTP_STATUS_OK || ret == HTTP_STATUS_CREATED)
164+        ret = object_emoji_react(id, emote_id);
165+
166+    return ret;
167+}
168+
169+
170+int timeline_admire(snac *snac, const char *id,
171+                    const char *admirer, int like, const xs_dict *msg)
172+/* updates a timeline entry with a new admiration or emoji reaction */
173+{
174+    int ret;
175+    const char *content = xs_dict_get_path(msg, "content");
176+    const char *type = xs_dict_get_path(msg, "type");
177+
178     /* if we are admiring this, add to both timelines */
179     if (!like && strcmp(admirer, snac->actor) == 0) {
180         object_user_cache_add(snac, id, "public");
181         object_user_cache_add(snac, id, "private");
182     }
183 
184-    int ret = object_admire(id, admirer, like);
185+    /* use utf <3 as a like, as it is ugly */
186+    if (type && xs_match(type, "Like|EmojiReact|Emoji") &&
187+            content && strcmp(content, "❤") != 0) {
188+        ret = timeline_emoji_react(snac->actor, id, msg);
189+        snac_debug(snac, 1, xs_fmt("timeline_emoji_react %s", id));
190+    }
191 
192-    snac_debug(snac, 1, xs_fmt("timeline_admire (%s) %s %s",
193-            like ? "Like" : "Announce", id, admirer));
194+    else {
195+        ret = object_admire(id, admirer, like);
196+        snac_debug(snac, 1, xs_fmt("timeline_admire (%s) %s %s",
197+                like ? "Like" : "Announce", id, admirer));
198+    }
199 
200     return ret;
201 }
202@@ -1853,6 +1964,25 @@ xs_list *muted_list(snac *user)
203     return l;
204 }
205 
206+/** emojis react **/
207+
208+xs_str *emoji_reacted(snac *user, const char *id)
209+/* returns the emoji an user reacted to a message */
210+{
211+    xs *emojis = object_get_emoji_reacts(id);
212+    int c = 0;
213+    const char *v;
214+
215+    while (xs_list_next(emojis, &v, &c)) {
216+        xs *msg = NULL;
217+        if (object_get_by_md5(v, &msg)) {
218+            const xs_val *act = xs_dict_get(msg, "actor");
219+            if (act && strcmp(act, user->actor) == 0)
220+                return xs_dup(xs_dict_get(msg, "content"));
221+        }
222+    }
223+    return NULL;
224+}
225 
226 /** bookmarking **/
227 
228@@ -1913,7 +2043,7 @@ int pin(snac *user, const char *id)
229 {
230     int ret = -2;
231 
232-    if (xs_startswith(id, user->actor)) {
233+    if (is_msg_mine(user, id)) {
234         if (is_pinned(user, id))
235             ret = -3;
236         else
237@@ -2587,6 +2717,8 @@ void static_put(snac *snac, const char *id, const char *data, int size)
238     if (fn && (f = fopen(fn, "wb")) != NULL) {
239         fwrite(data, size, 1, f);
240         fclose(f);
241+
242+        strip_media(fn);
243     }
244 }
245 
246@@ -3513,7 +3645,7 @@ void enqueue_output(snac *snac, const xs_dict *msg,
247                     const xs_str *inbox, int retries, int p_status)
248 /* enqueues an output message to an inbox */
249 {
250-    if (xs_startswith(inbox, snac->actor)) {
251+    if (is_msg_mine(snac, inbox)) {
252         snac_debug(snac, 1, xs_str_new("refusing enqueue to myself"));
253         return;
254     }
255@@ -4041,7 +4173,7 @@ void delete_purged_posts(snac *user, int days)
256                 if (xs_is_dict(msg)) {
257                     const char *id = xs_dict_get(msg, "id");
258 
259-                    if (xs_is_string(id) && xs_startswith(id, user->actor)) {
260+                    if (xs_is_string(id) && is_msg_mine(user, id)) {
261                         xs *d_msg = msg_delete(user, id);
262 
263                         enqueue_message(user, d_msg);
+14, -1
 1@@ -110,6 +110,9 @@ URLs to RSS feeds of ActivityPub objects are also allowed
 2 .It Blocked hashtags...
 3 Enter here the list of hashtags you want to block, one
 4 per line, with or without the # symbol.
 5+.It Muted words...
 6+Enter here a list of words to be silenced. If a post includes
 7+any of this words, it's hidden behind a dropdown.
 8 .El
 9 .Pp
10 The user setup dialog allows some user information to be
11@@ -218,13 +221,20 @@ also private and cannot be liked nor boosted.
12 For each entry in the timeline, a set of reasonable actions
13 in the form of buttons will be shown. These can be:
14 .Bl -tag -offset indent
15-.It Reply
16+.It Reply...
17 Unveils a text area to write your intelligent and acute comment
18 to an uninformed fellow. This note is sent to the original
19 author as well as to your followers. The note can include
20 mentions in the @user@format; these people will also become
21 recipients of the message. If you reply to a boost or like,
22 you are really replying to the note, not to the admirer of it.
23+.It Emoji react...
24+Unveils a text area that allows a user to react with an emoji
25+by typing its identifier, that should match one of the emojis
26+defined in the
27+.Pa emojis.json
28+file. By now, only those emoji identifiers surrounded by colons
29+can be used.
30 .It Like
31 Click this if you admire this post. The poster and your
32 followers will be informed.
33@@ -405,6 +415,9 @@ Removes an existing list.
34 Adds an account (by its @name@host handle or actor URL) to a list.
35 .It Cm list_del Ar basedir Ar uid Ar name Ar actor_url
36 Deletes an actor (by its actor URL) from a list.
37+.It Cm top_ten Ar basedir Ar uid Op N
38+Returns the ids of the top ten (or top N) most popular posts (considering the
39+sum of likes and boosts).
40 .El
41 .Ss Migrating an account to/from Mastodon
42 See 
+17, -1
 1@@ -294,6 +294,22 @@ The URL to a favicon. If it's not set, the default one is used instead.
 2 The maximum number of days an instance is considered down after continuous failed
 3 outgoing messages (default: 15). Anyway, whenever any incoming activity from a
 4 failed instance is detected, this counter is reset for it.
 5+.It Ic vkey
 6+Public vapid key. Used for notification on some client.
 7+.It Ic disable_emojireact
 8+If set to true, all EmojiReact support (for input and output) is disabled.
 9+.It Ic strip_exif
10+If set to true, EXIF and other metadata will be stripped from uploaded images (jpg, png, webp, heic, avif, tiff, gif, bmp) and videos (mp4, m4v, mov, webm, mkv, avi). This requires the
11+.Nm mogrify
12+(from ImageMagick) and
13+.Nm ffmpeg
14+tools to be installed. If
15+.Nm snac
16+cannot find or execute these tools at startup, it will refuse to run.
17+.It Ic mogrify_path
18+Overrides the default "mogrify" command name or path. Use this if the tool is not in the system PATH or has a different name.
19+.It Ic ffmpeg_path
20+Overrides the default "ffmpeg" command name or path. Use this if the tool is not in the system PATH or has a different name.
21 .El
22 .Pp
23 You must restart the server to make effective these changes.
24@@ -405,7 +421,7 @@ objects, on input and output.
25 .It Vt EmojiReact
26 For
27 .Vt Note
28-objects, on input.
29+objects, on input and output.
30 .It Vt Announce
31 For
32 .Vt Note
+5, -1
 1@@ -32,8 +32,12 @@ blockquote { font-style: italic; }
 2 .snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px;
 3   margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; }
 4 .snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; }
 5-@media (prefers-color-scheme: dark) { 
 6+.snac-reaction { padding:5px; padding-left: 10px; padding-right: 10px; display: inline-flex; margin-right: 5px; font-family: inherit; font-size: medium; height: 2.5rem; vertical-align:middle; align-items:center;}
 7+.snac-reaction-image { max-width: 100%; max-height: 100%; }
 8+.snac-reaction-div { border-left: darkgray; border-left-style: solid; margin-bottom: .3em; padding-left: .3em; border-left-width: 2px; }
 9+@media (prefers-color-scheme: dark) {
10   body, input, textarea { background-color: #000; color: #fff; }
11   a { color: #7799dd }
12   a:visited { color: #aa99dd }
13 }
14+select { max-width: 40%; }
+23, -2
 1@@ -1,5 +1,5 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 5 
 6 #include "xs.h"
 7 #include "xs_regex.h"
 8@@ -79,6 +79,24 @@ xs_dict *emojis(void)
 9     return d;
10 }
11 
12+
13+xs_dict *emojis_rm_categories() {
14+    xs *emjs = emojis();
15+    char *res = xs_dict_new();
16+    const char *k, *v;
17+    xs_dict_foreach(emjs, k, v) {
18+        if (xs_type(v) == XSTYPE_DICT) {
19+            const char *v2;
20+            xs_dict_foreach(v, k, v2)
21+                res = xs_dict_append(res, k, v2);
22+        }
23+        else
24+            res = xs_dict_append(res, k, v);
25+    }
26+    return res;
27+}
28+
29+
30 /* Non-whitespace without trailing comma, period or closing paren */
31 #define NOSPACE "([^[:space:],.)]+|[,.)]+[^[:space:],.)])+"
32 
33@@ -405,7 +423,7 @@ xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag
34 
35     {
36         /* traditional emoticons */
37-        xs *d = emojis();
38+        xs *d = emojis_rm_categories();
39         int c = 0;
40         const char *k, *v;
41 
42@@ -459,6 +477,9 @@ xs_str *sanitize(const char *content)
43     char *p;
44     const char *v;
45 
46+    if (!content)
47+        return NULL;
48+
49     sl = xs_regex_split(content, "</?[^>]+>");
50 
51     p = sl;
M html.c
+693, -88
   1@@ -1,5 +1,5 @@
   2 /* snac - A simple, minimalistic ActivityPub instance */
   3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
   4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
   5 
   6 #include "xs.h"
   7 #include "xs_io.h"
   8@@ -16,6 +16,7 @@
   9 #include "xs_url.h"
  10 #include "xs_random.h"
  11 #include "xs_http.h"
  12+#include "xs_list_tools.h"
  13 
  14 #include "snac.h"
  15 
  16@@ -54,9 +55,10 @@ int login(snac *user, const xs_dict *headers)
  17     return logged_in;
  18 }
  19 
  20-
  21-xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *proxy)
  22-/* replaces all the :shortnames: with the emojis in tag */
  23+xs_str *_replace_shortnames(xs_str *s, const xs_list *tag, int ems,
  24+                            const char *proxy, const xs_list *cl, const char *act_o)
  25+/* replace but also adds a class list and an actor in its alt text.
  26+ * Used for emoji reactions */
  27 {
  28     if (!xs_is_null(tag)) {
  29         xs *tag_list = NULL;
  30@@ -69,11 +71,17 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
  31             tag_list = xs_dup(tag);
  32         }
  33 
  34-        xs *style = xs_fmt("height: %dem; width: %dem; vertical-align: middle;", ems, ems);
  35+        xs *style = xs_fmt("max-height: %dem; max-width: %dem;", ems, ems);
  36         xs *class = xs_fmt("snac-emoji snac-emoji-%d-em", ems);
  37+        if (cl) {
  38+            xs *l = xs_join(cl, " ");
  39+            class = xs_str_cat(class, " ", l);
  40+        }
  41 
  42-        const xs_dict *v;
  43         int c = 0;
  44+        const xs_val *v;
  45+
  46+        c = 0;
  47 
  48         xs_set rep_emoji;
  49         xs_set_init(&rep_emoji);
  50@@ -100,6 +108,8 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
  51                         if (!xs_is_string(mt))
  52                             mt = xs_mime_by_ext(u);
  53 
  54+                        xs *act = act_o ? xs_fmt("%s\n%s", n, act_o) : xs_fmt("%s", n);
  55+
  56                         if (strcmp(mt, "image/svg+xml") == 0 && !xs_is_true(xs_dict_get(srv_config, "enable_svg")))
  57                             s = xs_replace_i(s, n, "");
  58                         else {
  59@@ -108,8 +118,8 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
  60                             xs_html *img = xs_html_sctag("img",
  61                                 xs_html_attr("loading", "lazy"),
  62                                 xs_html_attr("src", url),
  63-                                xs_html_attr("alt", n),
  64-                                xs_html_attr("title", n),
  65+                                xs_html_attr("alt", act),
  66+                                xs_html_attr("title", act),
  67                                 xs_html_attr("class", class),
  68                                 xs_html_attr("style", style));
  69 
  70@@ -130,6 +140,13 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
  71 }
  72 
  73 
  74+xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *proxy)
  75+/* replaces all the :shortnames: with the emojis in tag */
  76+{
  77+    return _replace_shortnames(s, tag, ems, proxy, NULL, NULL);
  78+}
  79+
  80+
  81 xs_str *actor_name(xs_dict *actor, const char *proxy)
  82 /* gets the actor name */
  83 {
  84@@ -145,6 +162,34 @@ xs_str *actor_name(xs_dict *actor, const char *proxy)
  85 }
  86 
  87 
  88+xs_str *actor_pronouns(xs_dict *actor)
  89+/* gets the actor name */
  90+{
  91+    const xs_list *attachment;
  92+    const xs_dict *d;
  93+    const char *v;
  94+    const char *pronouns = "";
  95+    xs_str *ret;
  96+
  97+    if (xs_is_list((attachment = xs_dict_get(actor, "attachment")))) {
  98+        xs_list_foreach(attachment, d) {
  99+            xs *prop = xs_utf8_to_lower(xs_dict_get(d, "name"));
 100+            /* make sure that we are reading the correct metadata */
 101+            if (strlen(prop) == 8 && strcmp(prop, "pronouns") == 0) {
 102+                /* safeguard from NULL values */
 103+                v = xs_dict_get(d, "value");
 104+                pronouns = v ? v : pronouns;
 105+                break;
 106+            }
 107+        }
 108+    }
 109+
 110+    /* strip all HTML tags */
 111+    ret = xs_regex_replace(pronouns, "</?[^>]+>", "");
 112+    return ret;
 113+}
 114+
 115+
 116 xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy)
 117 /* needed when we have local text with no tags attached */
 118 {
 119@@ -178,6 +223,7 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
 120     int fwer = 0;
 121 
 122     xs *name = actor_name(actor, proxy);
 123+    xs *pronouns = actor_pronouns(actor);
 124 
 125     /* get the avatar */
 126     if ((v = xs_dict_get(actor, "icon")) != NULL) {
 127@@ -205,23 +251,35 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
 128            anchored link to the people page instead of the actor url */
 129         if (fwer || fwing) {
 130             xs *md5 = xs_md5_hex(actor_id, strlen(actor_id));
 131-            href = xs_fmt("%s/people#%s", user->actor, md5);
 132+            href = xs_fmt("%s/people/%s", user->actor, md5);
 133         }
 134     }
 135 
 136     if (href == NULL)
 137         href = xs_dup(actor_id);
 138 
 139+    xs_html *name_link = xs_html_tag("a",
 140+            xs_html_attr("href",    href),
 141+            xs_html_attr("class",   "p-author h-card snac-author"),
 142+            xs_html_raw(name)); /* name is already html-escaped */
 143+
 144+    if (*pronouns) {
 145+        xs_html_add(name_link,
 146+            xs_html_text(" ["),
 147+            xs_html_tag("span",
 148+                xs_html_attr("class",   "snac-pronouns"),
 149+                xs_html_attr("title",   "user's pronouns"),
 150+                xs_html_raw(pronouns)),
 151+            xs_html_text("]"));
 152+    }
 153+
 154     xs_html_add(actor_icon,
 155         xs_html_sctag("img",
 156             xs_html_attr("loading", "lazy"),
 157             xs_html_attr("class",   "snac-avatar"),
 158             xs_html_attr("src",     avatar),
 159             xs_html_attr("alt",     "[?]")),
 160-        xs_html_tag("a",
 161-            xs_html_attr("href",    href),
 162-            xs_html_attr("class",   "p-author h-card snac-author"),
 163-            xs_html_raw(name))); /* name is already html-escaped */
 164+        name_link);
 165 
 166     if (!xs_is_null(url)) {
 167         xs *md5 = xs_md5_hex(url, strlen(url));
 168@@ -234,6 +292,7 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
 169                 xs_html_text("»")));
 170     }
 171 
 172+
 173     if (strcmp(xs_dict_get(actor, "type"), "Service") == 0) {
 174         xs_html_add(actor_icon,
 175             xs_html_text(" "),
 176@@ -398,6 +457,83 @@ xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg,
 177     return actor_icon;
 178 }
 179 
 180+void html_note_render_visibility(snac* user, xs_html *form, const int scope)
 181+{
 182+    // scopes aren't sorted by value unfortunately, so simple math won't work to limit them. using map-like thing here
 183+    static const int public_scopes[5] = {SCOPE_PUBLIC, SCOPE_UNLISTED, SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
 184+    static const int unlisted_scopes[4] = {SCOPE_UNLISTED, SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
 185+    static const int followers_scopes[3] = {SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
 186+    static const int mentioned_scopes[2] = {SCOPE_MENTIONED, -1};
 187+    static const int * const scopes[4] = { public_scopes, mentioned_scopes, unlisted_scopes, followers_scopes};
 188+    static const char * const scopes_tags[4] = { "public", "mentioned", "unlisted", "followers"};
 189+    static const char * const scopes_names[4] = { "Public", "Direct Message", "Unlisted", "Followers-only"};
 190+
 191+    xs_html *paragraph = xs_html_tag("p", xs_html_text(L("Visibility: ")));
 192+    const int* to_render = scopes[scope];
 193+    for( int i = 0; to_render[i] != -1; i++ ){
 194+        const int scope_i = to_render[i];
 195+        const char* value = scopes_tags[scope_i];
 196+        const char* name = scopes_names[scope_i];
 197+        xs_html_add(paragraph,
 198+            xs_html_tag("label",
 199+                xs_html_sctag("input",
 200+                    xs_html_attr("type", "radio"),
 201+                    xs_html_attr("name", "visibility"),
 202+                    xs_html_attr("value", value),
 203+                    xs_html_attr(scope == scope_i ? "checked" : "", NULL)),
 204+                xs_html_text(" "),
 205+                xs_html_text(L(name)),
 206+                xs_html_text(" "))
 207+        );
 208+    }
 209+    xs_html_add(form, paragraph);
 210+}
 211+
 212+/* html_note but moddled for emoji's needs. here and not bellow, since the
 213+ * other one is already so complex. */
 214+xs_html *html_emoji(snac *user, const char *summary,
 215+                   const char *div_id, const char *form_id,
 216+                   const char* placeholder, const char *post_id,
 217+                   const char* eid)
 218+{
 219+    xs *action = xs_fmt("%s/admin/action", user->actor);
 220+
 221+    xs_html *form;
 222+    const int react = eid == NULL ? 0 : 1;
 223+
 224+    xs_html *note = xs_html_tag("div",
 225+        xs_html_tag("details",
 226+            xs_html_tag("summary",
 227+                xs_html_text(summary)),
 228+                xs_html_tag("p", NULL),
 229+                xs_html_tag("div",
 230+                    xs_html_attr("class", "snac-note"),
 231+                    xs_html_attr("id",    div_id),
 232+                    form = xs_html_tag("form",
 233+                        xs_html_attr("autocomplete", "off"),
 234+                        xs_html_attr("method",       "post"),
 235+                        xs_html_attr("action",       action),
 236+                        xs_html_attr("enctype",      "multipart/form-data"),
 237+                        xs_html_attr("id",           form_id),
 238+                        xs_html_sctag("input",
 239+                            xs_html_attr("type",     "hidden"),
 240+                            xs_html_attr("name",     "id"),
 241+                            xs_html_attr("value",    post_id)),
 242+                        xs_html_sctag("input",
 243+                            xs_html_attr("type",     react ? "hidden" : "text"),
 244+                            xs_html_attr("name",     "eid"),
 245+                            xs_html_attr(react ? "value" : "placeholder", react ? eid : placeholder)),
 246+                        xs_html_text(" "),
 247+                        xs_html_sctag("input",
 248+                            xs_html_attr("type",    "submit"),
 249+                            xs_html_attr("name",    "action"),
 250+                            xs_html_attr("eid",    "action"),
 251+                            xs_html_attr("value",   react ? L("EmojiUnreact") : L("EmojiReact"))),
 252+                        xs_html_text(" "),
 253+                    xs_html_tag("p", NULL)))));
 254+
 255+    return note;
 256+}
 257 
 258 xs_html *html_note(snac *user, const char *summary,
 259                    const char *div_id, const char *form_id,
 260@@ -455,46 +591,8 @@ xs_html *html_note(snac *user, const char *summary,
 261                 xs_html_attr("type",  "hidden"),
 262                 xs_html_attr("name",  "to"),
 263                 xs_html_attr("value", actor_id)));
 264-    else {
 265-        xs_html_add(form,
 266-            xs_html_tag("p",
 267-                xs_html_text(L("Visibility: ")),
 268-                xs_html_tag("label",
 269-                    xs_html_sctag("input",
 270-                        xs_html_attr("type", "radio"),
 271-                        xs_html_attr("name", "visibility"),
 272-                        xs_html_attr("value", "public"),
 273-                        xs_html_attr(scope == SCOPE_PUBLIC ? "checked" : "", NULL)),
 274-                    xs_html_text(" "),
 275-                    xs_html_text(L("Public"))),
 276-                xs_html_text(" "),
 277-                xs_html_tag("label",
 278-                    xs_html_sctag("input",
 279-                        xs_html_attr("type", "radio"),
 280-                        xs_html_attr("name", "visibility"),
 281-                        xs_html_attr("value", "unlisted"),
 282-                        xs_html_attr(scope == SCOPE_UNLISTED ? "checked" : "", NULL)),
 283-                    xs_html_text(" "),
 284-                    xs_html_text(L("Unlisted"))),
 285-                xs_html_text(" "),
 286-                xs_html_tag("label",
 287-                    xs_html_sctag("input",
 288-                        xs_html_attr("type", "radio"),
 289-                        xs_html_attr("name", "visibility"),
 290-                        xs_html_attr("value", "followers"),
 291-                        xs_html_attr(scope == SCOPE_FOLLOWERS ? "checked" : "", NULL)),
 292-                    xs_html_text(" "),
 293-                    xs_html_text(L("Followers-only"))),
 294-                xs_html_text(" "),
 295-                xs_html_tag("label",
 296-                    xs_html_sctag("input",
 297-                        xs_html_attr("type", "radio"),
 298-                        xs_html_attr("name", "visibility"),
 299-                        xs_html_attr("value", "mentioned"),
 300-                        xs_html_attr(scope == SCOPE_MENTIONED ? "checked" : "", NULL)),
 301-                    xs_html_text(" "),
 302-                    xs_html_text(L("Direct Message")))));
 303-    }
 304+    if (edit_id == NULL)
 305+        html_note_render_visibility(user, form, scope);
 306 
 307     if (redir)
 308         xs_html_add(form,
 309@@ -1363,6 +1461,28 @@ xs_html *html_top_controls(snac *user)
 310                     xs_html_attr("value",   L("Like"))),
 311                 xs_html_text(" "),
 312                 xs_html_text(L("(by URL)"))),
 313+            xs_html_tag("form",
 314+                xs_html_attr("autocomplete", "off"),
 315+                xs_html_attr("method",       "post"),
 316+                xs_html_attr("action",       ops_action),
 317+                xs_html_sctag("input",
 318+                    xs_html_attr("type",     "text"),
 319+                    xs_html_attr("name",     "eid"),
 320+                    xs_html_attr("required", "required"),
 321+                    xs_html_attr("placeholder", ":neocat:")),
 322+                xs_html_text(" "),
 323+                xs_html_sctag("input",
 324+                    xs_html_attr("type",     "text"),
 325+                    xs_html_attr("name",     "id"),
 326+                    xs_html_attr("required", "required"),
 327+                    xs_html_attr("placeholder", "https:/" "/fedi.example.com/bob/...")),
 328+                xs_html_text(" "),
 329+                xs_html_sctag("input",
 330+                    xs_html_attr("type",    "submit"),
 331+                    xs_html_attr("name",    "action"),
 332+                    xs_html_attr("value",   L("EmojiReact"))),
 333+                xs_html_text(" "),
 334+                xs_html_text(L("(by URL)"))),
 335             xs_html_tag("p", NULL)));
 336 
 337     /** user settings **/
 338@@ -1787,6 +1907,38 @@ xs_html *html_top_controls(snac *user)
 339                     xs_html_attr("class", "button"),
 340                     xs_html_attr("value", L("Update hashtags")))))));
 341 
 342+    xs *muted_words_action = xs_fmt("%s/admin/muted-words", user->actor);
 343+    xs *muted_words = xs_join(xs_dict_get_def(user->config,
 344+                        "muted_words", xs_stock(XSTYPE_LIST)), "\n");
 345+
 346+    xs_html_add(top_controls,
 347+        xs_html_tag("details",
 348+        xs_html_tag("summary",
 349+            xs_html_text(L("Muted words..."))),
 350+        xs_html_tag("p",
 351+            xs_html_text(L("One word per line, partial matches count"))),
 352+        xs_html_tag("div",
 353+            xs_html_attr("class", "snac-muted-words"),
 354+            xs_html_tag("form",
 355+                xs_html_attr("autocomplete", "off"),
 356+                xs_html_attr("method", "post"),
 357+                xs_html_attr("action", muted_words_action),
 358+                xs_html_attr("enctype", "multipart/form-data"),
 359+
 360+                xs_html_tag("textarea",
 361+                    xs_html_attr("name", "muted_words"),
 362+                    xs_html_attr("cols", "40"),
 363+                    xs_html_attr("rows", "4"),
 364+                    xs_html_attr("placeholder", "nascar\nsuperbowl\nFIFA"),
 365+                    xs_html_text(muted_words)),
 366+
 367+                xs_html_tag("br", NULL),
 368+
 369+                xs_html_sctag("input",
 370+                    xs_html_attr("type", "submit"),
 371+                    xs_html_attr("class", "button"),
 372+                    xs_html_attr("value", L("Update muted words")))))));
 373+
 374     return top_controls;
 375 }
 376 
 377@@ -1898,7 +2050,7 @@ xs_html *html_entry_controls(snac *user, const char *actor,
 378                 xs_html_attr("name",     "redir"),
 379                 xs_html_attr("value",    redir))));
 380 
 381-    if (!xs_startswith(id, user->actor)) {
 382+    if (!is_msg_mine(user, id)) {
 383         if (xs_list_in(likes, user->md5) == -1) {
 384             /* not already liked; add button */
 385             xs_html_add(form,
 386@@ -2026,6 +2178,22 @@ xs_html *html_entry_controls(snac *user, const char *actor,
 387             xs_html_tag("p", NULL));
 388     }
 389 
 390+    if (!xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) { /** emoji react **/
 391+        /* the post textarea */
 392+        xs *div_id  = xs_fmt("%s_reply", md5);
 393+        xs *form_id = xs_fmt("%s_reply_form", md5);
 394+        xs *e_react = emoji_reacted(user, id);
 395+
 396+        xs_html_add(controls, xs_html_tag("div",
 397+            xs_html_tag("p", NULL),
 398+            html_emoji(
 399+                user, L("Emoji react..."),
 400+                div_id, form_id,
 401+                ":neocat:", id,
 402+                e_react)),
 403+            xs_html_tag("p", NULL));
 404+    }
 405+
 406     { /** reply **/
 407         /* the post textarea */
 408         xs *ct      = build_mentions(user, msg);
 409@@ -2051,6 +2219,30 @@ xs_html *html_entry_controls(snac *user, const char *actor,
 410 }
 411 
 412 
 413+static const xs_str* words_in_content(const xs_list *words, const xs_val *content)
 414+/* returns a word that matches any of the words in content */
 415+{
 416+    if (!xs_is_list(words) || !xs_is_string(content)) {
 417+	    return NULL;
 418+    }
 419+    xs *c = xs_split(content, " ");
 420+    xs *sc = xs_list_sort(c, NULL);
 421+
 422+    const xs_str *wv;
 423+    const xs_str *cv;
 424+    xs_list_foreach(words, wv) {
 425+        xs_list_foreach(sc, cv) {
 426+            xs_tolower_i((xs_str*)cv);
 427+            if(xs_str_in(cv, wv) != -1){
 428+                return wv;
 429+            }
 430+        }
 431+    }
 432+
 433+    return NULL;
 434+}
 435+
 436+
 437 xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 438                    int level, const char *md5, int hide_children)
 439 {
 440@@ -2262,7 +2454,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 441                 }
 442 
 443                 if (!read_only && (fwers || fwing))
 444-                    href = xs_fmt("%s/people#%s", user->actor, p);
 445+                    href = xs_fmt("%s/people/%s", user->actor, p);
 446                 else
 447                     href = xs_dup(id);
 448 
 449@@ -2345,6 +2537,17 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 450                 xs_html_text(v),
 451                 xs_html_text(L(" [SENSITIVE CONTENT]"))));
 452     }
 453+    else
 454+    if (user &&
 455+        /* muted_words is all lowercase and sorted for performance */
 456+        (v = words_in_content(xs_dict_get(user->config, "muted_words"),
 457+                              xs_dict_get(msg, "content"))) != NULL) {
 458+        snac_debug(user, 1, xs_fmt("word %s muted by user preferences: %s", v, id));
 459+        snac_content = xs_html_tag("details",
 460+            xs_html_tag("summary",
 461+                xs_html_text(L("Muted: ")),
 462+                xs_html_text(v)));
 463+    }
 464     else {
 465         snac_content = xs_html_tag("div", NULL);
 466     }
 467@@ -2352,6 +2555,182 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 468     xs_html_add(snac_content_wrap,
 469         snac_content);
 470 
 471+    /* add all emoji reacts */
 472+    int is_emoji = 0;
 473+    if (!xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) {
 474+        int c = 0;
 475+        const xs_dict *k;
 476+        xs *ls = xs_list_new();
 477+        xs *sfrl = xs_dict_new();
 478+        xs *rl = object_get_emoji_reacts(id);
 479+
 480+        while (xs_list_next(rl, &v, &c)) {
 481+            xs *m = NULL;
 482+            if (valid_status(object_get_by_md5(v, &m))) {
 483+                const char *content = xs_dict_get(m, "content");
 484+                const char *actor = xs_dict_get(m, "actor");
 485+                const xs_list *contentl = xs_dict_get(sfrl, content);
 486+
 487+                if ((user && is_muted(user, actor)) || is_instance_blocked(actor))
 488+                    continue;
 489+
 490+                xs *actors = xs_list_new();
 491+                actors = xs_list_append(actors, actor);
 492+                char me = actor && user && strcmp(actor, user->actor) == 0;
 493+                int count = 1;
 494+
 495+                if (contentl) {
 496+                    count = atoi(xs_list_get(contentl, 0)) + 1;
 497+                    const xs_list *actorsc = xs_list_get(contentl, 1);
 498+                    if (strncmp(xs_list_get(contentl, 2), "1", 1) == 0)
 499+                        me = 1;
 500+
 501+                    if (xs_list_in(actorsc, actor) != -1) {
 502+                        xs_free(actors);
 503+                        actors = xs_dup(actorsc);
 504+                    }
 505+                    else
 506+                        actors = xs_list_cat(actors, actorsc);
 507+                }
 508+
 509+                xs *fl = xs_list_new();
 510+                xs *c1 = xs_fmt("%d", count);
 511+                xs *c2 = xs_fmt("%d", me);
 512+                fl = xs_list_append(fl, c1, actors, c2);
 513+                sfrl = xs_dict_append(sfrl, content, fl);
 514+            }
 515+        }
 516+
 517+        c = 0;
 518+
 519+        while (xs_list_next(rl, &k, &c)) {
 520+            xs *m = NULL;
 521+            if (valid_status(object_get_by_md5(k, &m))) {
 522+                const xs_dict *tag = xs_dict_get(m, "tag");
 523+                const xs_dict *ide = xs_dict_get(m, "id");
 524+
 525+                const char *content = xs_dict_get(m, "content");
 526+                const char *shortname;
 527+                shortname = xs_dict_get(m, "content");
 528+
 529+                const xs_list *items = xs_dict_get(sfrl, content);
 530+
 531+                if (!xs_is_null(items)) {
 532+                    const char *nb = xs_list_get(items, 0);
 533+                    const xs_list *actors = xs_list_get(items, 1);
 534+                    const char me = *xs_list_get(items, 2) == '1';
 535+
 536+                    is_emoji = 1;
 537+
 538+                    xs *al = xs_join(actors, ",\n\t");
 539+                    xs *act = atoi(nb) > 1 ?
 540+                        xs_fmt("%d different actors \n\t%s", atoi(nb), al) :
 541+                        xs_dup(xs_dict_get(m, "actor"));
 542+
 543+                    xs *class = xs_list_new();
 544+                    class = xs_list_append(class, "snac-reaction");
 545+
 546+                    xs_html *ret = NULL;
 547+                    if (tag && shortname) {
 548+                        xs *cl = xs_list_new();
 549+                        cl = xs_list_append(cl, "snac-reaction-image");
 550+                        xs *emoji = _replace_shortnames(xs_dup(shortname), tag, 2, proxy, cl, act);
 551+
 552+                        emoji = xs_strip_chars_i(emoji, ":");
 553+
 554+                        if (me)
 555+                            class = xs_list_append(class, "snac-reacted");
 556+
 557+                        xs *l1 = xs_join(class, " ");
 558+                        ret = xs_html_tag("button",
 559+                                xs_html_attr("type", "submit"),
 560+                                xs_html_attr("name", "action"),
 561+                                xs_html_attr("value", me ? L("EmojiReact") : L("EmojiUnreact")),
 562+                                xs_html_raw(emoji),
 563+                                xs_html_tag("span",
 564+                                    xs_html_raw(nb),
 565+                                    xs_html_attr("style", "padding-left: 5px;")),
 566+                                xs_html_attr("title", act),
 567+                                xs_html_attr("class", l1));
 568+
 569+                        if (!(ide && xs_startswith(ide, srv_baseurl)))
 570+                            xs_html_add(ret, xs_html_attr("disabled", "true"));
 571+                    }
 572+                    else if (shortname) {
 573+                        xs *sn = xs_dup(shortname);
 574+                        const char *sna = sn;
 575+                        unsigned int utf = xs_utf8_dec((const char **)&sna);
 576+
 577+                        if (xs_is_emoji(utf)) {
 578+                            const char *style = "font-size: large;";
 579+                            if (me)
 580+                                class = xs_list_append(class, "snac-reacted");
 581+                            xs *l1 = xs_join(class, " ");
 582+                            xs *s1 = xs_fmt("&#%d", utf);
 583+                            ret = xs_html_tag("button",
 584+                                    xs_html_attr("type", "submit"),
 585+                                    xs_html_attr("name", "action"),
 586+                                    xs_html_attr("value", me ? L("EmojiUnreact") : L("EmojiReact")),
 587+                                    xs_html_raw(s1),
 588+                                    xs_html_tag("span",
 589+                                        xs_html_raw(nb),
 590+                                        xs_html_attr("style", "font-size: initial; padding-left: 5px;")),
 591+                                    xs_html_attr("title", act),
 592+                                    xs_html_attr("class", l1),
 593+                                    xs_html_attr("style", style));
 594+                        }
 595+                    }
 596+                    if (ret) {
 597+                        xs *s1;
 598+                        if (user) {
 599+                            xs *action = xs_fmt("%s/admin/action", user->actor);
 600+                            xs *form_id = xs_fmt("%s_reply_form", md5);
 601+
 602+                            xs_html *form =
 603+                                xs_html_tag("form",
 604+                                xs_html_attr("autocomplete", "off"),
 605+                                xs_html_attr("method",       "post"),
 606+                                xs_html_attr("action",       action),
 607+                                xs_html_attr("enctype",      "multipart/form-data"),
 608+                                xs_html_attr("style",      "display: inline-flex;"
 609+                                    "vertical-align: middle;"),
 610+                                xs_html_attr("id",           form_id),
 611+                                xs_html_sctag("input",
 612+                                    xs_html_attr("type",  "hidden"),
 613+                                    xs_html_attr("name",  "id"),
 614+                                    xs_html_attr("value", id)),
 615+                                xs_html_sctag("input",
 616+                                    xs_html_attr("type",  "hidden"),
 617+                                    xs_html_attr("name",  "eid"),
 618+                                    xs_html_attr("value", shortname)),
 619+                                ret);
 620+                            s1 = xs_html_render(form);
 621+                        }
 622+                        else
 623+                            s1 = xs_html_render(ret);
 624+
 625+                        ls = xs_list_append(ls, s1);
 626+                        sfrl = xs_dict_del(sfrl, content);
 627+                    }
 628+                }
 629+            }
 630+        }
 631+
 632+        c = 0;
 633+
 634+        xs_html *emoji_div;
 635+        if (xs_list_len(ls) > 0) {
 636+                emoji_div = xs_html_tag("div", xs_html_text(L("Emoji reactions: ")),
 637+                        xs_html_attr("class", "snac-reaction-div"));
 638+
 639+            while (ls != NULL && xs_list_next(ls, &k, &c))
 640+                xs_html_add(emoji_div, xs_html_raw(k));
 641+
 642+            xs_html_add(snac_content_wrap, emoji_div);
 643+        }
 644+
 645+    }
 646+
 647     {
 648         /** build the content string **/
 649         const char *content = xs_dict_get(msg, "content");
 650@@ -2378,7 +2757,8 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 651 
 652         c = xs_replace_i(c, "<br><br>", "<p>");
 653 
 654-        c = xs_str_cat(c, "<p>");
 655+        if (is_emoji == 0)
 656+            c = xs_str_cat(c, "<p>");
 657 
 658         /* replace the :shortnames: */
 659         c = replace_shortnames(c, xs_dict_get(msg, "tag"), 2, proxy);
 660@@ -2426,7 +2806,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 661         if (read_only)
 662             closed = 1; /* non-identified page; show as closed */
 663         else
 664-        if (user && xs_startswith(id, user->actor))
 665+        if (user && is_msg_mine(user, id))
 666             closed = 1; /* we questioned; closed for us */
 667         else
 668         if (user && was_question_voted(user, id))
 669@@ -2634,7 +3014,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
 670                             xs_html_attr("title", name))));
 671             }
 672             else
 673-            if (xs_startswith(type, "video/")) {
 674+            if (xs_startswith(type, "video/") || strcmp(type, "Video") == 0) {
 675                 xs_html_add(content_attachments,
 676                     xs_html_tag("video",
 677                         xs_html_attr("preload", "none"),
 678@@ -3003,7 +3383,7 @@ xs_html *html_footer(const snac *user)
 679 xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
 680                       int skip, int show, int show_more,
 681                       const char *title, const char *page,
 682-                      int utl, const char *error)
 683+                      int utl, const char *error, int terse)
 684 /* returns the HTML for the timeline */
 685 {
 686     xs_list *p = (xs_list *)list;
 687@@ -3031,7 +3411,11 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
 688 
 689     if (user) {
 690         head = html_user_head(user, desc, alternate);
 691-        body = html_user_body(user, read_only);
 692+
 693+        if (terse)
 694+            body = xs_html_tag("body", NULL);
 695+        else
 696+            body = html_user_body(user, read_only);
 697     }
 698     else {
 699         head = html_instance_head();
 700@@ -3251,7 +3635,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
 701 
 702     if (list && user && read_only) {
 703         /** history **/
 704-        if (xs_type(xs_dict_get(srv_config, "disable_history")) != XSTYPE_TRUE) {
 705+        if (xs_type(xs_dict_get(srv_config, "disable_history")) != XSTYPE_TRUE && !terse) {
 706             xs_html *ul = xs_html_tag("ul", NULL);
 707 
 708             xs_html *history = xs_html_tag("div",
 709@@ -3323,13 +3707,19 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
 710 }
 711 
 712 
 713-xs_html *html_people_list(snac *user, xs_list *list, const char *header, const char *t, const char *proxy)
 714+xs_html *html_people_list(snac *user, xs_list *list, const char *header, const char *t, const char *proxy, int do_count)
 715 {
 716     xs_html *snac_posts;
 717+    xs *header_cnt;
 718+    if (do_count)
 719+        header_cnt = xs_fmt("%s - %d\n", header, xs_list_len(list));
 720+    else
 721+        header_cnt = xs_fmt("%s\n", header);
 722+
 723     xs_html *people = xs_html_tag("div",
 724         xs_html_tag("h2",
 725             xs_html_attr("class", "snac-header"),
 726-            xs_html_text(header)),
 727+            xs_html_text(header_cnt)),
 728         snac_posts = xs_html_tag("details",
 729                 xs_html_attr("open", NULL),
 730                 xs_html_tag("summary",
 731@@ -3570,12 +3960,12 @@ xs_str *html_people(snac *user)
 732 
 733     if (xs_list_len(pending) || xs_is_true(xs_dict_get(user->config, "approve_followers"))) {
 734         xs_html_add(lists,
 735-            html_people_list(user, pending, L("Pending follow confirmations"), "p", proxy));
 736+            html_people_list(user, pending, L("Pending follow confirmations"), "p", proxy, 1));
 737     }
 738 
 739     xs_html_add(lists,
 740-        html_people_list(user, wing, L("People you follow"), "i", proxy),
 741-        html_people_list(user, wers, L("People that follow you"), "e", proxy));
 742+        html_people_list(user, wing, L("People you follow"), "i", proxy, 1),
 743+        html_people_list(user, wers, L("People that follow you"), "e", proxy, 1));
 744 
 745     xs_html *html = xs_html_tag("html",
 746         html_user_head(user, NULL, NULL),
 747@@ -3586,6 +3976,108 @@ xs_str *html_people(snac *user)
 748     return xs_html_render_s(html, "<!DOCTYPE html>\n");
 749 }
 750 
 751+/* Filter list to display only posts by actor.  We'll probably show
 752+   fewer than show posts.  Should we try harder to find some?  */
 753+xs_str *html_people_one(snac *user, const char *actor, const xs_list *list,
 754+                        int skip, int show, int show_more, const char *page)
 755+{
 756+    const char *proxy = NULL;
 757+    xs_list *p = (xs_list *)list;
 758+    const char *v;
 759+
 760+    if (xs_is_true(xs_dict_get(srv_config, "proxy_media")))
 761+        proxy = user->actor;
 762+
 763+    xs_html *body = html_user_body(user, 0);
 764+
 765+    xs_html *lists = xs_html_tag("div",
 766+        xs_html_attr("class", "snac-posts"));
 767+
 768+    xs *foll = xs_list_append(xs_list_new(), actor);
 769+
 770+    xs_html_add(lists,
 771+        html_people_list(user, foll, L("Contact's posts"), "p", proxy, 0));
 772+
 773+    xs_html_add(body, lists);
 774+
 775+    while (xs_list_iter(&p, &v)) {
 776+        xs *msg = NULL;
 777+        int status;
 778+
 779+        status = timeline_get_by_md5(user, v, &msg);
 780+
 781+        if (!valid_status(status))
 782+            continue;
 783+
 784+        const char *id = xs_dict_get(msg, "id");
 785+        const char *by = get_atto(msg);
 786+        xs *actor_md5 = NULL;
 787+        xs_list *boosts = NULL;
 788+        xs_list *likes = NULL;
 789+        xs_list *reacts = NULL;
 790+        /* Besides actor's posts, also show actor's boosts, and also
 791+           posts by user with likes or reacts by actor.  I.e., any
 792+           actor's actions that user could have seen in the timeline
 793+           or in notifications.  */
 794+        if (!(by && strcmp(actor, by) == 0) &&
 795+            xs_list_in((boosts = object_announces(id)),
 796+                       (actor_md5 = xs_md5_hex(actor, strlen(actor)))) == -1 &&
 797+            (!(by && strcmp(user->actor, by) == 0) ||
 798+             (xs_list_in((likes = object_likes(id)), actor_md5) == -1 &&
 799+              xs_list_in((reacts = object_get_emoji_reacts(id)), actor_md5) == -1)))
 800+            continue;
 801+
 802+        xs_html *entry = html_entry(user, msg, 0, 0, v, 1);
 803+
 804+        if (entry != NULL)
 805+            xs_html_add(lists,
 806+                entry);
 807+    }
 808+
 809+    if (show_more) {
 810+        xs *m  = NULL;
 811+        xs *m10  = NULL;
 812+        xs *ss = xs_fmt("skip=%d&show=%d", skip + show, show);
 813+
 814+        xs *url = xs_dup(user == NULL ? srv_baseurl : user->actor);
 815+
 816+        if (page != NULL)
 817+            url = xs_str_cat(url, page);
 818+
 819+        if (xs_str_in(url, "?") != -1)
 820+            m = xs_fmt("%s&%s", url, ss);
 821+        else
 822+            m = xs_fmt("%s?%s", url, ss);
 823+
 824+        m10 = xs_fmt("%s0", m);
 825+
 826+        xs_html *more_links = xs_html_tag("p",
 827+            xs_html_tag("a",
 828+                xs_html_attr("href", url),
 829+                xs_html_attr("name", "snac-more"),
 830+                xs_html_text(L("Back to top"))),
 831+            xs_html_text(" - "),
 832+            xs_html_tag("a",
 833+                xs_html_attr("href", m),
 834+                xs_html_attr("name", "snac-more"),
 835+                xs_html_text(L("More..."))),
 836+            xs_html_text(" - "),
 837+            xs_html_tag("a",
 838+                xs_html_attr("href", m10),
 839+                xs_html_attr("name", "snac-more"),
 840+                xs_html_text(L("More (x 10)..."))));
 841+
 842+        xs_html_add(body,
 843+            more_links);
 844+    }
 845+
 846+    xs_html *html = xs_html_tag("html",
 847+        html_user_head(user, NULL, NULL),
 848+        xs_html_add(body,
 849+            html_footer(user)));
 850+
 851+    return xs_html_render_s(html, "<!DOCTYPE html>\n");
 852+}
 853 
 854 xs_str *html_notifications(snac *user, int skip, int show)
 855 {
 856@@ -3654,6 +4146,9 @@ xs_str *html_notifications(snac *user, int skip, int show)
 857         if (xs_is_string(id2) && xs_set_add(&rep, id2) != 1)
 858             continue;
 859 
 860+        if (strcmp(type, "EmojiReact") == 0 && xs_is_true(xs_dict_get(srv_config, "disable_emojireact")))
 861+            continue;
 862+
 863         object_get(id, &obj);
 864 
 865         const char *msg_id = NULL;
 866@@ -3689,9 +4184,18 @@ xs_str *html_notifications(snac *user, int skip, int show)
 867         if (strcmp(type, "EmojiReact") == 0 || strcmp(type, "Like") == 0) {
 868             const char *content = xs_dict_get_path(noti, "msg.content");
 869 
 870+            xs *cd = xs_dup(content);
 871+            const char *sna = cd;
 872+            const xs_dict *tag = xs_dict_get_path(noti, "msg.tag");
 873+            unsigned int utf = xs_utf8_dec((const char **)&sna);
 874+
 875+            int isEmoji = 0;
 876+            if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
 877+                isEmoji = 1;
 878+
 879             if (xs_type(content) == XSTYPE_STRING) {
 880                 xs *emoji = replace_shortnames(xs_dup(content), xs_dict_get_path(noti, "msg.tag"), 1, proxy);
 881-                wrk = xs_fmt("%s (%s&#xFE0F;)", type, emoji);
 882+                wrk = xs_fmt("%s (%s&#xFE0F;)", isEmoji ? "EmojiReact" : "Like", emoji);
 883                 label = wrk;
 884             }
 885         }
 886@@ -3909,6 +4413,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 887     int cache = 1;
 888     int save = 1;
 889     int proxy = 0;
 890+    int terse = 0;
 891     const char *v;
 892 
 893     const xs_dict *q_vars = xs_dict_get(req, "q_vars");
 894@@ -3921,6 +4426,9 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 895         return HTTP_STATUS_NOT_FOUND;
 896     }
 897 
 898+    if (!xs_is_null(xs_dict_get(q_vars, "terse")))
 899+        terse = 1;
 900+
 901     if (strcmp(v, "share-bridge") == 0) {
 902         /* temporary redirect for a post */
 903         const char *login = xs_dict_get(q_vars, "login");
 904@@ -3988,8 +4496,12 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 905         cache = 0;
 906 
 907     int skip = 0;
 908+    const char *max_show_default = "50";
 909+    int max_show = xs_number_get(xs_dict_get_def(srv_config, "max_timeline_entries",
 910+                                 max_show_default));
 911     int def_show = xs_number_get(xs_dict_get_def(srv_config, "def_timeline_entries",
 912-                                 xs_dict_get_def(srv_config, "max_timeline_entries", "50")));
 913+                                 xs_dict_get_def(srv_config, "max_timeline_entries",
 914+                                 max_show_default)));
 915     int show = def_show;
 916 
 917     if ((v = xs_dict_get(q_vars, "skip")) != NULL)
 918@@ -4015,13 +4527,15 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 919     /* a show of 0 has no sense */
 920     if (show == 0)
 921         show = def_show;
 922+    if (show > max_show)
 923+        show = max_show;
 924 
 925     if (p_path == NULL) { /** public timeline **/
 926         xs *h = xs_str_localtime(0, "%Y-%m.html");
 927 
 928         if (xs_type(xs_dict_get(snac.config, "private")) == XSTYPE_TRUE) {
 929             /** empty public timeline for private users **/
 930-            *body = html_timeline(&snac, NULL, 1, 0, 0, 0, NULL, "", 1, error);
 931+            *body = html_timeline(&snac, NULL, 1, 0, 0, 0, NULL, "", 1, error, terse);
 932             *b_size = strlen(*body);
 933             status  = HTTP_STATUS_OK;
 934         }
 935@@ -4044,7 +4558,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 936             xs *pins = pinned_list(&snac);
 937             pins = xs_list_cat(pins, list);
 938 
 939-            *body = html_timeline(&snac, pins, 1, skip, show, more, NULL, "", 1, error);
 940+            *body = html_timeline(&snac, pins, 1, skip, show, more, NULL, "", 1, error, terse);
 941 
 942             *b_size = strlen(*body);
 943             status  = HTTP_STATUS_OK;
 944@@ -4060,9 +4574,15 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 945             status = HTTP_STATUS_UNAUTHORIZED;
 946         }
 947         else {
 948-            const char *q = xs_dict_get(q_vars, "q");
 949+            const char *q = NULL;
 950+            xs *cq = xs_dup(xs_dict_get(q_vars, "q"));
 951             xs *url_acct = NULL;
 952 
 953+            if (xs_is_string(cq)) {
 954+                cq = xs_strip_i(cq);
 955+                q = cq;
 956+            }
 957+
 958             /* searching for an URL? */
 959             if (q && xs_match(q, "https://*|http://*")) {
 960                 /* may by an actor; try a webfinger */
 961@@ -4126,11 +4646,11 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 962                             actor_add(actor, actor_obj);
 963 
 964                             /* create a people list with only one element */
 965-                            l = xs_list_append(xs_list_new(), actor);
 966+                            l = xs_list_append(l, actor);
 967 
 968                             xs *title = xs_fmt(L("Search results for account %s"), q);
 969 
 970-                            page = html_people_list(&snac, l, title, "wf", NULL);
 971+                            page = html_people_list(&snac, l, title, "wf", NULL, 1);
 972                         }
 973                     }
 974 
 975@@ -4168,7 +4688,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 976                     xs *title = xs_fmt(xs_list_len(tl) ?
 977                         L("Search results for tag %s") : L("Nothing found for tag %s"), q);
 978 
 979-                    *body = html_timeline(&snac, tl, 0, skip, show, more, title, page, 0, error);
 980+                    *body = html_timeline(&snac, tl, 0, skip, show, more, title, page, 0, error, terse);
 981                     *b_size = strlen(*body);
 982                     status  = HTTP_STATUS_OK;
 983                 }
 984@@ -4193,7 +4713,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 985                         title = xs_fmt(L("Nothing found for '%s'"), q);
 986 
 987                     *body   = html_timeline(&snac, tl, 0, skip, tl_len, to || tl_len == show,
 988-                                            title, page, 0, error);
 989+                                            title, page, 0, error, terse);
 990                     *b_size = strlen(*body);
 991                     status  = HTTP_STATUS_OK;
 992                 }
 993@@ -4220,7 +4740,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
 994                     xs *list = timeline_list(&snac, "private", skip, show, &more);
 995 
 996                     *body = html_timeline(&snac, list, 0, skip, show,
 997-                            more, NULL, "/admin", 1, error);
 998+                            more, NULL, "/admin", 1, error, terse);
 999 
1000                     *b_size = strlen(*body);
1001                     status  = HTTP_STATUS_OK;
1002@@ -4247,7 +4767,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1003                 xs *list0 = xs_list_append(xs_list_new(), md5);
1004                 xs *list  = timeline_top_level(&snac, list0);
1005 
1006-                *body   = html_timeline(&snac, list, 0, 0, 0, 0, NULL, "/admin", 1, error);
1007+                *body   = html_timeline(&snac, list, 0, 0, 0, 0, NULL, "/admin", 1, error, terse);
1008                 *b_size = strlen(*body);
1009                 status  = HTTP_STATUS_OK;
1010             }
1011@@ -4266,6 +4786,37 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1012         }
1013     }
1014     else
1015+    if (xs_startswith(p_path, "people/")) { /** a single actor **/
1016+        if (!login(&snac, req)) {
1017+            *body  = xs_dup(uid);
1018+            status = HTTP_STATUS_UNAUTHORIZED;
1019+        }
1020+        else {
1021+            xs *actor_dict = NULL;
1022+            const char *actor_id = NULL;
1023+            xs *actor = NULL;
1024+            xs_list *page_lst = xs_split_n(p_path, "?", 2);
1025+            xs *page = xs_str_cat(xs_str_new("/"), xs_list_get(page_lst, 0));
1026+            xs_list *l = xs_split_n(page, "/", 3);
1027+            const char *actor_md5 = xs_list_get(l, 2);
1028+
1029+            if (valid_status(object_get_by_md5(actor_md5, &actor_dict)) &&
1030+               (actor_id = xs_dict_get(actor_dict, "id")) != NULL &&
1031+               valid_status(actor_get(actor_id, &actor))) {
1032+                int more = 0;
1033+                xs *list = timeline_simple_list(&snac, "private", skip, show, &more);
1034+
1035+                *body   = html_people_one(&snac, actor_id, list, skip, show, more, page);
1036+                *b_size = strlen(*body);
1037+                status  = HTTP_STATUS_OK;
1038+            }
1039+            else {
1040+                *body = xs_dup(uid);
1041+                status = HTTP_STATUS_NOT_FOUND;
1042+            }
1043+        }
1044+    }
1045+    else
1046     if (strcmp(p_path, "notifications") == 0) { /** the list of notifications **/
1047         if (!login(&snac, req)) {
1048             *body  = xs_dup(uid);
1049@@ -4288,7 +4839,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1050             xs *next = timeline_instance_list(skip + show, 1);
1051 
1052             *body = html_timeline(&snac, list, 0, skip, show,
1053-                xs_list_len(next), L("Showing instance timeline"), "/instance", 0, error);
1054+                xs_list_len(next), L("Showing instance timeline"), "/instance", 0, error, terse);
1055             *b_size = strlen(*body);
1056             status  = HTTP_STATUS_OK;
1057         }
1058@@ -4303,7 +4854,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1059             xs *list = pinned_list(&snac);
1060 
1061             *body = html_timeline(&snac, list, 0, skip, show,
1062-                0, L("Pinned posts"), "", 0, error);
1063+                0, L("Pinned posts"), "", 0, error, terse);
1064             *b_size = strlen(*body);
1065             status  = HTTP_STATUS_OK;
1066         }
1067@@ -4318,7 +4869,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1068             xs *list = bookmark_list(&snac);
1069 
1070             *body = html_timeline(&snac, list, 0, skip, show,
1071-                0, L("Bookmarked posts"), "", 0, error);
1072+                0, L("Bookmarked posts"), "", 0, error, terse);
1073             *b_size = strlen(*body);
1074             status  = HTTP_STATUS_OK;
1075         }
1076@@ -4333,7 +4884,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1077             xs *list = draft_list(&snac);
1078 
1079             *body = html_timeline(&snac, list, 0, skip, show,
1080-                0, L("Post drafts"), "", 0, error);
1081+                0, L("Post drafts"), "", 0, error, terse);
1082             *b_size = strlen(*body);
1083             status  = HTTP_STATUS_OK;
1084         }
1085@@ -4348,7 +4899,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1086             xs *list = scheduled_list(&snac);
1087 
1088             *body = html_timeline(&snac, list, 0, skip, show,
1089-                0, L("Scheduled posts"), "", 0, error);
1090+                0, L("Scheduled posts"), "", 0, error, terse);
1091             *b_size = strlen(*body);
1092             status  = HTTP_STATUS_OK;
1093         }
1094@@ -4374,7 +4925,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1095                 xs *title = xs_fmt(L("Showing timeline for list '%s'"), name);
1096 
1097                 *body = html_timeline(&snac, ttl, 0, skip, show,
1098-                    xs_list_len(next), title, base, 1, error);
1099+                    xs_list_len(next), title, base, 1, error, terse);
1100                 *b_size = strlen(*body);
1101                 status  = HTTP_STATUS_OK;
1102             }
1103@@ -4394,7 +4945,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1104 
1105             list = xs_list_append(list, md5);
1106 
1107-            *body   = html_timeline(&snac, list, 1, 0, 0, 0, NULL, "", 1, error);
1108+            *body   = html_timeline(&snac, list, 1, 0, 0, 0, NULL, "", 1, error, terse);
1109             *b_size = strlen(*body);
1110             status  = HTTP_STATUS_OK;
1111         }
1112@@ -4582,8 +5133,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
1113                     xs *msg = msg_admiration(&snac, id, *action == 'L' ? "Like" : "Announce");
1114 
1115                     if (msg != NULL) {
1116+                        timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, *action == 'L' ? 1 : 0, msg);
1117                         enqueue_message(&snac, msg);
1118-                        timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, *action == 'L' ? 1 : 0);
1119 
1120                         status = HTTP_STATUS_SEE_OTHER;
1121                     }
1122@@ -4858,6 +5409,9 @@ int html_post_handler(const xs_dict *req, const char *q_path,
1123                         /* overwrite object, not updating the indexes */
1124                         object_add_ow(edit_id, msg);
1125 
1126+                        /* index tags */
1127+                        tag_index(edit_id, msg);
1128+
1129                         /* update message */
1130                         c_msg = msg_update(&snac, msg);
1131                     }
1132@@ -4891,12 +5445,36 @@ int html_post_handler(const xs_dict *req, const char *q_path,
1133 
1134         status = HTTP_STATUS_SEE_OTHER;
1135 
1136+        if (strcmp(action, L("EmojiUnreact")) == 0) { /** **/
1137+            const char *eid = xs_dict_get(p_vars, "eid");
1138+
1139+            if (eid != NULL) {
1140+                xs *n_msg = msg_emoji_unreact(&snac, id, eid);
1141+
1142+                if (n_msg != NULL)
1143+                    enqueue_message(&snac, n_msg);
1144+            }
1145+        }
1146+        else
1147+        if (strcmp(action, L("EmojiReact")) == 0) { /** **/
1148+            xs *eid = xs_dup(xs_dict_get(p_vars, "eid"));
1149+
1150+            eid = xs_strip_chars_i(eid, ":");
1151+
1152+            const xs_dict *ret = msg_emoji_init(&snac, id, eid);
1153+            /* fails if either invalid or already reacted */
1154+            if (!ret)
1155+                ret = msg_emoji_unreact(&snac, id, eid);
1156+            if (!ret)
1157+                status = HTTP_STATUS_NOT_FOUND;
1158+        }
1159+        else
1160         if (strcmp(action, L("Like")) == 0) { /** **/
1161             xs *msg = msg_admiration(&snac, id, "Like");
1162 
1163             if (msg != NULL) {
1164+                timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 1, msg);
1165                 enqueue_message(&snac, msg);
1166-                timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 1);
1167             }
1168         }
1169         else
1170@@ -4904,8 +5482,8 @@ int html_post_handler(const xs_dict *req, const char *q_path,
1171             xs *msg = msg_admiration(&snac, id, "Announce");
1172 
1173             if (msg != NULL) {
1174+                timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0, msg);
1175                 enqueue_message(&snac, msg);
1176-                timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0);
1177             }
1178         }
1179         else
1180@@ -5022,7 +5600,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
1181             }
1182             else {
1183                 /* delete an entry */
1184-                if (xs_startswith(id, snac.actor) && !is_draft(&snac, id)) {
1185+                if (is_msg_mine(&snac, id) && !is_draft(&snac, id)) {
1186                     /* it's a post by us: generate a delete */
1187                     xs *msg = msg_delete(&snac, id);
1188 
1189@@ -5351,6 +5929,33 @@ int html_post_handler(const xs_dict *req, const char *q_path,
1190 
1191         status = HTTP_STATUS_SEE_OTHER;
1192     }
1193+    else
1194+    if (p_path && strcmp(p_path, "admin/muted-words") == 0) {
1195+        const char *words = xs_dict_get(p_vars, "muted_words");
1196+
1197+        if (xs_is_string(words)) {
1198+            xs *new_words = xs_list_new();
1199+            xs *l = xs_split(words, "\n");
1200+            const char *v;
1201+
1202+            xs_list_foreach(l, v) {
1203+                xs *s1 = xs_strip_i(xs_dup(v));
1204+                s1 = xs_replace_i(s1, " ", "");
1205+
1206+                if (*s1 == '\0')
1207+                    continue;
1208+
1209+                xs *s2 = xs_utf8_to_lower(s1);
1210+
1211+                new_words = xs_list_insert_sorted(new_words, s2);
1212+            }
1213+
1214+            snac.config = xs_dict_set(snac.config, "muted_words", new_words);
1215+            user_persist(&snac, 0);
1216+        }
1217+
1218+        status = HTTP_STATUS_SEE_OTHER;
1219+    }
1220 
1221     if (status == HTTP_STATUS_SEE_OTHER) {
1222         const char *hard_redir = xs_dict_get(p_vars, "hard-redir");
M http.c
+1, -1
1@@ -1,5 +1,5 @@
2 /* snac - A simple, minimalistic ActivityPub instance */
3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
5 
6 #include "xs.h"
7 #include "xs_io.h"
+3, -3
 1@@ -1,5 +1,5 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 5 
 6 #include "xs.h"
 7 #include "xs_io.h"
 8@@ -257,7 +257,7 @@ int server_get_handler(xs_dict *req, const char *q_path,
 9             else {
10                 xs *page = xs_fmt("?t=%s", t);
11                 xs *title = xs_fmt(L("Search results for tag #%s"), t);
12-                *body = html_timeline(NULL, tl, 0, skip, show, more, title, page, 0, NULL);
13+                *body = html_timeline(NULL, tl, 0, skip, show, more, title, page, 0, NULL, 0);
14             }
15         }
16         else
17@@ -265,7 +265,7 @@ int server_get_handler(xs_dict *req, const char *q_path,
18             /** instance timeline **/
19             xs *tl = timeline_instance_list(0, 30);
20             *body = html_timeline(NULL, tl, 0, 0, 0, 0,
21-                L("Recent posts by users in this instance"), NULL, 0, NULL);
22+                L("Recent posts by users in this instance"), NULL, 0, NULL, 0);
23         }
24         else
25             *body = greeting_html();
M main.c
+38, -4
 1@@ -1,5 +1,5 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 5 
 6 #include "xs.h"
 7 #include "xs_io.h"
 8@@ -18,7 +18,7 @@
 9 int usage(const char *cmd)
10 {
11     printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n");
12-    printf("Copyright (c) 2022 - 2025 grunfink et al. / MIT license\n");
13+    printf("Copyright (c) 2022 - 2026 grunfink et al. / MIT license\n");
14     printf("\n");
15 
16     if (cmd == NULL) {
17@@ -76,7 +76,9 @@ int usage(const char *cmd)
18         "list_create {basedir} {uid} {name}   Creates a new list\n"
19         "list_remove {basedir} {uid} {name}   Removes an existing list\n"
20         "list_add {basedir} {uid} {name} {acct} Adds an account (@user@host or actor url) to a list\n"
21-        "list_del {basedir} {uid} {name} {actor} Deletes an actor URL from a list\n";
22+        "list_del {basedir} {uid} {name} {actor} Deletes an actor URL from a list\n"
23+        "top_ten {basedir} {uid} [{N}]        Prints the most popular posts\n"
24+        "refresh {basedir} {uid}              Refreshes all actors\n";
25 
26     if (cmd == NULL)
27         printf("%s", cmds);
28@@ -350,6 +352,38 @@ int main(int argc, char *argv[])
29         return 0;
30     }
31 
32+    if (strcmp(cmd, "top_ten") == 0) { /** **/
33+        int count = 10;
34+        const char *n = GET_ARGV();
35+        if (xs_is_string(n))
36+            count = atoi(n);
37+
38+        xs *l = user_top_ten(&snac, count);
39+        const xs_list *i;
40+
41+        xs_list_foreach(l, i) {
42+            printf("%s %ld★ %ld↺\n", xs_list_get(i, 0),
43+                xs_number_get_l(xs_list_get(i, 1)),
44+                xs_number_get_l(xs_list_get(i, 2)));
45+        }
46+
47+        return 0;
48+    }
49+
50+    if (strcmp(cmd, "refresh") == 0) { /** **/
51+        xs *fwers = follower_list(&snac);
52+        xs *fwing = following_list(&snac);
53+        const char *id;
54+
55+        xs_list_foreach(fwers, id)
56+            enqueue_actor_refresh(&snac, id, 0);
57+
58+        xs_list_foreach(fwing, id)
59+            enqueue_actor_refresh(&snac, id, 0);
60+
61+        return 0;
62+    }
63+
64     if ((url = GET_ARGV()) == NULL)
65         return usage(cmd);
66 
67@@ -498,7 +532,7 @@ int main(int argc, char *argv[])
68 
69         if (msg != NULL) {
70             enqueue_message(&snac, msg);
71-            timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0);
72+            timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0, "");
73 
74             if (dbglevel) {
75                 xs_json_dump(msg, 4, stdout);
+270, -72
  1@@ -1,5 +1,5 @@
  2 /* snac - A simple, minimalistic ActivityPub instance */
  3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
  4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  5 
  6 #ifndef NO_MASTODON_API
  7 
  8@@ -1158,6 +1158,103 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
  9         st = xs_dict_append(st, "tags",     htl);
 10         st = xs_dict_append(st, "emojis",   eml);
 11     }
 12+    {
 13+        xs *rl   = object_get_emoji_reacts(id);
 14+        xs *frl  = xs_list_new(); /* final */
 15+        xs *sfrl = xs_dict_new(); /* seen */
 16+        int c = 0;
 17+        const char *v;
 18+
 19+        while (xs_list_next(rl, &v, &c)) {
 20+            xs *msg = NULL;
 21+            if (valid_status(object_get_by_md5(v, &msg))) {
 22+                const char *content = xs_dict_get(msg, "content");
 23+                const char *actor = xs_dict_get(msg, "actor");
 24+                const xs_list *contentl = xs_dict_get(sfrl, content);
 25+
 26+                if ((snac && is_muted(snac, actor)) || is_instance_blocked(actor))
 27+                    continue;
 28+
 29+                /* NOTE: idk when there are no actor, but i encountered that bug.
 30+                 * Probably because of one of my previous attempts.
 31+                 * Keeping this just in case, can remove later */
 32+                const char *me = actor && snac && strcmp(actor, snac->actor) == 0 ?
 33+                    xs_stock(XSTYPE_TRUE) : xs_stock(XSTYPE_FALSE);
 34+                int count = 1;
 35+
 36+                if (contentl) {
 37+                    count = atoi(xs_list_get(contentl, 0)) + 1;
 38+                    if (strncmp(xs_list_get(contentl, 1), xs_stock(XSTYPE_TRUE), 1) == 0)
 39+                        me = xs_stock(XSTYPE_TRUE);
 40+                }
 41+
 42+                xs *fl = xs_list_new();
 43+                xs *c1 = xs_fmt("%d", count);
 44+                fl = xs_list_append(fl, c1, me);
 45+                sfrl = xs_dict_append(sfrl, content, fl);
 46+            }
 47+        }
 48+
 49+        c = 0;
 50+
 51+        while (xs_list_next(rl, &v, &c)) {
 52+            xs *msg = NULL;
 53+            if (valid_status(object_get_by_md5(v, &msg))) {
 54+                xs *d1 = xs_dict_new();
 55+
 56+                const xs_dict *icon = xs_dict_get(xs_list_get(xs_dict_get(msg, "tag"), 0), "icon");
 57+                const char *o_url = xs_dict_get(icon, "url");
 58+                const char *name = xs_dict_get(msg, "content");
 59+                const char *actor = xs_dict_get(msg, "actor");
 60+
 61+                xs *nm = xs_dup(name);
 62+                xs *url = NULL;
 63+
 64+                if (!xs_is_null(o_url)) {
 65+                    if (actor && snac && !strcmp(actor, snac->actor))
 66+                        url = make_url(o_url, NULL, 1);
 67+                    else
 68+                        url = xs_dup(o_url);
 69+                }
 70+
 71+                xs *accounts = xs_list_new();
 72+                if (actor) {
 73+                    xs *d2 = xs_dict_new();
 74+                    object_get(actor, &d2);
 75+                    xs *e_acct = mastoapi_account(snac, d2);
 76+                    accounts = xs_list_append(accounts, e_acct);
 77+                }
 78+
 79+                const xs_list *item = xs_dict_get(sfrl, nm);
 80+                const xs_str *nb = xs_list_get(item, 0);
 81+                const xs_val *me = xs_list_get(item, 1);
 82+                if (item == NULL)
 83+                    continue;
 84+
 85+                if (nm && strcmp(nm, "")) {
 86+                    if (url && strcmp(url, "")) {
 87+                        d1 = xs_dict_append(d1, "name",              nm);
 88+                        d1 = xs_dict_append(d1, "shortcode",         nm);
 89+                        d1 = xs_dict_append(d1, "accounts",          accounts);
 90+                        d1 = xs_dict_append(d1, "me",                me);
 91+                        d1 = xs_dict_append(d1, "url",               url);
 92+                        d1 = xs_dict_append(d1, "static_url",        url);
 93+                        d1 = xs_dict_append(d1, "visible_in_picker", xs_stock(XSTYPE_TRUE));
 94+                        d1 = xs_dict_append(d1, "count", nb);
 95+                    } else {
 96+                        d1 = xs_dict_append(d1, "name",              nm);
 97+                        d1 = xs_dict_append(d1, "count",             nb);
 98+                        d1 = xs_dict_append(d1, "me",                me);
 99+                        d1 = xs_dict_append(d1, "visible_in_picker", xs_stock(XSTYPE_TRUE));
100+                    }
101+                    sfrl = xs_dict_del(sfrl, nm);
102+                    frl = xs_list_append(frl, d1);
103+                }
104+            }
105+        }
106+
107+        st = xs_dict_append(st, "reactions", frl);
108+    }
109 
110     xs_free(idx);
111     xs_free(ixc);
112@@ -1712,6 +1809,37 @@ xs_list *mastoapi_account_lists(snac *user, const char *uid)
113 }
114 
115 
116+xs_list *build_childrens(const xs_dict *msg, snac *snac1) {
117+    xs_list *ret = xs_list_new();
118+    xs *children = object_children(xs_dict_get(msg, "id"));
119+    char *p = children;
120+    const xs_str *v;
121+
122+    while (xs_list_iter(&p, &v)) {
123+        xs *m2 = NULL;
124+
125+        if (valid_status(timeline_get_by_md5(snac1, v, &m2))) {
126+            if (xs_is_null(xs_dict_get(m2, "name"))) {
127+                xs *st = mastoapi_status(snac1, m2);
128+
129+                if (st) {
130+                    /* childrens children */
131+                    xs *childs = build_childrens(m2, snac1);
132+                    ret = xs_list_append(ret, st);
133+                    if (xs_list_len(childs)) {
134+                        char *p2 = childs;
135+                        while (xs_list_iter(&p2, &v))
136+                            ret = xs_list_append(ret, v);
137+
138+                    }
139+                }
140+            }
141+        }
142+    }
143+    return ret;
144+}
145+
146+
147 int mastoapi_get_handler(const xs_dict *req, const char *q_path,
148                          char **body, int *b_size, char **ctype, xs_str **link)
149 {
150@@ -1892,60 +2020,64 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
151                 }
152                 else
153                 if (strcmp(opt, "statuses") == 0) { /** **/
154-                    /* the public list of posts of a user */
155-                    const char *limit_s  = xs_dict_get(args, "limit");
156-                    const char *o_max_id = xs_dict_get(args, "max_id");
157-                    int limit = limit_s ? atoi(limit_s) : 20;
158-                    xs *max_id = o_max_id ? xs_tolower_i(xs_dup(o_max_id)) : NULL;
159+                    if (logged_in || xs_type(xs_dict_get(snac2.config, "private")) == XSTYPE_FALSE) {
160+                        /* the public list of posts of a user */
161+                        const char *limit_s  = xs_dict_get(args, "limit");
162+                        const char *o_max_id = xs_dict_get(args, "max_id");
163+                        int limit = limit_s ? atoi(limit_s) : 20;
164+                        xs *max_id = o_max_id ? xs_tolower_i(xs_dup(o_max_id)) : NULL;
165 
166-                    srv_debug(1, xs_fmt("account statuses: max_id=%s limit=%d", max_id ? max_id : "(null)", limit));
167+                        srv_debug(1, xs_fmt("account statuses: max_id=%s limit=%d", max_id ? max_id : "(null)", limit));
168 
169-                    xs *timeline = timeline_simple_list(&snac2, "public", 0, 256, NULL);
170-                    xs_list *p   = timeline;
171-                    const xs_str *v;
172-                    xs_set seen;
173-                    int cnt = 0;
174-                    int skip_until_max = max_id != NULL;
175+                        xs *timeline = timeline_simple_list(&snac2, "public", 0, 256, NULL);
176+                        xs_list *p   = timeline;
177+                        const xs_str *v;
178+                        xs_set seen;
179+                        int cnt = 0;
180+                        int skip_until_max = max_id != NULL;
181 
182-                    out = xs_list_new();
183-                    xs_set_init(&seen);
184+                        out = xs_list_new();
185+                        xs_set_init(&seen);
186 
187-                    while (xs_list_iter(&p, &v) && cnt < limit) {
188-                        xs *msg = NULL;
189+                        while (xs_list_iter(&p, &v) && cnt < limit) {
190+                            xs *msg = NULL;
191 
192-                        if (valid_status(timeline_get_by_md5(&snac2, v, &msg))) {
193-                            const char *msg_id = xs_dict_get(msg, "id");
194+                            if (valid_status(timeline_get_by_md5(&snac2, v, &msg))) {
195+                                const char *msg_id = xs_dict_get(msg, "id");
196 
197-                            /* add only posts by the author */
198-                            if (!xs_is_null(msg_id) &&
199-                                strcmp(xs_dict_get(msg, "type"), "Note") == 0 &&
200-                                xs_startswith(xs_dict_get(msg, "id"), snac2.actor) && is_msg_public(msg)) {
201+                                /* add only posts by the author */
202+                                if (!xs_is_null(msg_id) &&
203+                                    strcmp(xs_dict_get(msg, "type"), "Note") == 0 &&
204+                                    is_msg_mine(&snac2, xs_dict_get(msg, "id")) && is_msg_public(msg)) {
205 
206-                                /* if max_id is set, skip entries until we find it */
207-                                if (skip_until_max) {
208-                                    xs *mid = mastoapi_id(msg);
209-                                    if (strcmp(mid, max_id) == 0) {
210-                                        skip_until_max = 0;
211-                                        srv_debug(2, xs_fmt("account statuses: found max_id, starting from next post"));
212+                                    /* if max_id is set, skip entries until we find it */
213+                                    if (skip_until_max) {
214+                                        xs *mid = mastoapi_id(msg);
215+                                        if (strcmp(mid, max_id) == 0) {
216+                                            skip_until_max = 0;
217+                                            srv_debug(2, xs_fmt("account statuses: found max_id, starting from next post"));
218+                                        }
219+                                        continue;
220                                     }
221-                                    continue;
222-                                }
223 
224-                                /* deduplicate by message id */
225-                                if (xs_set_add(&seen, msg_id) == 1) {
226-                                    xs *st = mastoapi_status(&snac2, msg);
227+                                    /* deduplicate by message id */
228+                                    if (xs_set_add(&seen, msg_id) == 1) {
229+                                        xs *st = mastoapi_status(&snac2, msg);
230 
231-                                    if (st) {
232-                                        out = xs_list_append(out, st);
233-                                        cnt++;
234+                                        if (st) {
235+                                            out = xs_list_append(out, st);
236+                                            cnt++;
237+                                        }
238                                     }
239                                 }
240                             }
241                         }
242-                    }
243 
244-                    srv_debug(1, xs_fmt("account statuses: returning %d posts (requested %d)", cnt, limit));
245-                    xs_set_free(&seen);
246+                        srv_debug(1, xs_fmt("account statuses: returning %d posts (requested %d)", cnt, limit));
247+                        xs_set_free(&seen);
248+                    }
249+                    else
250+                        status = HTTP_STATUS_UNAUTHORIZED;
251                 }
252                 else
253                 if (strcmp(opt, "featured_tags") == 0) {
254@@ -2202,15 +2334,24 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
255                 if (noti == NULL)
256                     continue;
257 
258+                const xs_dict *tag = xs_list_get(xs_dict_get_path(noti, "msg.tag"), 0);
259+
260                 const char *type  = xs_dict_get(noti, "type");
261                 const char *utype = xs_dict_get(noti, "utype");
262                 const char *objid = xs_dict_get(noti, "objid");
263                 const char *id    = xs_dict_get(noti, "id");
264                 const char *actid = xs_dict_get(noti, "actor");
265+
266+                int isEmoji = 0;
267+
268                 xs *fid = xs_replace(id, ".", "");
269                 xs *actor = NULL;
270                 xs *entry = NULL;
271 
272+                if (tag) {
273+                    isEmoji = strcmp(xs_dict_get(tag, "type"), "Emoji") ? 0 : 1;
274+                }
275+
276                 if (!valid_status(actor_get(actid, &actor)))
277                     continue;
278 
279@@ -2234,9 +2375,12 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
280                 }
281 
282                 /* convert the type */
283-                if (strcmp(type, "Like") == 0 || strcmp(type, "EmojiReact") == 0)
284+                if (strcmp(type, "Like") == 0 && !isEmoji)
285                     type = "favourite";
286                 else
287+                if (isEmoji || strcmp(type, "EmojiReact") == 0)
288+                    type = "reaction";
289+                else
290                 if (strcmp(type, "Announce") == 0)
291                     type = "reblog";
292                 else
293@@ -2277,8 +2421,31 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
294                 if (strcmp(type, "follow") != 0 && !xs_is_null(objid)) {
295                     xs *st = mastoapi_status(&snac1, entry);
296 
297-                    if (st)
298+                    if (st) {
299                         mn = xs_dict_append(mn, "status", st);
300+
301+                        if (strcmp(type, "reaction") == 0 && !xs_is_null(objid)) {
302+                            const char *eid = NULL;
303+                            const char *url = NULL;
304+                            int utf = 0;
305+
306+                            const xs_dict *tag = xs_list_get(xs_dict_get_path(noti, "msg.tag"), 0);
307+                            const char *content = xs_dict_get_path(noti, "msg.content");
308+
309+                            url = xs_dict_get(xs_dict_get(tag, "icon"), "url");
310+                            eid = xs_dict_get(tag, "name");
311+
312+                            if (eid && url) {
313+                                mn = xs_dict_append(mn, "emoji", eid);
314+                                mn = xs_dict_append(mn, "emoji_url", url);
315+                            }
316+
317+                            if (xs_is_emoji((utf = xs_utf8_dec(&content)))) {
318+                                xs *s1 = xs_fmt("&#%d;", utf);
319+                                mn = xs_dict_append(mn, "name", s1);
320+                            }
321+                        }
322+                    }
323                 }
324 
325                 out = xs_list_append(out, mn);
326@@ -2480,19 +2647,33 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
327     if (strcmp(cmd, "/v1/custom_emojis") == 0) { /** **/
328         xs *emo = emojis();
329         xs *list = xs_list_new();
330-        int c = 0;
331         const xs_str *k;
332         const xs_val *v;
333-        while(xs_dict_next(emo, &k, &v, &c)) {
334+        xs_dict_foreach(emo, k, v) {
335             xs *current = xs_dict_new();
336-            if (xs_startswith(v, "https://") && xs_startswith((xs_mime_by_ext(v)), "image/")) {
337+            if ((xs_startswith(v, "https://") && xs_startswith((xs_mime_by_ext(v)), "image/")) || xs_type(v) == XSTYPE_DICT) {
338                 /* remove first and last colon */
339-                xs *shortcode = xs_replace(k, ":", "");
340-                current = xs_dict_append(current, "shortcode", shortcode);
341-                current = xs_dict_append(current, "url", v);
342-                current = xs_dict_append(current, "static_url", v);
343-                current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE));
344-                list = xs_list_append(list, current);
345+                if (xs_type(v) == XSTYPE_DICT) {
346+                    const char *v2;
347+                    const char *cat = k;
348+                    xs_dict_foreach(v, k, v2) {
349+                        xs *shortcode = xs_replace(k, ":", "");
350+                        current = xs_dict_append(current, "shortcode", shortcode);
351+                        current = xs_dict_append(current, "url", v2);
352+                        current = xs_dict_append(current, "static_url", v2);
353+                        current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE));
354+                        current = xs_dict_append(current, "category", cat);
355+                        list = xs_list_append(list, current);
356+                    }
357+                }
358+                else {
359+                    xs *shortcode = xs_replace(k, ":", "");
360+                    current = xs_dict_append(current, "shortcode", shortcode);
361+                    current = xs_dict_append(current, "url", v);
362+                    current = xs_dict_append(current, "static_url", v);
363+                    current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE));
364+                    list = xs_list_append(list, current);
365+                }
366             }
367         }
368         *body  = xs_json_dumps(list, 0);
369@@ -2594,6 +2775,11 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
370                 "\"max_expiration\":2629746,"
371                 "\"max_options\":8,\"min_expiration\":300}");
372             cfg = xs_dict_append(cfg, "polls", d14);
373+
374+
375+            xs *d15 = xs_json_loads("{\"max_reactions\":50}");
376+                cfg = xs_dict_append(cfg, "reactions", d15);
377+
378         }
379 
380         ins = xs_dict_append(ins, "configuration", cfg);
381@@ -2680,8 +2866,6 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
382                         /* return ancestors and children */
383                         xs *anc = xs_list_new();
384                         xs *des = xs_list_new();
385-                        xs_list *p;
386-                        const xs_str *v;
387                         char pid[MD5_HEX_SIZE];
388 
389                         /* build the [grand]parent list, moving up */
390@@ -2701,21 +2885,9 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
391                         }
392 
393                         /* build the children list */
394-                        xs *children = object_children(xs_dict_get(msg, "id"));
395-                        p = children;
396-
397-                        while (xs_list_iter(&p, &v)) {
398-                            xs *m2 = NULL;
399-
400-                            if (valid_status(timeline_get_by_md5(&snac1, v, &m2))) {
401-                                if (xs_is_null(xs_dict_get(m2, "name"))) {
402-                                    xs *st = mastoapi_status(&snac1, m2);
403-
404-                                    if (st)
405-                                        des = xs_list_append(des, st);
406-                                }
407-                            }
408-                        }
409+                        xs *childs = build_childrens(msg, &snac1);
410+                        if (xs_list_len(childs) > 0)
411+                            des = xs_list_cat(des, childs);
412 
413                         out = xs_dict_new();
414                         out = xs_dict_append(out, "ancestors",   anc);
415@@ -3044,7 +3216,10 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
416             xs *app  = xs_dict_new();
417             xs *id   = xs_replace_i(tid(0), ".", "");
418             xs *csec = random_str();
419-            xs *vkey = random_str();
420+            xs *vkey = xs_dup(xs_dict_get(srv_config, "vkey"));
421+            if (vkey == NULL)
422+                vkey = random_str();
423+
424             xs *cid  = NULL;
425 
426             /* pick a non-existent random cid */
427@@ -3216,7 +3391,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
428 
429                         if (n_msg != NULL) {
430                             enqueue_message(&snac, n_msg);
431-                            timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 1);
432+                            timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 1, msg);
433 
434                             out = mastoapi_status(&snac, msg);
435                         }
436@@ -3231,13 +3406,36 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
437                             out = mastoapi_status(&snac, msg);
438                         }
439                     }
440+                    else
441+                    if (strcmp(op, "react") == 0) { /** **/
442+                        const char *eid = xs_list_get(l, 5);
443+                        xs *n_msg = msg_emoji_init(&snac, id, eid);
444+                        if (n_msg)
445+                            out = mastoapi_status(&snac, n_msg);
446+                    }
447+                    else
448+                    if (strcmp(op, "unreact") == 0) { /** **/
449+                        const char *eid = xs_list_get(l, 5);
450+                        xs *content = xs_fmt("%s", eid);
451+
452+                        if (eid) {
453+                            xs *n_msg = msg_emoji_unreact(&snac, id, content);
454+
455+                            if (n_msg != NULL) {
456+                                enqueue_message(&snac, n_msg);
457+
458+                                out = mastoapi_status(&snac, msg);
459+                            }
460+                        }
461+                    }
462+
463                     else
464                     if (strcmp(op, "reblog") == 0) { /** **/
465                         xs *n_msg = msg_admiration(&snac, id, "Announce");
466 
467                         if (n_msg != NULL) {
468                             enqueue_message(&snac, n_msg);
469-                            timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 0);
470+                            timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 0, msg);
471 
472                             out = mastoapi_status(&snac, msg);
473                         }
474@@ -3824,7 +4022,7 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
475             if (valid_status(object_get_by_md5(p, &obj))) {
476                 const char *id = xs_dict_get(obj, "id");
477 
478-                if (xs_is_string(id) && xs_startswith(id, snac.actor)) {
479+                if (xs_is_string(id) && is_msg_mine(&snac, id)) {
480                     xs *out = mastoapi_status(&snac, obj);
481 
482                     xs *msg = msg_delete(&snac, id);
+219, -207
   1@@ -8,694 +8,694 @@ msgstr ""
   2 "Language: cs\n"
   3 "Content-Type: text/plain; charset=UTF-8\n"
   4 
   5-#: html.c:440
   6+#: html.c:534
   7 msgid "Sensitive content: "
   8 msgstr "Citlivý obsah: "
   9 
  10-#: html.c:448
  11+#: html.c:542
  12 msgid "Sensitive content description"
  13-msgstr "Varování k citlivému obsahu"
  14+msgstr "Varování o citlivém obsahu"
  15 
  16 msgid "Only for mentioned people: "
  17 msgstr "Pouze pro zmíněné osoby:"
  18 
  19-#: html.c:514
  20+#: html.c:570
  21 msgid "Reply to (URL): "
  22 msgstr "Odpovědět na (URL):"
  23 
  24-#: html.c:523
  25+#: html.c:579
  26 msgid "Don't send, but store as a draft"
  27 msgstr "Nesdílet, pouze uložit do rozepsaných"
  28 
  29-#: html.c:524
  30+#: html.c:580
  31 msgid "Draft:"
  32 msgstr "Rozepsané:"
  33 
  34-#: html.c:614
  35+#: html.c:670
  36 msgid "Attachments..."
  37 msgstr "Přílohy..."
  38 
  39-#: html.c:637
  40+#: html.c:693
  41 msgid "File:"
  42 msgstr "Soubor:"
  43 
  44-#: html.c:641
  45+#: html.c:697
  46 msgid "Clear this field to delete the attachment"
  47 msgstr "Pro smazání přilohy vymažte toto pole"
  48 
  49-#: html.c:650 html.c:675
  50+#: html.c:706 html.c:731
  51 msgid "Attachment description"
  52 msgstr "Popisek přílohy"
  53 
  54-#: html.c:686
  55+#: html.c:742
  56 msgid "Poll..."
  57 msgstr "Anketa..."
  58 
  59-#: html.c:688
  60+#: html.c:744
  61 msgid "Poll options (one per line, up to 8):"
  62 msgstr "Možnosti ankety (jedna na řádek, max 8):"
  63 
  64-#: html.c:700
  65+#: html.c:756
  66 msgid "One choice"
  67 msgstr "Vyber jednu"
  68 
  69-#: html.c:703
  70+#: html.c:759
  71 msgid "Multiple choices"
  72 msgstr "Vyber více možností"
  73 
  74-#: html.c:709
  75+#: html.c:765
  76 msgid "End in 5 minutes"
  77 msgstr "Konec za 5 minut"
  78 
  79-#: html.c:713
  80+#: html.c:769
  81 msgid "End in 1 hour"
  82 msgstr "Konec za 1 hodinu"
  83 
  84-#: html.c:716
  85+#: html.c:772
  86 msgid "End in 1 day"
  87 msgstr "Konec za 1 den"
  88 
  89-#: html.c:724
  90+#: html.c:780
  91 msgid "Post"
  92 msgstr "Poslat"
  93 
  94-#: html.c:826 html.c:833
  95+#: html.c:882 html.c:889
  96 msgid "Site description"
  97 msgstr "Popisek stránky"
  98 
  99-#: html.c:844
 100+#: html.c:900
 101 msgid "Admin email"
 102 msgstr "Email administrátora"
 103 
 104-#: html.c:857
 105+#: html.c:913
 106 msgid "Admin account"
 107 msgstr "Účet adminitrátora"
 108 
 109-#: html.c:922 html.c:1278
 110+#: html.c:978 html.c:1334
 111 #, c-format
 112 msgid "%d following, %d followers"
 113 msgstr "%d sledovaných, %d sledujících"
 114 
 115-#: html.c:1019
 116+#: html.c:1075
 117 msgid "RSS"
 118 msgstr "RSS"
 119 
 120-#: html.c:1024 html.c:1063
 121+#: html.c:1080 html.c:1119
 122 msgid "private"
 123 msgstr "soukromé"
 124 
 125-#: html.c:1059
 126+#: html.c:1115
 127 msgid "public"
 128 msgstr "veřejné"
 129 
 130-#: html.c:1067
 131+#: html.c:1123
 132 msgid "notifications"
 133 msgstr "upozornění"
 134 
 135-#: html.c:1072
 136+#: html.c:1128
 137 msgid "people"
 138 msgstr "lidé"
 139 
 140-#: html.c:1077
 141+#: html.c:1133
 142 msgid "instance"
 143 msgstr "instance"
 144 
 145-#: html.c:1086
 146+#: html.c:1142
 147 msgid ""
 148 "Search posts by URL or content (regular expression), @user@host accounts, or "
 149 "#tag"
 150 msgstr ""
 151 "Vyhledat příspěvek podle URL (regex), @uživatel@instance účtu, nebo #tagu"
 152 
 153-#: html.c:1087
 154+#: html.c:1143
 155 msgid "Content search"
 156 msgstr "Hledání obsahu"
 157 
 158-#: html.c:1213
 159+#: html.c:1269
 160 msgid "verified link"
 161 msgstr "ověřený odkaz"
 162 
 163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
 164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
 165 msgid "Location: "
 166 msgstr "Místo: "
 167 
 168-#: html.c:1302
 169+#: html.c:1358
 170 msgid "New Post..."
 171 msgstr "Nový příspěvek..."
 172 
 173-#: html.c:1304
 174+#: html.c:1360
 175 msgid "What's on your mind?"
 176 msgstr "Co se vám honí hlavou?"
 177 
 178-#: html.c:1313
 179+#: html.c:1369
 180 msgid "Operations..."
 181 msgstr "Operace..."
 182 
 183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
 184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
 185 msgid "Follow"
 186 msgstr "Sledovat"
 187 
 188-#: html.c:1330
 189+#: html.c:1386
 190 msgid "(by URL or user@host)"
 191 msgstr "(podle URL nebo @uživatel@instance)"
 192 
 193-#: html.c:1345 html.c:1925 html.c:4766
 194+#: html.c:1401 html.c:2003 html.c:5210
 195 msgid "Boost"
 196 msgstr "Boostit"
 197 
 198-#: html.c:1347 html.c:1364
 199+#: html.c:1403 html.c:1420 html.c:1442
 200 msgid "(by URL)"
 201 msgstr "(podle URL)"
 202 
 203-#: html.c:1362 html.c:1904 html.c:4757
 204+#: html.c:1418 html.c:1982 html.c:5201
 205 msgid "Like"
 206 msgstr "Líbí"
 207 
 208-#: html.c:1490
 209+#: html.c:1568
 210 msgid "User Settings..."
 211 msgstr "Nastavení..."
 212 
 213-#: html.c:1499
 214+#: html.c:1577
 215 msgid "Display name:"
 216 msgstr "Jméno:"
 217 
 218-#: html.c:1505
 219+#: html.c:1583
 220 msgid "Your name"
 221 msgstr "Vaše jméno"
 222 
 223-#: html.c:1507
 224+#: html.c:1585
 225 msgid "Avatar: "
 226-msgstr "Avatar: "
 227+msgstr "Profilový obrázek: "
 228 
 229-#: html.c:1515
 230+#: html.c:1593
 231 msgid "Delete current avatar"
 232-msgstr "Smazat současný avatar"
 233+msgstr "Smazat profilový obrázek"
 234 
 235-#: html.c:1517
 236+#: html.c:1595
 237 msgid "Header image (banner): "
 238 msgstr "Obrázek v záhlaví profilu: "
 239 
 240-#: html.c:1525
 241+#: html.c:1603
 242 msgid "Delete current header image"
 243-msgstr "Smazat současný obrázek v záhlaví"
 244+msgstr "Smazat obrázek v záhlaví"
 245 
 246-#: html.c:1527
 247+#: html.c:1605
 248 msgid "Bio:"
 249 msgstr "Bio:"
 250 
 251-#: html.c:1533
 252+#: html.c:1611
 253 msgid "Write about yourself here..."
 254-msgstr "Napište sem něco o sobě..."
 255+msgstr "Napište něco o sobě..."
 256 
 257-#: html.c:1542
 258+#: html.c:1620
 259 msgid "Always show sensitive content"
 260-msgstr "Vždy zobrazit příspěvky s varováním o citlivém obsahu"
 261+msgstr "Rozbalit citlivé příspěvky"
 262 
 263-#: html.c:1544
 264+#: html.c:1622
 265 msgid "Email address for notifications:"
 266 msgstr "Emailová adresa pro upozornění"
 267 
 268-#: html.c:1552
 269+#: html.c:1630
 270 msgid "Telegram notifications (bot key and chat id):"
 271 msgstr "Upozornění na Telegram (bot klíč a chat id):"
 272 
 273-#: html.c:1566
 274+#: html.c:1644
 275 msgid "ntfy notifications (ntfy server and token):"
 276 msgstr "ntfy notifikace (ntfy server a token):"
 277 
 278-#: html.c:1588
 279+#: html.c:1666
 280 msgid "Maximum days to keep posts (0: server settings):"
 281 msgstr "Životnost příspěvků ve dnech (0: nastavení serveru):"
 282 
 283-#: html.c:1602
 284+#: html.c:1680
 285 msgid "Drop direct messages from people you don't follow"
 286 msgstr "Zahodit soukromé zprávy od lidí, které nesledujete"
 287 
 288-#: html.c:1611
 289+#: html.c:1689
 290 msgid "This account is a bot"
 291-msgstr "Tenhle účet je robot"
 292+msgstr "Tento účet je robotem"
 293 
 294-#: html.c:1620
 295+#: html.c:1698
 296 msgid "Auto-boost all mentions to this account"
 297-msgstr "Automaticky boostovat všechny zmíňky o tomto účtu"
 298+msgstr "Automaticky boostit všechna zmínění tohoto účtu"
 299 
 300-#: html.c:1629
 301+#: html.c:1707
 302 msgid "This account is private (posts are not shown through the web)"
 303 msgstr ""
 304 "Tento účet je soukromý (příspěvky nejsou zobrazitelné napříč internetem)"
 305 
 306-#: html.c:1639
 307+#: html.c:1717
 308 msgid "Collapse top threads by default"
 309-msgstr "Zobrazovat vlákna složená"
 310+msgstr "Složit vlákna"
 311 
 312-#: html.c:1648
 313+#: html.c:1726
 314 msgid "Follow requests must be approved"
 315-msgstr "Žádosti o sledování je nutno manuálně potvrdit"
 316+msgstr "Žádosti o sledování je nutné manuálně potvrdit"
 317 
 318-#: html.c:1657
 319+#: html.c:1735
 320 msgid "Publish follower and following metrics"
 321 msgstr "Zobrazit údaje o počtu sledovaných a sledujících"
 322 
 323-#: html.c:1659
 324+#: html.c:1737
 325 msgid "Current location:"
 326 msgstr "Geolokace:"
 327 
 328-#: html.c:1673
 329+#: html.c:1751
 330 msgid "Profile metadata (key=value pairs in each line):"
 331 msgstr "Metadata profilu (klíč=hodnota na jeden řádek):"
 332 
 333-#: html.c:1684
 334+#: html.c:1762
 335 msgid "Web interface language:"
 336 msgstr "Jazyk rozhraní:"
 337 
 338-#: html.c:1703
 339+#: html.c:1781
 340 msgid "New password:"
 341 msgstr "Nové heslo:"
 342 
 343-#: html.c:1710
 344+#: html.c:1788
 345 msgid "Repeat new password:"
 346-msgstr "Zopakujte nové heslo:"
 347+msgstr "Nové heslo znovu:"
 348 
 349-#: html.c:1720
 350+#: html.c:1798
 351 msgid "Update user info"
 352 msgstr "Uložit"
 353 
 354-#: html.c:1731
 355+#: html.c:1809
 356 msgid "Followed hashtags..."
 357 msgstr "Sledované hashtagy..."
 358 
 359-#: html.c:1733 html.c:1766
 360+#: html.c:1811 html.c:1844
 361 msgid "One hashtag per line"
 362 msgstr "Jeden hashtag na řádek"
 363 
 364-#: html.c:1755 html.c:1787
 365+#: html.c:1833 html.c:1865
 366 msgid "Update hashtags"
 367 msgstr "Aktualizovat hashtagy"
 368 
 369-#: html.c:1904
 370+#: html.c:1982
 371 msgid "Say you like this post"
 372 msgstr "Dát najevo, že se vám příspěvek líbí"
 373 
 374-#: html.c:1909 html.c:4775
 375+#: html.c:1987 html.c:5219
 376 msgid "Unlike"
 377 msgstr "Nelíbí"
 378 
 379-#: html.c:1909
 380+#: html.c:1987
 381 msgid "Nah don't like it that much"
 382 msgstr "Vlastně se mi to zas tak nelíbí"
 383 
 384-#: html.c:1915 html.c:4912
 385+#: html.c:1993 html.c:5356
 386 msgid "Unpin"
 387 msgstr "Odepnout"
 388 
 389-#: html.c:1915
 390+#: html.c:1993
 391 msgid "Unpin this post from your timeline"
 392 msgstr "Odepnout tento příspěvek z vaší osy"
 393 
 394-#: html.c:1918 html.c:4907
 395+#: html.c:1996 html.c:5351
 396 msgid "Pin"
 397 msgstr "Připnout"
 398 
 399-#: html.c:1918
 400+#: html.c:1996
 401 msgid "Pin this post to the top of your timeline"
 402 msgstr "Připnout tento příspěvěk na začátek vaší osy"
 403 
 404-#: html.c:1925
 405+#: html.c:2003
 406 msgid "Announce this post to your followers"
 407 msgstr "Ukázat tento příspěvek vaším sledujícím"
 408 
 409-#: html.c:1930 html.c:4783
 410+#: html.c:2008 html.c:5227
 411 msgid "Unboost"
 412 msgstr "Odboostit"
 413 
 414-#: html.c:1930
 415+#: html.c:2008
 416 msgid "I regret I boosted this"
 417-msgstr "Boostit to byl blbej nápad"
 418+msgstr "Boostit to byl špatný nápad"
 419 
 420-#: html.c:1936 html.c:4922
 421+#: html.c:2014 html.c:5366
 422 msgid "Unbookmark"
 423 msgstr "Zahodit"
 424 
 425-#: html.c:1936
 426+#: html.c:2014
 427 msgid "Delete this post from your bookmarks"
 428 msgstr "Odstranit tento příspěvěk ze záložek"
 429 
 430-#: html.c:1939 html.c:4917
 431+#: html.c:2017 html.c:5361
 432 msgid "Bookmark"
 433 msgstr "Uložit"
 434 
 435-#: html.c:1939
 436+#: html.c:2017
 437 msgid "Add this post to your bookmarks"
 438 msgstr "Uložit tento příspěvek do záložek"
 439 
 440-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
 441+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
 442 msgid "Unfollow"
 443 msgstr "Přestat sledovat"
 444 
 445-#: html.c:1945 html.c:3387
 446+#: html.c:2023 html.c:3763 html.c:4042
 447 msgid "Stop following this user's activity"
 448 msgstr "Přestat sledovat tohoto uživatele"
 449 
 450-#: html.c:1949 html.c:3401
 451+#: html.c:2027 html.c:3777 html.c:4044
 452 msgid "Start following this user's activity"
 453 msgstr "Začít sledovat tohoto uživatele"
 454 
 455-#: html.c:1955 html.c:4860
 456+#: html.c:2033 html.c:5304
 457 msgid "Unfollow Group"
 458 msgstr "Přestat Sledovat Skupinu"
 459 
 460-#: html.c:1956
 461+#: html.c:2034
 462 msgid "Stop following this group or channel"
 463 msgstr "Přestat sledovat tuto skupinu nebo kanál"
 464 
 465-#: html.c:1960 html.c:4847
 466+#: html.c:2038 html.c:5291
 467 msgid "Follow Group"
 468 msgstr "Sledovat Skupinu"
 469 
 470-#: html.c:1961
 471+#: html.c:2039
 472 msgid "Start following this group or channel"
 473 msgstr "Začít sledovat tuto skupinu nebo kanál"
 474 
 475-#: html.c:1966 html.c:3423 html.c:4791
 476+#: html.c:2044 html.c:3799 html.c:5235
 477 msgid "MUTE"
 478 msgstr "ZTIŠIT"
 479 
 480-#: html.c:1967
 481+#: html.c:2045
 482 msgid "Block any activity from this user forever"
 483 msgstr "Jednou provždy zablokovat všechno od tohoto uživatele"
 484 
 485-#: html.c:1972 html.c:3405 html.c:4877
 486+#: html.c:2050 html.c:3781 html.c:5321
 487 msgid "Delete"
 488 msgstr "Smazat"
 489 
 490-#: html.c:1972
 491+#: html.c:2050
 492 msgid "Delete this post"
 493 msgstr "Smazat tento příspěvek"
 494 
 495-#: html.c:1975 html.c:4799
 496+#: html.c:2053 html.c:5243
 497 msgid "Hide"
 498 msgstr "Schovat"
 499 
 500-#: html.c:1975
 501+#: html.c:2053
 502 msgid "Hide this post and its children"
 503 msgstr "Schovat tento příspěvek a příspěvky pod ním"
 504 
 505-#: html.c:2017
 506+#: html.c:2095
 507 msgid "Edit..."
 508 msgstr "Editovat..."
 509 
 510-#: html.c:2039
 511+#: html.c:2133
 512 msgid "Reply..."
 513 msgstr "Odpovědět..."
 514 
 515-#: html.c:2090
 516+#: html.c:2184
 517 msgid "Truncated (too deep)"
 518 msgstr "Ořezáno (moc hluboké)"
 519 
 520-#: html.c:2108
 521+#: html.c:2202
 522 msgid "follows you"
 523 msgstr "sleduje vás"
 524 
 525-#: html.c:2182
 526+#: html.c:2276
 527 msgid "Pinned"
 528 msgstr "Připnuto"
 529 
 530-#: html.c:2190
 531+#: html.c:2284
 532 msgid "Bookmarked"
 533 msgstr "Zazáložkováno"
 534 
 535-#: html.c:2198
 536+#: html.c:2292
 537 msgid "Poll"
 538 msgstr "Anketa"
 539 
 540-#: html.c:2205
 541+#: html.c:2299
 542 msgid "Voted"
 543 msgstr "Odhlasováno"
 544 
 545-#: html.c:2214
 546+#: html.c:2308
 547 msgid "Event"
 548 msgstr "Událost"
 549 
 550-#: html.c:2246 html.c:2275
 551+#: html.c:2340 html.c:2369
 552 msgid "boosted"
 553-msgstr "boostuje"
 554+msgstr "boostí"
 555 
 556-#: html.c:2289
 557+#: html.c:2383
 558 msgid "in reply to"
 559 msgstr "odpověď pro"
 560 
 561-#: html.c:2345
 562+#: html.c:2439
 563 msgid " [SENSITIVE CONTENT]"
 564 msgstr "[CITLIVÝ OBSAH]"
 565 
 566-#: html.c:2512
 567+#: html.c:2796
 568 msgid "Vote"
 569 msgstr "Hlasuj"
 570 
 571-#: html.c:2522
 572+#: html.c:2806
 573 msgid "Closed"
 574 msgstr "Uzavřeno"
 575 
 576-#: html.c:2547
 577+#: html.c:2831
 578 msgid "Closes in"
 579 msgstr "Končí za"
 580 
 581-#: html.c:2627
 582+#: html.c:2911
 583 msgid "Video"
 584 msgstr "Video"
 585 
 586-#: html.c:2642
 587+#: html.c:2926
 588 msgid "Audio"
 589 msgstr "Audio"
 590 
 591-#: html.c:2670
 592+#: html.c:2954
 593 msgid "Attachment"
 594 msgstr "Příloha"
 595 
 596-#: html.c:2684
 597+#: html.c:2968
 598 msgid "Alt..."
 599 msgstr "Popisek..."
 600 
 601-#: html.c:2697
 602+#: html.c:2981
 603 msgid "Source channel or community"
 604-msgstr ""
 605+msgstr "Původní kanál nebo komunita"
 606 
 607-#: html.c:2791
 608+#: html.c:3075
 609 msgid "Time: "
 610 msgstr "Čas:"
 611 
 612-#: html.c:2872
 613+#: html.c:3156
 614 msgid "Older..."
 615 msgstr "Starší..."
 616 
 617-#: html.c:2974
 618+#: html.c:3258
 619 msgid "about this site"
 620 msgstr "o této stránce"
 621 
 622-#: html.c:2976
 623+#: html.c:3260
 624 msgid "powered by "
 625 msgstr "pohání "
 626 
 627-#: html.c:3041
 628+#: html.c:3329
 629 msgid "Dismiss"
 630 msgstr "Zahodit"
 631 
 632-#: html.c:3058
 633+#: html.c:3346
 634 #, c-format
 635 msgid "Timeline for list '%s'"
 636 msgstr "Časová osa pro seznam '%s'"
 637 
 638-#: html.c:3077 html.c:4169
 639+#: html.c:3365 html.c:4589
 640 msgid "Pinned posts"
 641 msgstr "Připnuté příspěvky"
 642 
 643-#: html.c:3089 html.c:4184
 644+#: html.c:3377 html.c:4604
 645 msgid "Bookmarked posts"
 646 msgstr "Záložky"
 647 
 648-#: html.c:3101 html.c:4199
 649+#: html.c:3389 html.c:4619
 650 msgid "Post drafts"
 651 msgstr "Rozepsané příspěvky"
 652 
 653-#: html.c:3177
 654+#: html.c:3465
 655 msgid "No more unseen posts"
 656-msgstr "Nic víc nového"
 657+msgstr "Nic nového"
 658 
 659-#: html.c:3181 html.c:3290
 660+#: html.c:3469 html.c:3578
 661 msgid "Back to top"
 662 msgstr "Zpátky nahoru"
 663 
 664-#: html.c:3243
 665+#: html.c:3531
 666 msgid "History"
 667 msgstr "Historie"
 668 
 669-#: html.c:3295 html.c:3734
 670+#: html.c:3583 html.c:4149
 671 msgid "More..."
 672 msgstr "Více..."
 673 
 674-#: html.c:3391 html.c:4813
 675+#: html.c:3767 html.c:5257
 676 msgid "Unlimit"
 677 msgstr "Povolit boosty"
 678 
 679-#: html.c:3392
 680+#: html.c:3768
 681 msgid "Allow announces (boosts) from this user"
 682 msgstr "Zobrazovat boosty od tohoto uživatele"
 683 
 684-#: html.c:3395 html.c:4809
 685+#: html.c:3771 html.c:5253
 686 msgid "Limit"
 687 msgstr "Skrýt boosty"
 688 
 689-#: html.c:3396
 690+#: html.c:3772
 691 msgid "Block announces (boosts) from this user"
 692 msgstr "Ztišit boosty od tohoto uživatele"
 693 
 694-#: html.c:3405
 695+#: html.c:3781
 696 msgid "Delete this user"
 697 msgstr "Smazat tohoto uživatele"
 698 
 699-#: html.c:3410 html.c:4927
 700+#: html.c:3786 html.c:5371
 701 msgid "Approve"
 702 msgstr "Schválit"
 703 
 704-#: html.c:3411
 705+#: html.c:3787
 706 msgid "Approve this follow request"
 707 msgstr "Schválit žádost o sledování"
 708 
 709-#: html.c:3414 html.c:4951
 710+#: html.c:3790 html.c:5395
 711 msgid "Discard"
 712 msgstr "Zahodit"
 713 
 714-#: html.c:3414
 715+#: html.c:3790
 716 msgid "Discard this follow request"
 717 msgstr "Zahodit žádost o sledování"
 718 
 719-#: html.c:3419 html.c:4795
 720+#: html.c:3795 html.c:5239
 721 msgid "Unmute"
 722 msgstr "Zrušit ztišení"
 723 
 724-#: html.c:3420
 725+#: html.c:3796
 726 msgid "Stop blocking activities from this user"
 727 msgstr "Přestat blokovat tohoto uživatele"
 728 
 729-#: html.c:3424
 730+#: html.c:3800
 731 msgid "Block any activity from this user"
 732 msgstr "Zablokovat všechno od tohoto uživatele"
 733 
 734-#: html.c:3432
 735+#: html.c:3808
 736 msgid "Direct Message..."
 737 msgstr "Soukomá zpráva..."
 738 
 739-#: html.c:3467
 740+#: html.c:3843
 741 msgid "Pending follow confirmations"
 742 msgstr "Dosud nepotvrzené žádosti o sledování"
 743 
 744-#: html.c:3471
 745+#: html.c:3847
 746 msgid "People you follow"
 747 msgstr "Lidé, které sledujete"
 748 
 749-#: html.c:3472
 750+#: html.c:3848
 751 msgid "People that follow you"
 752 msgstr "Lidé, kteří vás sledují"
 753 
 754-#: html.c:3511
 755+#: html.c:3887
 756 msgid "Clear all"
 757 msgstr "Smazat vše"
 758 
 759-#: html.c:3571
 760+#: html.c:3951
 761 msgid "Mention"
 762 msgstr "Zmínil vás"
 763 
 764-#: html.c:3574
 765+#: html.c:3954
 766 msgid "Finished poll"
 767 msgstr "Ukončená anketa"
 768 
 769-#: html.c:3590
 770+#: html.c:3979
 771 msgid "Follow Request"
 772 msgstr "Žádost o sledování"
 773 
 774-#: html.c:3674
 775+#: html.c:4089
 776 msgid "Context"
 777 msgstr "Kontext"
 778 
 779-#: html.c:3692
 780+#: html.c:4107
 781 msgid "New"
 782 msgstr "Nové"
 783 
 784-#: html.c:3707
 785+#: html.c:4122
 786 msgid "Already seen"
 787-msgstr "Zobrazeno dříve"
 788+msgstr "Již viděno"
 789 
 790-#: html.c:3722
 791+#: html.c:4137
 792 msgid "None"
 793 msgstr "Nic"
 794 
 795-#: html.c:3994
 796+#: html.c:4414
 797 #, c-format
 798 msgid "Search results for account %s"
 799 msgstr "Výsledky vyhledávání účtu %s"
 800 
 801-#: html.c:4001
 802+#: html.c:4421
 803 #, c-format
 804 msgid "Account %s not found"
 805 msgstr "Účet %s nenalezen"
 806 
 807-#: html.c:4032
 808+#: html.c:4452
 809 #, c-format
 810 msgid "Search results for tag %s"
 811 msgstr "Výsledky k tagu %s"
 812 
 813-#: html.c:4032
 814+#: html.c:4452
 815 #, c-format
 816 msgid "Nothing found for tag %s"
 817 msgstr "Nic k tagu %s"
 818 
 819-#: html.c:4048
 820+#: html.c:4468
 821 #, c-format
 822 msgid "Search results for '%s' (may be more)"
 823 msgstr "Výsledky vyhledávání pro '%s' (může toho být víc)"
 824 
 825-#: html.c:4051
 826+#: html.c:4471
 827 #, c-format
 828 msgid "Search results for '%s'"
 829 msgstr "Výsledky vyhledávání pro '%s'"
 830 
 831-#: html.c:4054
 832+#: html.c:4474
 833 #, c-format
 834 msgid "No more matches for '%s'"
 835 msgstr "Nic víc pro '%s'"
 836 
 837-#: html.c:4056
 838+#: html.c:4476
 839 #, c-format
 840 msgid "Nothing found for '%s'"
 841 msgstr "Žádný výsledek pro '%s'"
 842 
 843-#: html.c:4154
 844+#: html.c:4574
 845 msgid "Showing instance timeline"
 846 msgstr "Časová osa místní instance"
 847 
 848-#: html.c:4237
 849+#: html.c:4657
 850 #, c-format
 851 msgid "Showing timeline for list '%s'"
 852 msgstr "Časová osa pro seznam '%s'"
 853 
 854-#: httpd.c:258
 855+#: httpd.c:259
 856 #, c-format
 857 msgid "Search results for tag #%s"
 858 msgstr "Výsledky vyhledávání tagu #%s"
 859 
 860-#: httpd.c:267
 861+#: httpd.c:268
 862 msgid "Recent posts by users in this instance"
 863 msgstr "Nedávné příspěvky od uživatelů této instance"
 864 
 865-#: html.c:1764
 866+#: html.c:1842
 867 msgid "Blocked hashtags..."
 868 msgstr "Blokované hashtagy..."
 869 
 870-#: html.c:518
 871+#: html.c:574
 872 msgid "Optional URL to reply to"
 873 msgstr "URL adresa příspěvku, na který odpovědět"
 874 
 875-#: html.c:695
 876+#: html.c:751
 877 msgid ""
 878 "Option 1...\n"
 879 "Option 2...\n"
 880@@ -707,94 +707,106 @@ msgstr ""
 881 "Možnost 3...\n"
 882 "..."
 883 
 884-#: html.c:1558
 885+#: html.c:1636
 886 msgid "Bot API key"
 887 msgstr "API klíč Bota"
 888 
 889-#: html.c:1564
 890+#: html.c:1642
 891 msgid "Chat id"
 892 msgstr "Chat id"
 893 
 894-#: html.c:1572
 895+#: html.c:1650
 896 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
 897 msgstr "ntfy server - celá URL adresa (např: https://ntfy.sh/VaseTema)"
 898 
 899-#: html.c:1578
 900+#: html.c:1656
 901 msgid "ntfy token - if needed"
 902 msgstr "ntfy token - pokud je zapotřebí"
 903 
 904-#: html.c:3078
 905+#: html.c:3366
 906 msgid "pinned"
 907 msgstr "připnuté"
 908 
 909-#: html.c:3090
 910+#: html.c:3378
 911 msgid "bookmarks"
 912 msgstr "záložky"
 913 
 914-#: html.c:3102
 915+#: html.c:3390
 916 msgid "drafts"
 917 msgstr "rozepsané"
 918 
 919-#: html.c:584
 920+#: html.c:640
 921 msgid "Scheduled post..."
 922 msgstr "Naplánovat příspěvek..."
 923 
 924 msgid "Post date and time:"
 925 msgstr "Den a čas:"
 926 
 927-#: html.c:3113 html.c:4214
 928+#: html.c:3401 html.c:4634
 929 msgid "Scheduled posts"
 930 msgstr "Naplánované příspěvky"
 931 
 932-#: html.c:3114
 933+#: html.c:3402
 934 msgid "scheduled posts"
 935 msgstr "naplánované příspěvky"
 936 
 937-#: html.c:578
 938+#: html.c:634
 939 #, c-format
 940 msgid "Post date and time (timezone: %s):"
 941 msgstr "Den a čas (časové pásmo: %s)"
 942 
 943-#: html.c:1689
 944+#: html.c:1767
 945 msgid "Time zone:"
 946 msgstr "Časové pásmo:"
 947 
 948-#: html.c:559
 949+#: html.c:615
 950 msgid "Language:"
 951 msgstr "Jazyk:"
 952 
 953-#: html.c:1580
 954+#: html.c:1658
 955 msgid "Notify webhook:"
 956 msgstr "Notify webhook:"
 957 
 958-#: html.c:1586
 959+#: html.c:1664
 960 msgid "http://example.com/webhook"
 961 msgstr "http://priklad.cz/webhook"
 962 
 963-#: html.c:1694
 964+#: html.c:1772
 965 msgid "Languages you usually post in:"
 966 msgstr "Jazyky ve kterých píšete:"
 967 
 968-#: html.c:1700
 969+#: html.c:1778
 970 msgid "en fr es de_AT"
 971 msgstr "cs en fr de_AT"
 972 
 973-#: html.c:460
 974+#: html.c:428
 975 msgid "Visibility: "
 976-msgstr "Viditelnost"
 977+msgstr "Viditelnost: "
 978 
 979-#: html.c:468
 980 msgid "Public"
 981 msgstr "Veřejné"
 982 
 983-#: html.c:477
 984 msgid "Unlisted"
 985 msgstr "Neveřejné"
 986 
 987-#: html.c:486
 988 msgid "Followers-only"
 989 msgstr "Pouze pro sledující"
 990 
 991-#: html.c:495
 992 msgid "Direct Message"
 993 msgstr "Soukromá Zpráva"
 994+
 995+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
 996+msgid "EmojiUnreact"
 997+msgstr "EmojiOdebrat"
 998+
 999+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
1000+msgid "EmojiReact"
1001+msgstr "EmojiReakce"
1002+
1003+#: html.c:2115
1004+msgid "Emoji react..."
1005+msgstr "Reagovat emoji..."
1006+
1007+#: html.c:2609
1008+msgid "Emoji reactions: "
1009+msgstr "Emoji reakce: "
+202, -190
  1@@ -7,119 +7,119 @@ msgstr ""
  2 "Language: de_DE\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Sensibler Inhalt: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Beschreibung des sensiblen Inhalts"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Nur für erwähnte Personen: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Antwort an (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Nicht senden, aber als Entwurf speichern"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Entwurf: "
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Anhänge..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Datei:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Feld löschen, um den Anhang zu löschen"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Beschreibung des Anhangs"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Umfrage..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Umfrageoptionen (eine pro Zeile, bis zu 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Einfachauswahl"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Mehrfachauswahl"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Endet in 5 Minuten"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Endet in 1 Stunde"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Endet in 1 Tag"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Beitrag veröffentlichen"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Seitenbeschreibung"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Admin E-Mail"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Admin-Konto"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d Gefolgte, %d Folgende"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "Privat"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "Öffentlich"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "Benachrichtigungen"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "Personen"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "Instanz"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -127,576 +127,576 @@ msgstr ""
150 "Durchsuche Beiträge nach URL oder Inhalt (regulärer Ausdruck), @user@host "
151 "Konten, oder #tag"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Inhaltssuche"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "verifizierter Link"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Standort: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Neuer Beitrag..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Was beschäftigt dich?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Aktionen..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Folgen"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(mit URL oder user@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Boosten"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(mit URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Gefällt mir"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Einstellungen..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Anzeigename:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Dein Name"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Aktuellen Avatar löschen"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Titelbild (Banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Aktuelles Titelbild löschen"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Über dich:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Erzähle etwas von dir..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Sensible Inhalte immer anzeigen"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "E-Mail Adresse für Benachrichtigungen:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Telegram Benachrichtigungen (Bot Schlüssel und Chat ID):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "NTFY Benachrichtigungen (ntfy Server und Token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Aufbewahrungsfrist der Beiträge in Tagen (0 = Serverstandard):"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Blocke Direktnachrichten von Personen denen du nicht folgst"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Dieses Konto ist ein Bot"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Automatisches Boosten bei Erwähnungen dieses Kontos"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr ""
297 "Dieses Konto ist privat (Beiträge werden nicht in der Weboberfläche "
298 "angezeigt)"
299 
300-#: html.c:1639
301+#: html.c:1717
302 msgid "Collapse top threads by default"
303 msgstr "Themen standardmäßig einklappen"
304 
305-#: html.c:1648
306+#: html.c:1726
307 msgid "Follow requests must be approved"
308 msgstr "Folgeanfragen müssen genehmigt werden"
309 
310-#: html.c:1657
311+#: html.c:1735
312 msgid "Publish follower and following metrics"
313 msgstr "Veröffentliche die Anzahl von Followern und Gefolgten."
314 
315-#: html.c:1659
316+#: html.c:1737
317 msgid "Current location:"
318 msgstr "Standort:"
319 
320-#: html.c:1673
321+#: html.c:1751
322 msgid "Profile metadata (key=value pairs in each line):"
323 msgstr "Profil-Metadaten (Begriff=Wert Paare, einer pro Zeile):"
324 
325-#: html.c:1684
326+#: html.c:1762
327 msgid "Web interface language:"
328 msgstr "Sprache der Weboberfläche:"
329 
330-#: html.c:1703
331+#: html.c:1781
332 msgid "New password:"
333 msgstr "Neues Passwort:"
334 
335-#: html.c:1710
336+#: html.c:1788
337 msgid "Repeat new password:"
338 msgstr "Neues Passwort wiederholen:"
339 
340-#: html.c:1720
341+#: html.c:1798
342 msgid "Update user info"
343 msgstr "Benutzerinformationen aktualisieren"
344 
345-#: html.c:1731
346+#: html.c:1809
347 msgid "Followed hashtags..."
348 msgstr "Gefolgte Hashtags..."
349 
350-#: html.c:1733 html.c:1766
351+#: html.c:1811 html.c:1844
352 msgid "One hashtag per line"
353 msgstr "Ein Hashtag pro Zeile"
354 
355-#: html.c:1755 html.c:1787
356+#: html.c:1833 html.c:1865
357 msgid "Update hashtags"
358 msgstr "Hashtags aktualisieren"
359 
360-#: html.c:1904
361+#: html.c:1982
362 msgid "Say you like this post"
363 msgstr "Sag, dass dir dieser Beiträg gefällt"
364 
365-#: html.c:1909 html.c:4775
366+#: html.c:1987 html.c:5219
367 msgid "Unlike"
368 msgstr "Gefällt mir zurücknehmen"
369 
370-#: html.c:1909
371+#: html.c:1987
372 msgid "Nah don't like it that much"
373 msgstr "Nee, gefällt mir nicht so gut"
374 
375-#: html.c:1915 html.c:4912
376+#: html.c:1993 html.c:5356
377 msgid "Unpin"
378 msgstr "Pin entfernen"
379 
380-#: html.c:1915
381+#: html.c:1993
382 msgid "Unpin this post from your timeline"
383 msgstr "Pin für diesen Beitrag aus deiner Zeitleiste entfernen"
384 
385-#: html.c:1918 html.c:4907
386+#: html.c:1996 html.c:5351
387 msgid "Pin"
388 msgstr "Anpinnen"
389 
390-#: html.c:1918
391+#: html.c:1996
392 msgid "Pin this post to the top of your timeline"
393 msgstr "Pinne diesen Beitrag an den Anfang deiner Zeitleiste"
394 
395-#: html.c:1925
396+#: html.c:2003
397 msgid "Announce this post to your followers"
398 msgstr "Diesen Beitrag an deine Follower weiterschicken"
399 
400-#: html.c:1930 html.c:4783
401+#: html.c:2008 html.c:5227
402 msgid "Unboost"
403 msgstr "Boost zurücknehmen"
404 
405-#: html.c:1930
406+#: html.c:2008
407 msgid "I regret I boosted this"
408 msgstr "Ich bedauere, dass ich das weiterverschickt habe"
409 
410-#: html.c:1936 html.c:4922
411+#: html.c:2014 html.c:5366
412 msgid "Unbookmark"
413 msgstr "Lesezeichen entfernen"
414 
415-#: html.c:1936
416+#: html.c:2014
417 msgid "Delete this post from your bookmarks"
418 msgstr "Diesen Beitrag aus den Lesezeichen entfernen"
419 
420-#: html.c:1939 html.c:4917
421+#: html.c:2017 html.c:5361
422 msgid "Bookmark"
423 msgstr "Lesezeichen"
424 
425-#: html.c:1939
426+#: html.c:2017
427 msgid "Add this post to your bookmarks"
428 msgstr "Diesen Beitrag zu deinen Lesezeichen hinzufügen"
429 
430-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
431+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
432 msgid "Unfollow"
433 msgstr "Nicht mehr folgen"
434 
435-#: html.c:1945 html.c:3387
436+#: html.c:2023 html.c:3763 html.c:4042
437 msgid "Stop following this user's activity"
438 msgstr "Aktivitäten dieses Benutzers nicht mehr folgen"
439 
440-#: html.c:1949 html.c:3401
441+#: html.c:2027 html.c:3777 html.c:4044
442 msgid "Start following this user's activity"
443 msgstr "Folge den Aktivitäten dieses Benutzers"
444 
445-#: html.c:1955 html.c:4860
446+#: html.c:2033 html.c:5304
447 msgid "Unfollow Group"
448 msgstr "Der Gruppe nicht mehr folgen"
449 
450-#: html.c:1956
451+#: html.c:2034
452 msgid "Stop following this group or channel"
453 msgstr "Der Gruppe oder dem Kanal nicht mehr folgen"
454 
455-#: html.c:1960 html.c:4847
456+#: html.c:2038 html.c:5291
457 msgid "Follow Group"
458 msgstr "Der Gruppe folgen"
459 
460-#: html.c:1961
461+#: html.c:2039
462 msgid "Start following this group or channel"
463 msgstr "Der Gruppe oder dem Kanal folgen"
464 
465-#: html.c:1966 html.c:3423 html.c:4791
466+#: html.c:2044 html.c:3799 html.c:5235
467 msgid "MUTE"
468 msgstr "Stummschalten"
469 
470-#: html.c:1967
471+#: html.c:2045
472 msgid "Block any activity from this user forever"
473 msgstr "Alle Aktivitäten dieses Benutzers für immer blockieren"
474 
475-#: html.c:1972 html.c:3405 html.c:4877
476+#: html.c:2050 html.c:3781 html.c:5321
477 msgid "Delete"
478 msgstr "Löschen"
479 
480-#: html.c:1972
481+#: html.c:2050
482 msgid "Delete this post"
483 msgstr "Diesen Beitrag löschen"
484 
485-#: html.c:1975 html.c:4799
486+#: html.c:2053 html.c:5243
487 msgid "Hide"
488 msgstr "Verstecken"
489 
490-#: html.c:1975
491+#: html.c:2053
492 msgid "Hide this post and its children"
493 msgstr "Verstecke diesen Beitrag und seine Kommentare"
494 
495-#: html.c:2017
496+#: html.c:2095
497 msgid "Edit..."
498 msgstr "Bearbeiten..."
499 
500-#: html.c:2039
501+#: html.c:2133
502 msgid "Reply..."
503 msgstr "Antworten..."
504 
505-#: html.c:2090
506+#: html.c:2184
507 msgid "Truncated (too deep)"
508 msgstr "Abgeschnitten (zu tief)"
509 
510-#: html.c:2108
511+#: html.c:2202
512 msgid "follows you"
513 msgstr "folgt dir"
514 
515-#: html.c:2182
516+#: html.c:2276
517 msgid "Pinned"
518 msgstr "Angeheftet"
519 
520-#: html.c:2190
521+#: html.c:2284
522 msgid "Bookmarked"
523 msgstr "Lesezeichen gesetzt"
524 
525-#: html.c:2198
526+#: html.c:2292
527 msgid "Poll"
528 msgstr "Umfrage"
529 
530-#: html.c:2205
531+#: html.c:2299
532 msgid "Voted"
533 msgstr "Abgestimmt"
534 
535-#: html.c:2214
536+#: html.c:2308
537 msgid "Event"
538 msgstr "Ereignis"
539 
540-#: html.c:2246 html.c:2275
541+#: html.c:2340 html.c:2369
542 msgid "boosted"
543 msgstr "teilte"
544 
545-#: html.c:2289
546+#: html.c:2383
547 msgid "in reply to"
548 msgstr "als Antwort auf"
549 
550-#: html.c:2345
551+#: html.c:2439
552 msgid " [SENSITIVE CONTENT]"
553 msgstr " [SENSIBLER INHALT]"
554 
555-#: html.c:2512
556+#: html.c:2796
557 msgid "Vote"
558 msgstr "Abstimmen"
559 
560-#: html.c:2522
561+#: html.c:2806
562 msgid "Closed"
563 msgstr "Geschlossen"
564 
565-#: html.c:2547
566+#: html.c:2831
567 msgid "Closes in"
568 msgstr "Beendet in"
569 
570-#: html.c:2627
571+#: html.c:2911
572 msgid "Video"
573 msgstr "Video"
574 
575-#: html.c:2642
576+#: html.c:2926
577 msgid "Audio"
578 msgstr "Audio"
579 
580-#: html.c:2670
581+#: html.c:2954
582 msgid "Attachment"
583 msgstr "Anhang"
584 
585-#: html.c:2684
586+#: html.c:2968
587 msgid "Alt..."
588 msgstr "Alt.-Text..."
589 
590-#: html.c:2697
591+#: html.c:2981
592 msgid "Source channel or community"
593 msgstr "Ursprungskanal oder -gemeinschaft"
594 
595-#: html.c:2791
596+#: html.c:3075
597 msgid "Time: "
598 msgstr "Zeit: "
599 
600-#: html.c:2872
601+#: html.c:3156
602 msgid "Older..."
603 msgstr "Älter..."
604 
605-#: html.c:2974
606+#: html.c:3258
607 msgid "about this site"
608 msgstr "Über diese Seite"
609 
610-#: html.c:2976
611+#: html.c:3260
612 msgid "powered by "
613 msgstr "powered by "
614 
615-#: html.c:3041
616+#: html.c:3329
617 msgid "Dismiss"
618 msgstr "Ablehnen"
619 
620-#: html.c:3058
621+#: html.c:3346
622 #, c-format
623 msgid "Timeline for list '%s'"
624 msgstr "Zeitleiste für Liste '%s'"
625 
626-#: html.c:3077 html.c:4169
627+#: html.c:3365 html.c:4589
628 msgid "Pinned posts"
629 msgstr "Angeheftete Beiträge"
630 
631-#: html.c:3089 html.c:4184
632+#: html.c:3377 html.c:4604
633 msgid "Bookmarked posts"
634 msgstr "Beiträge mit Lesezeichen"
635 
636-#: html.c:3101 html.c:4199
637+#: html.c:3389 html.c:4619
638 msgid "Post drafts"
639 msgstr "Entwurf veröffentlichen"
640 
641-#: html.c:3177
642+#: html.c:3465
643 msgid "No more unseen posts"
644 msgstr "Keine weiteren ungesehenen Beiträge"
645 
646-#: html.c:3181 html.c:3290
647+#: html.c:3469 html.c:3578
648 msgid "Back to top"
649 msgstr "Nach oben"
650 
651-#: html.c:3243
652+#: html.c:3531
653 msgid "History"
654 msgstr "Historie"
655 
656-#: html.c:3295 html.c:3734
657+#: html.c:3583 html.c:4149
658 msgid "More..."
659 msgstr "Mehr..."
660 
661-#: html.c:3391 html.c:4813
662+#: html.c:3767 html.c:5257
663 msgid "Unlimit"
664 msgstr "Nicht mehr limitieren"
665 
666-#: html.c:3392
667+#: html.c:3768
668 msgid "Allow announces (boosts) from this user"
669 msgstr "Erlaube Boosts dieses Benutzers"
670 
671-#: html.c:3395 html.c:4809
672+#: html.c:3771 html.c:5253
673 msgid "Limit"
674 msgstr "Limitieren"
675 
676-#: html.c:3396
677+#: html.c:3772
678 msgid "Block announces (boosts) from this user"
679 msgstr "Blocke Boosts dieses Benutzers"
680 
681-#: html.c:3405
682+#: html.c:3781
683 msgid "Delete this user"
684 msgstr "Benutzer löschen"
685 
686-#: html.c:3410 html.c:4927
687+#: html.c:3786 html.c:5371
688 msgid "Approve"
689 msgstr "Bestätigen"
690 
691-#: html.c:3411
692+#: html.c:3787
693 msgid "Approve this follow request"
694 msgstr "Diese Folgeanfrage bestätigen"
695 
696-#: html.c:3414 html.c:4951
697+#: html.c:3790 html.c:5395
698 msgid "Discard"
699 msgstr "Verwerfen"
700 
701-#: html.c:3414
702+#: html.c:3790
703 msgid "Discard this follow request"
704 msgstr "Diese Folgeanfrage verwerfen"
705 
706-#: html.c:3419 html.c:4795
707+#: html.c:3795 html.c:5239
708 msgid "Unmute"
709 msgstr "Stummschaltung aufheben"
710 
711-#: html.c:3420
712+#: html.c:3796
713 msgid "Stop blocking activities from this user"
714 msgstr "Aktivitäten dieses Benutzers nicht mehr blockieren"
715 
716-#: html.c:3424
717+#: html.c:3800
718 msgid "Block any activity from this user"
719 msgstr "Alle Aktivitäten dieses Benutzers blockieren"
720 
721-#: html.c:3432
722+#: html.c:3808
723 msgid "Direct Message..."
724 msgstr "Direktnachricht..."
725 
726-#: html.c:3467
727+#: html.c:3843
728 msgid "Pending follow confirmations"
729 msgstr "Ausstehende Folgebestätigungen"
730 
731-#: html.c:3471
732+#: html.c:3847
733 msgid "People you follow"
734 msgstr "Personen denen du folgst"
735 
736-#: html.c:3472
737+#: html.c:3848
738 msgid "People that follow you"
739 msgstr "Personen die dir folgen"
740 
741-#: html.c:3511
742+#: html.c:3887
743 msgid "Clear all"
744 msgstr "Aufräumen"
745 
746-#: html.c:3571
747+#: html.c:3951
748 msgid "Mention"
749 msgstr "Erwähnung"
750 
751-#: html.c:3574
752+#: html.c:3954
753 msgid "Finished poll"
754 msgstr "Beendete Umfrage"
755 
756-#: html.c:3590
757+#: html.c:3979
758 msgid "Follow Request"
759 msgstr "Folge-Anfrage"
760 
761-#: html.c:3674
762+#: html.c:4089
763 msgid "Context"
764 msgstr "Zusammenhang anzeigen"
765 
766-#: html.c:3692
767+#: html.c:4107
768 msgid "New"
769 msgstr "Neu"
770 
771-#: html.c:3707
772+#: html.c:4122
773 msgid "Already seen"
774 msgstr "Bereits gesehen"
775 
776-#: html.c:3722
777+#: html.c:4137
778 msgid "None"
779 msgstr "Nichts"
780 
781-#: html.c:3994
782+#: html.c:4414
783 #, c-format
784 msgid "Search results for account %s"
785 msgstr "Suchergebnisse für Konto %s"
786 
787-#: html.c:4001
788+#: html.c:4421
789 #, c-format
790 msgid "Account %s not found"
791 msgstr "Konto %s wurde nicht gefunden"
792 
793-#: html.c:4032
794+#: html.c:4452
795 #, c-format
796 msgid "Search results for tag %s"
797 msgstr "Suchergebnisse für Hashtag %s"
798 
799-#: html.c:4032
800+#: html.c:4452
801 #, c-format
802 msgid "Nothing found for tag %s"
803 msgstr "Nicht gefunden zu Hashtag %s"
804 
805-#: html.c:4048
806+#: html.c:4468
807 #, c-format
808 msgid "Search results for '%s' (may be more)"
809 msgstr "Suchergebnisse für '%s' (könnten mehr sein)"
810 
811-#: html.c:4051
812+#: html.c:4471
813 #, c-format
814 msgid "Search results for '%s'"
815 msgstr "Keine Suchergebnisse für '%s'"
816 
817-#: html.c:4054
818+#: html.c:4474
819 #, c-format
820 msgid "No more matches for '%s'"
821 msgstr "Keine weiteren Treffer für '%s'"
822 
823-#: html.c:4056
824+#: html.c:4476
825 #, c-format
826 msgid "Nothing found for '%s'"
827 msgstr "Nichts gefunden für '%s'"
828 
829-#: html.c:4154
830+#: html.c:4574
831 msgid "Showing instance timeline"
832 msgstr "Zeitleiste der Instanz anzeigen"
833 
834-#: html.c:4237
835+#: html.c:4657
836 #, c-format
837 msgid "Showing timeline for list '%s'"
838 msgstr "Zeitleiste der Liste '%s' anzeigen"
839 
840-#: httpd.c:258
841+#: httpd.c:259
842 #, c-format
843 msgid "Search results for tag #%s"
844 msgstr "Suchergebnisse für Hashtag #%s"
845 
846-#: httpd.c:267
847+#: httpd.c:268
848 msgid "Recent posts by users in this instance"
849 msgstr "Neueste Beiträge von Benutzern dieser Instanz"
850 
851-#: html.c:1764
852+#: html.c:1842
853 msgid "Blocked hashtags..."
854 msgstr "Geblockte Hashtags..."
855 
856-#: html.c:518
857+#: html.c:574
858 msgid "Optional URL to reply to"
859 msgstr "Optionale URL zum Antworten"
860 
861-#: html.c:695
862+#: html.c:751
863 msgid ""
864 "Option 1...\n"
865 "Option 2...\n"
866@@ -708,94 +708,106 @@ msgstr ""
867 "Option 3...\n"
868 "..."
869 
870-#: html.c:1558
871+#: html.c:1636
872 msgid "Bot API key"
873 msgstr "Bot API Schlüssel"
874 
875-#: html.c:1564
876+#: html.c:1642
877 msgid "Chat id"
878 msgstr "Chat ID"
879 
880-#: html.c:1572
881+#: html.c:1650
882 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
883 msgstr "ntfy Server - vollständige URL (Bsp.: https://ntfy.sh/YourTopic)"
884 
885-#: html.c:1578
886+#: html.c:1656
887 msgid "ntfy token - if needed"
888 msgstr "ntfy Token - falls nötig"
889 
890-#: html.c:3078
891+#: html.c:3366
892 msgid "pinned"
893 msgstr "Angeheftet"
894 
895-#: html.c:3090
896+#: html.c:3378
897 msgid "bookmarks"
898 msgstr "Lesezeichen"
899 
900-#: html.c:3102
901+#: html.c:3390
902 msgid "drafts"
903 msgstr "Entwürfe"
904 
905-#: html.c:584
906+#: html.c:640
907 msgid "Scheduled post..."
908 msgstr "Geplanter Beitrag..."
909 
910 msgid "Post date and time:"
911 msgstr "Datum und Uhrzeit des Beitrags:"
912 
913-#: html.c:3113 html.c:4214
914+#: html.c:3401 html.c:4634
915 msgid "Scheduled posts"
916 msgstr "Geplante Beiträge"
917 
918-#: html.c:3114
919+#: html.c:3402
920 msgid "scheduled posts"
921 msgstr "Geplante Beiträge"
922 
923-#: html.c:578
924+#: html.c:634
925 #, c-format
926 msgid "Post date and time (timezone: %s):"
927 msgstr "Datum und Uhrzeit des Beitrags (Zeitzone: %s):"
928 
929-#: html.c:1689
930+#: html.c:1767
931 msgid "Time zone:"
932 msgstr "Zeitzone:"
933 
934-#: html.c:559
935+#: html.c:615
936 msgid "Language:"
937 msgstr "Sprache:"
938 
939-#: html.c:1580
940+#: html.c:1658
941 msgid "Notify webhook:"
942 msgstr "Notify webhook:"
943 
944-#: html.c:1586
945+#: html.c:1664
946 msgid "http://example.com/webhook"
947 msgstr "http://example.com/webhook"
948 
949-#: html.c:1694
950+#: html.c:1772
951 msgid "Languages you usually post in:"
952 msgstr "Sprache, in der du normalerweise schreibst:"
953 
954-#: html.c:1700
955+#: html.c:1778
956 msgid "en fr es de_AT"
957 msgstr "en fr es de_DE"
958 
959-#: html.c:460
960+#: html.c:428
961 msgid "Visibility: "
962 msgstr "Sichtbarkeit"
963 
964-#: html.c:468
965 msgid "Public"
966 msgstr "Öffentlich"
967 
968-#: html.c:477
969 msgid "Unlisted"
970 msgstr "Ungelistete"
971 
972-#: html.c:486
973 msgid "Followers-only"
974 msgstr "Nur Follower"
975 
976-#: html.c:495
977 msgid "Direct Message"
978 msgstr "Direktnachricht"
979+
980+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
981+msgid "EmojiUnreact"
982+msgstr "Emoji-Reaktion löschen"
983+
984+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
985+msgid "EmojiReact"
986+msgstr "Emoji-Reaktion"
987+
988+#: html.c:2115
989+msgid "Emoji react..."
990+msgstr "Emoji-Reaktion..."
991+
992+#: html.c:2609
993+msgid "Emoji reactions: "
994+msgstr "Emoji-Reaktionen:"
+202, -190
  1@@ -14,119 +14,119 @@ msgstr ""
  2 "Content-Transfer-Encoding: 8bit\n"
  3 "X-Generator: Poedit 3.5\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Ευαίσθητο περιεχόμενο: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Περιγραφή ευαίσθητου περιεχομένου"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Μόνο για αναφερόμενα άτομα: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Απάντηση σε (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Μη δημοσιεύσεις, αλλά αποθήκευσε σαν προσχέδιο"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Προσχέδιο:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Επισυνάψεις..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Αρχείο:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Καθάρισε αυτό το πεδίο για να διαγράψεις την επισύναψη"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Περιγραφή επισύναψης"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Δημοσκόπηση..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Επιλογές δημοσκόπησης (μία ανά σειρά, μέχρι 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Μία επιλογή"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Πολλαπλές επιλογές"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Τελειώνει σε 5 λεπτά"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Τελειώνει σε 1 ώρα"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Τελειώνει σε 1 ημέρα"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Δημοσίευση"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Περιγραφή ιστότοπου"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email διαχειριστή"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Διαχειριστής"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d ακολουθείτε, %d ακόλουθοι"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "ιδιωτικό"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "δημόσιο"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "ειδοποιήσεις"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "άνθρωποι"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "διακομιστής"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -134,576 +134,576 @@ msgstr ""
150 "Αναζήτηση δημοσιεύσεων με URL ή περιεχόμενο (κανονική έκφραση), "
151 "@χρήστης@διακομιστής, ή #ετικέτα"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Αναζήτηση περιεχομένου"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "πιστοποιημένος σύνδεσμος"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Τοποθεσία: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Νέα Δημοσίευση..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Τι έχεις στο μυαλό σου;"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Λειτουργίες..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Ακολούθησε"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(με URL ή user@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Ενίσχυση"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(από URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Μου αρέσει"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Ρυθμίσεις Χρήστη..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Προβαλλόμενο όνομα:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Το όνομα σου"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Εικόνα προφίλ: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Διαγραφή τρέχουσας εικόνας προφίλ"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Εικόνα κεφαλίδας (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Διαγραφή τρέχουσας εικόνας κεφαλίδας"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Βιογραφικό:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Γράψε για τον εαυτό σου εδώ..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Πάντα πρόβαλε ευαίσθητο περιεχόμενο"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Διεύθυνση email για ειδοποιήσεις:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Ειδοποιήσεις Telegram (κλειδί bot και chat id):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "ειδοποιήσεις ntfy (διακομιστής ntfy και token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Διατήρηση δημοσιεύσεων για ημέρες (0: ρυθμίσεις διακομιστή):"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Απόρριψη άμεσων μηνυμάτων από άτομα που δεν ακολουθείτε"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Αυτός ο λογαριασμός είναι αυτοματοποιημένος (bot)"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Αυτόματη ενίσχυση όλων των αναφορών σε αυτό το λογαριασμό"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr ""
297 "Αυτός ο λογαριασμός είναι ιδιωτικός (οι δημοσιεύσεις δεν εμφανίζονται στο "
298 "διαδίκτυο)"
299 
300-#: html.c:1639
301+#: html.c:1717
302 msgid "Collapse top threads by default"
303 msgstr "Αναδίπλωση κορυφαίων συζητήσεων εξ'ορισμού"
304 
305-#: html.c:1648
306+#: html.c:1726
307 msgid "Follow requests must be approved"
308 msgstr "Τα αιτήματα ακόλουθων πρέπει να εγκρίνονται"
309 
310-#: html.c:1657
311+#: html.c:1735
312 msgid "Publish follower and following metrics"
313 msgstr "Δημοσίευση στατιστικών ακόλουθων και ακολουθούμενων"
314 
315-#: html.c:1659
316+#: html.c:1737
317 msgid "Current location:"
318 msgstr "Τρέχουσα τοποθεσία:"
319 
320-#: html.c:1673
321+#: html.c:1751
322 msgid "Profile metadata (key=value pairs in each line):"
323 msgstr "Μεταστοιχεία προφίλ (κλειδί=τιμή ζευγάρια σε κάθε γραμμή):"
324 
325-#: html.c:1684
326+#: html.c:1762
327 msgid "Web interface language:"
328 msgstr "Γλώσσα περιβάλλοντος web:"
329 
330-#: html.c:1703
331+#: html.c:1781
332 msgid "New password:"
333 msgstr "Νέος κωδικός:"
334 
335-#: html.c:1710
336+#: html.c:1788
337 msgid "Repeat new password:"
338 msgstr "Επανάληψη νέου κωδικού:"
339 
340-#: html.c:1720
341+#: html.c:1798
342 msgid "Update user info"
343 msgstr "Ενημέρωση στοιχείων χρήστη"
344 
345-#: html.c:1731
346+#: html.c:1809
347 msgid "Followed hashtags..."
348 msgstr "Ετικέτες που ακολουθείτε..."
349 
350-#: html.c:1733 html.c:1766
351+#: html.c:1811 html.c:1844
352 msgid "One hashtag per line"
353 msgstr "Μία ετικέτα ανά γραμμή"
354 
355-#: html.c:1755 html.c:1787
356+#: html.c:1833 html.c:1865
357 msgid "Update hashtags"
358 msgstr "Ενημέρωση ετικετών"
359 
360-#: html.c:1904
361+#: html.c:1982
362 msgid "Say you like this post"
363 msgstr "Ανάφερε ότι σου αρέσει αυτή η δημοσίευση"
364 
365-#: html.c:1909 html.c:4775
366+#: html.c:1987 html.c:5219
367 msgid "Unlike"
368 msgstr "Αναίρεση μου αρέσει"
369 
370-#: html.c:1909
371+#: html.c:1987
372 msgid "Nah don't like it that much"
373 msgstr "Μπα δεν μ' αρέσει τόσο"
374 
375-#: html.c:1915 html.c:4912
376+#: html.c:1993 html.c:5356
377 msgid "Unpin"
378 msgstr "Ξεκαρφίτσωμα"
379 
380-#: html.c:1915
381+#: html.c:1993
382 msgid "Unpin this post from your timeline"
383 msgstr "Ξεκαρφίτσωμα αυτής της δημοσίευσης από τη ροή σας"
384 
385-#: html.c:1918 html.c:4907
386+#: html.c:1996 html.c:5351
387 msgid "Pin"
388 msgstr "Καρφίτσωμα"
389 
390-#: html.c:1918
391+#: html.c:1996
392 msgid "Pin this post to the top of your timeline"
393 msgstr "Καρφίτσωμα αυτής της δημοσίευσης στη κορυφή της ροής σας"
394 
395-#: html.c:1925
396+#: html.c:2003
397 msgid "Announce this post to your followers"
398 msgstr "Ανακοίνωση αυτής της δημοσίευσης στους ακόλουθους σας"
399 
400-#: html.c:1930 html.c:4783
401+#: html.c:2008 html.c:5227
402 msgid "Unboost"
403 msgstr "Αφαίρεση ενίσχυσης"
404 
405-#: html.c:1930
406+#: html.c:2008
407 msgid "I regret I boosted this"
408 msgstr "Μετάνιωσα που το ενίσχυσα"
409 
410-#: html.c:1936 html.c:4922
411+#: html.c:2014 html.c:5366
412 msgid "Unbookmark"
413 msgstr "Αφαίρεση σελιδοδείκτη"
414 
415-#: html.c:1936
416+#: html.c:2014
417 msgid "Delete this post from your bookmarks"
418 msgstr "Διαγραφή αυτής της δημοσίευσης από τους σελιδοδείκτες σου"
419 
420-#: html.c:1939 html.c:4917
421+#: html.c:2017 html.c:5361
422 msgid "Bookmark"
423 msgstr "Εισαγωγή σελιδοδείκτη"
424 
425-#: html.c:1939
426+#: html.c:2017
427 msgid "Add this post to your bookmarks"
428 msgstr "Προσθήκη αυτής της δημοσίευσης στους σελιδοδείκτες σου"
429 
430-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
431+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
432 msgid "Unfollow"
433 msgstr "Αναίρεση ακολουθίας"
434 
435-#: html.c:1945 html.c:3387
436+#: html.c:2023 html.c:3763 html.c:4042
437 msgid "Stop following this user's activity"
438 msgstr "Σταμάτα να ακολουθείς τη δραστηριότητα αυτού του χρήστη"
439 
440-#: html.c:1949 html.c:3401
441+#: html.c:2027 html.c:3777 html.c:4044
442 msgid "Start following this user's activity"
443 msgstr "Ξεκίνα να ακολουθείς τη δραστηριότητα αυτού του χρήστη"
444 
445-#: html.c:1955 html.c:4860
446+#: html.c:2033 html.c:5304
447 msgid "Unfollow Group"
448 msgstr "Αναίρεση ακολουθίας ομάδας"
449 
450-#: html.c:1956
451+#: html.c:2034
452 msgid "Stop following this group or channel"
453 msgstr "Σταμάτα να ακολουθείς αυτή την ομάδα ή κανάλι"
454 
455-#: html.c:1960 html.c:4847
456+#: html.c:2038 html.c:5291
457 msgid "Follow Group"
458 msgstr "Ακολούθησε την Ομάδα"
459 
460-#: html.c:1961
461+#: html.c:2039
462 msgid "Start following this group or channel"
463 msgstr "Ξεκίνα να ακολουθείς αυτή την ομάδα ή κανάλι"
464 
465-#: html.c:1966 html.c:3423 html.c:4791
466+#: html.c:2044 html.c:3799 html.c:5235
467 msgid "MUTE"
468 msgstr "ΣΙΓΑΣΗ"
469 
470-#: html.c:1967
471+#: html.c:2045
472 msgid "Block any activity from this user forever"
473 msgstr "Αποκλεισμός οποιασδήποτε δραστηριότητας από αυτόν τον χρήστη για πάντα"
474 
475-#: html.c:1972 html.c:3405 html.c:4877
476+#: html.c:2050 html.c:3781 html.c:5321
477 msgid "Delete"
478 msgstr "Διαγραφή"
479 
480-#: html.c:1972
481+#: html.c:2050
482 msgid "Delete this post"
483 msgstr "Διαγραφή αυτής της δημοσίευσης"
484 
485-#: html.c:1975 html.c:4799
486+#: html.c:2053 html.c:5243
487 msgid "Hide"
488 msgstr "Απόκρυψη"
489 
490-#: html.c:1975
491+#: html.c:2053
492 msgid "Hide this post and its children"
493 msgstr "Απόκρυψη αυτής της δημοσίευσης και των απαντήσεων της"
494 
495-#: html.c:2017
496+#: html.c:2095
497 msgid "Edit..."
498 msgstr "Επεξεργασία..."
499 
500-#: html.c:2039
501+#: html.c:2133
502 msgid "Reply..."
503 msgstr "Απάντηση..."
504 
505-#: html.c:2090
506+#: html.c:2184
507 msgid "Truncated (too deep)"
508 msgstr "Έγινε περικοπή (πολύ βαθύ)"
509 
510-#: html.c:2108
511+#: html.c:2202
512 msgid "follows you"
513 msgstr "σε ακολουθεί"
514 
515-#: html.c:2182
516+#: html.c:2276
517 msgid "Pinned"
518 msgstr "Καρφιτσωμένο"
519 
520-#: html.c:2190
521+#: html.c:2284
522 msgid "Bookmarked"
523 msgstr "Εισήχθηκε σελιδοδείκτης"
524 
525-#: html.c:2198
526+#: html.c:2292
527 msgid "Poll"
528 msgstr "Δημοσκόπηση"
529 
530-#: html.c:2205
531+#: html.c:2299
532 msgid "Voted"
533 msgstr "Ψήφισες"
534 
535-#: html.c:2214
536+#: html.c:2308
537 msgid "Event"
538 msgstr "Εκδήλωση"
539 
540-#: html.c:2246 html.c:2275
541+#: html.c:2340 html.c:2369
542 msgid "boosted"
543 msgstr "ενισχύθηκε"
544 
545-#: html.c:2289
546+#: html.c:2383
547 msgid "in reply to"
548 msgstr "σε απάντηση του"
549 
550-#: html.c:2345
551+#: html.c:2439
552 msgid " [SENSITIVE CONTENT]"
553 msgstr " [ΕΥΑΙΣΘΗΤΟ ΠΕΡΙΕΧΟΜΕΝΟ]"
554 
555-#: html.c:2512
556+#: html.c:2796
557 msgid "Vote"
558 msgstr "Ψήφισε"
559 
560-#: html.c:2522
561+#: html.c:2806
562 msgid "Closed"
563 msgstr "Έκλεισε"
564 
565-#: html.c:2547
566+#: html.c:2831
567 msgid "Closes in"
568 msgstr "Κλείνει σε"
569 
570-#: html.c:2627
571+#: html.c:2911
572 msgid "Video"
573 msgstr "Βίντεο"
574 
575-#: html.c:2642
576+#: html.c:2926
577 msgid "Audio"
578 msgstr "Ήχος"
579 
580-#: html.c:2670
581+#: html.c:2954
582 msgid "Attachment"
583 msgstr "Επισύναψη"
584 
585-#: html.c:2684
586+#: html.c:2968
587 msgid "Alt..."
588 msgstr "Εναλλακτικό κείμενο..."
589 
590-#: html.c:2697
591+#: html.c:2981
592 msgid "Source channel or community"
593 msgstr "Πηγή κανάλι ή κοινότητα"
594 
595-#: html.c:2791
596+#: html.c:3075
597 msgid "Time: "
598 msgstr "Ώρα: "
599 
600-#: html.c:2872
601+#: html.c:3156
602 msgid "Older..."
603 msgstr "Παλαιότερα..."
604 
605-#: html.c:2974
606+#: html.c:3258
607 msgid "about this site"
608 msgstr "σχετικά με αυτό τον ιστότοπο"
609 
610-#: html.c:2976
611+#: html.c:3260
612 msgid "powered by "
613 msgstr "λειτουργεί με "
614 
615-#: html.c:3041
616+#: html.c:3329
617 msgid "Dismiss"
618 msgstr "Απόρριψη"
619 
620-#: html.c:3058
621+#: html.c:3346
622 #, c-format
623 msgid "Timeline for list '%s'"
624 msgstr "Ροή για λίστα '%s'"
625 
626-#: html.c:3077 html.c:4169
627+#: html.c:3365 html.c:4589
628 msgid "Pinned posts"
629 msgstr "Καρφιτσωμένες δημοσιεύσεις"
630 
631-#: html.c:3089 html.c:4184
632+#: html.c:3377 html.c:4604
633 msgid "Bookmarked posts"
634 msgstr "Σελιδοδείκτες"
635 
636-#: html.c:3101 html.c:4199
637+#: html.c:3389 html.c:4619
638 msgid "Post drafts"
639 msgstr "Προσχέδια δημοσιεύσεων"
640 
641-#: html.c:3177
642+#: html.c:3465
643 msgid "No more unseen posts"
644 msgstr "Δεν υπάρχουν άλλες αδιάβαστες δημοσιεύσεις"
645 
646-#: html.c:3181 html.c:3290
647+#: html.c:3469 html.c:3578
648 msgid "Back to top"
649 msgstr "Πίσω στη κορυφή"
650 
651-#: html.c:3243
652+#: html.c:3531
653 msgid "History"
654 msgstr "Ιστορικό"
655 
656-#: html.c:3295 html.c:3734
657+#: html.c:3583 html.c:4149
658 msgid "More..."
659 msgstr "Περισσότερα..."
660 
661-#: html.c:3391 html.c:4813
662+#: html.c:3767 html.c:5257
663 msgid "Unlimit"
664 msgstr "Αφαίρεση περιορισμού"
665 
666-#: html.c:3392
667+#: html.c:3768
668 msgid "Allow announces (boosts) from this user"
669 msgstr "Επέτρεψε ανακοινώσεις (ενισχύσεις) από αυτό το χρήστη"
670 
671-#: html.c:3395 html.c:4809
672+#: html.c:3771 html.c:5253
673 msgid "Limit"
674 msgstr "Περιορισμός"
675 
676-#: html.c:3396
677+#: html.c:3772
678 msgid "Block announces (boosts) from this user"
679 msgstr "Απέκλεισε ανακοινώσεις (ενισχύσεις) από αυτό το χρήστη"
680 
681-#: html.c:3405
682+#: html.c:3781
683 msgid "Delete this user"
684 msgstr "Διαγραφή αυτού του χρήστη"
685 
686-#: html.c:3410 html.c:4927
687+#: html.c:3786 html.c:5371
688 msgid "Approve"
689 msgstr "Έγκριση"
690 
691-#: html.c:3411
692+#: html.c:3787
693 msgid "Approve this follow request"
694 msgstr "Έγκριση αυτού του αιτήματος ακόλουθου"
695 
696-#: html.c:3414 html.c:4951
697+#: html.c:3790 html.c:5395
698 msgid "Discard"
699 msgstr "Απόρριψη"
700 
701-#: html.c:3414
702+#: html.c:3790
703 msgid "Discard this follow request"
704 msgstr "Απόρριψη αυτού του αιτήματος ακόλουθου"
705 
706-#: html.c:3419 html.c:4795
707+#: html.c:3795 html.c:5239
708 msgid "Unmute"
709 msgstr "Αφαίρεση σίγασης"
710 
711-#: html.c:3420
712+#: html.c:3796
713 msgid "Stop blocking activities from this user"
714 msgstr "Διακοπή αποκλεισμού δραστηριοτήτων από αυτό το χρήστη"
715 
716-#: html.c:3424
717+#: html.c:3800
718 msgid "Block any activity from this user"
719 msgstr "Αποκλεισμός οποιασδήποτε δραστηριότητας από αυτό τον χρήστη"
720 
721-#: html.c:3432
722+#: html.c:3808
723 msgid "Direct Message..."
724 msgstr "Απευθείας Μήνυμα..."
725 
726-#: html.c:3467
727+#: html.c:3843
728 msgid "Pending follow confirmations"
729 msgstr "Εκκεμείς επιβεβαιώσεις ακολουθήσεων"
730 
731-#: html.c:3471
732+#: html.c:3847
733 msgid "People you follow"
734 msgstr "Άνθρωποι που ακολουθείτε"
735 
736-#: html.c:3472
737+#: html.c:3848
738 msgid "People that follow you"
739 msgstr "Άνθρωποι που σας ακολουθούν"
740 
741-#: html.c:3511
742+#: html.c:3887
743 msgid "Clear all"
744 msgstr "Εκκαθάριση όλων"
745 
746-#: html.c:3571
747+#: html.c:3951
748 msgid "Mention"
749 msgstr "Αναφορά"
750 
751-#: html.c:3574
752+#: html.c:3954
753 msgid "Finished poll"
754 msgstr "Ολοκληρωμένη δημοσκόπηση"
755 
756-#: html.c:3590
757+#: html.c:3979
758 msgid "Follow Request"
759 msgstr "Αίτημα Ακόλουθου"
760 
761-#: html.c:3674
762+#: html.c:4089
763 msgid "Context"
764 msgstr "Περιεχόμενο"
765 
766-#: html.c:3692
767+#: html.c:4107
768 msgid "New"
769 msgstr "Νέο"
770 
771-#: html.c:3707
772+#: html.c:4122
773 msgid "Already seen"
774 msgstr "Έχει ήδη προβληθεί"
775 
776-#: html.c:3722
777+#: html.c:4137
778 msgid "None"
779 msgstr "Κανένα"
780 
781-#: html.c:3994
782+#: html.c:4414
783 #, c-format
784 msgid "Search results for account %s"
785 msgstr "Αποτελέσματα αναζήτηση για λογαριασμό %s"
786 
787-#: html.c:4001
788+#: html.c:4421
789 #, c-format
790 msgid "Account %s not found"
791 msgstr "Ο λογαριασμός %s δεν βρέθηκε"
792 
793-#: html.c:4032
794+#: html.c:4452
795 #, c-format
796 msgid "Search results for tag %s"
797 msgstr "Αποτελέσματα αναζήτησης για ετικέτα %s"
798 
799-#: html.c:4032
800+#: html.c:4452
801 #, c-format
802 msgid "Nothing found for tag %s"
803 msgstr "Δε βρέθηκε κάτι για ετικέτα %s"
804 
805-#: html.c:4048
806+#: html.c:4468
807 #, c-format
808 msgid "Search results for '%s' (may be more)"
809 msgstr "Αποτελέσματα αναζήτησης για '%s' (μπορεί να υπάρχουν περισσότερα)"
810 
811-#: html.c:4051
812+#: html.c:4471
813 #, c-format
814 msgid "Search results for '%s'"
815 msgstr "Αποτελέσματα αναζήτησης για '%s'"
816 
817-#: html.c:4054
818+#: html.c:4474
819 #, c-format
820 msgid "No more matches for '%s'"
821 msgstr "Δεν υπάρχουν άλλα αποτελέσματα για '%s'"
822 
823-#: html.c:4056
824+#: html.c:4476
825 #, c-format
826 msgid "Nothing found for '%s'"
827 msgstr "Δε βρέθηκε κάτι για '%s'"
828 
829-#: html.c:4154
830+#: html.c:4574
831 msgid "Showing instance timeline"
832 msgstr "Προβάλλεται η ροή του διακομιστή"
833 
834-#: html.c:4237
835+#: html.c:4657
836 #, c-format
837 msgid "Showing timeline for list '%s'"
838 msgstr "Προβάλετε η ροή της λίστας '%s'"
839 
840-#: httpd.c:258
841+#: httpd.c:259
842 #, c-format
843 msgid "Search results for tag #%s"
844 msgstr "Αποτελέσματα αναζήτησης για ετικέτα #%s"
845 
846-#: httpd.c:267
847+#: httpd.c:268
848 msgid "Recent posts by users in this instance"
849 msgstr "Πρόσφατες αναρτήσεις από χρήστες σε αυτό τον ιστότοπο"
850 
851-#: html.c:1764
852+#: html.c:1842
853 msgid "Blocked hashtags..."
854 msgstr "Αποκλεισμένες ετικέτες..."
855 
856-#: html.c:518
857+#: html.c:574
858 msgid "Optional URL to reply to"
859 msgstr ""
860 
861-#: html.c:695
862+#: html.c:751
863 msgid ""
864 "Option 1...\n"
865 "Option 2...\n"
866@@ -711,94 +711,106 @@ msgid ""
867 "..."
868 msgstr ""
869 
870-#: html.c:1558
871+#: html.c:1636
872 msgid "Bot API key"
873 msgstr ""
874 
875-#: html.c:1564
876+#: html.c:1642
877 msgid "Chat id"
878 msgstr ""
879 
880-#: html.c:1572
881+#: html.c:1650
882 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
883 msgstr ""
884 
885-#: html.c:1578
886+#: html.c:1656
887 msgid "ntfy token - if needed"
888 msgstr ""
889 
890-#: html.c:3078
891+#: html.c:3366
892 msgid "pinned"
893 msgstr ""
894 
895-#: html.c:3090
896+#: html.c:3378
897 msgid "bookmarks"
898 msgstr ""
899 
900-#: html.c:3102
901+#: html.c:3390
902 msgid "drafts"
903 msgstr ""
904 
905-#: html.c:584
906+#: html.c:640
907 msgid "Scheduled post..."
908 msgstr ""
909 
910 msgid "Post date and time:"
911 msgstr ""
912 
913-#: html.c:3113 html.c:4214
914+#: html.c:3401 html.c:4634
915 msgid "Scheduled posts"
916 msgstr ""
917 
918-#: html.c:3114
919+#: html.c:3402
920 msgid "scheduled posts"
921 msgstr ""
922 
923-#: html.c:578
924+#: html.c:634
925 #, c-format
926 msgid "Post date and time (timezone: %s):"
927 msgstr ""
928 
929-#: html.c:1689
930+#: html.c:1767
931 msgid "Time zone:"
932 msgstr ""
933 
934-#: html.c:559
935+#: html.c:615
936 msgid "Language:"
937 msgstr ""
938 
939-#: html.c:1580
940+#: html.c:1658
941 msgid "Notify webhook:"
942 msgstr ""
943 
944-#: html.c:1586
945+#: html.c:1664
946 msgid "http://example.com/webhook"
947 msgstr ""
948 
949-#: html.c:1694
950+#: html.c:1772
951 msgid "Languages you usually post in:"
952 msgstr ""
953 
954-#: html.c:1700
955+#: html.c:1778
956 msgid "en fr es de_AT"
957 msgstr ""
958 
959-#: html.c:460
960+#: html.c:428
961 msgid "Visibility: "
962 msgstr ""
963 
964-#: html.c:468
965 msgid "Public"
966 msgstr ""
967 
968-#: html.c:477
969 msgid "Unlisted"
970 msgstr ""
971 
972-#: html.c:486
973 msgid "Followers-only"
974 msgstr ""
975 
976-#: html.c:495
977 msgid "Direct Message"
978 msgstr ""
979+
980+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
981+msgid "EmojiUnreact"
982+msgstr ""
983+
984+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
985+msgid "EmojiReact"
986+msgstr ""
987+
988+#: html.c:2115
989+msgid "Emoji react..."
990+msgstr ""
991+
992+#: html.c:2609
993+msgid "Emoji reactions: "
994+msgstr ""
+202, -190
  1@@ -8,692 +8,692 @@ msgstr ""
  2 "Language: en\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr ""
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr ""
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr ""
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr ""
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr ""
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr ""
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr ""
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr ""
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr ""
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr ""
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr ""
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr ""
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr ""
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr ""
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr ""
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr ""
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr ""
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr ""
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr ""
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr ""
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr ""
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr ""
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr ""
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr ""
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr ""
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr ""
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr ""
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr ""
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149 msgstr ""
150 
151-#: html.c:1087
152+#: html.c:1143
153 msgid "Content search"
154 msgstr ""
155 
156-#: html.c:1213
157+#: html.c:1269
158 msgid "verified link"
159 msgstr ""
160 
161-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
162+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
163 msgid "Location: "
164 msgstr ""
165 
166-#: html.c:1302
167+#: html.c:1358
168 msgid "New Post..."
169 msgstr ""
170 
171-#: html.c:1304
172+#: html.c:1360
173 msgid "What's on your mind?"
174 msgstr ""
175 
176-#: html.c:1313
177+#: html.c:1369
178 msgid "Operations..."
179 msgstr ""
180 
181-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
182+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
183 msgid "Follow"
184 msgstr ""
185 
186-#: html.c:1330
187+#: html.c:1386
188 msgid "(by URL or user@host)"
189 msgstr ""
190 
191-#: html.c:1345 html.c:1925 html.c:4766
192+#: html.c:1401 html.c:2003 html.c:5210
193 msgid "Boost"
194 msgstr ""
195 
196-#: html.c:1347 html.c:1364
197+#: html.c:1403 html.c:1420 html.c:1442
198 msgid "(by URL)"
199 msgstr ""
200 
201-#: html.c:1362 html.c:1904 html.c:4757
202+#: html.c:1418 html.c:1982 html.c:5201
203 msgid "Like"
204 msgstr ""
205 
206-#: html.c:1490
207+#: html.c:1568
208 msgid "User Settings..."
209 msgstr ""
210 
211-#: html.c:1499
212+#: html.c:1577
213 msgid "Display name:"
214 msgstr ""
215 
216-#: html.c:1505
217+#: html.c:1583
218 msgid "Your name"
219 msgstr ""
220 
221-#: html.c:1507
222+#: html.c:1585
223 msgid "Avatar: "
224 msgstr ""
225 
226-#: html.c:1515
227+#: html.c:1593
228 msgid "Delete current avatar"
229 msgstr ""
230 
231-#: html.c:1517
232+#: html.c:1595
233 msgid "Header image (banner): "
234 msgstr ""
235 
236-#: html.c:1525
237+#: html.c:1603
238 msgid "Delete current header image"
239 msgstr ""
240 
241-#: html.c:1527
242+#: html.c:1605
243 msgid "Bio:"
244 msgstr ""
245 
246-#: html.c:1533
247+#: html.c:1611
248 msgid "Write about yourself here..."
249 msgstr ""
250 
251-#: html.c:1542
252+#: html.c:1620
253 msgid "Always show sensitive content"
254 msgstr ""
255 
256-#: html.c:1544
257+#: html.c:1622
258 msgid "Email address for notifications:"
259 msgstr ""
260 
261-#: html.c:1552
262+#: html.c:1630
263 msgid "Telegram notifications (bot key and chat id):"
264 msgstr ""
265 
266-#: html.c:1566
267+#: html.c:1644
268 msgid "ntfy notifications (ntfy server and token):"
269 msgstr ""
270 
271-#: html.c:1588
272+#: html.c:1666
273 msgid "Maximum days to keep posts (0: server settings):"
274 msgstr ""
275 
276-#: html.c:1602
277+#: html.c:1680
278 msgid "Drop direct messages from people you don't follow"
279 msgstr ""
280 
281-#: html.c:1611
282+#: html.c:1689
283 msgid "This account is a bot"
284 msgstr ""
285 
286-#: html.c:1620
287+#: html.c:1698
288 msgid "Auto-boost all mentions to this account"
289 msgstr ""
290 
291-#: html.c:1629
292+#: html.c:1707
293 msgid "This account is private (posts are not shown through the web)"
294 msgstr ""
295 
296-#: html.c:1639
297+#: html.c:1717
298 msgid "Collapse top threads by default"
299 msgstr ""
300 
301-#: html.c:1648
302+#: html.c:1726
303 msgid "Follow requests must be approved"
304 msgstr ""
305 
306-#: html.c:1657
307+#: html.c:1735
308 msgid "Publish follower and following metrics"
309 msgstr ""
310 
311-#: html.c:1659
312+#: html.c:1737
313 msgid "Current location:"
314 msgstr ""
315 
316-#: html.c:1673
317+#: html.c:1751
318 msgid "Profile metadata (key=value pairs in each line):"
319 msgstr ""
320 
321-#: html.c:1684
322+#: html.c:1762
323 msgid "Web interface language:"
324 msgstr ""
325 
326-#: html.c:1703
327+#: html.c:1781
328 msgid "New password:"
329 msgstr ""
330 
331-#: html.c:1710
332+#: html.c:1788
333 msgid "Repeat new password:"
334 msgstr ""
335 
336-#: html.c:1720
337+#: html.c:1798
338 msgid "Update user info"
339 msgstr ""
340 
341-#: html.c:1731
342+#: html.c:1809
343 msgid "Followed hashtags..."
344 msgstr ""
345 
346-#: html.c:1733 html.c:1766
347+#: html.c:1811 html.c:1844
348 msgid "One hashtag per line"
349 msgstr ""
350 
351-#: html.c:1755 html.c:1787
352+#: html.c:1833 html.c:1865
353 msgid "Update hashtags"
354 msgstr ""
355 
356-#: html.c:1904
357+#: html.c:1982
358 msgid "Say you like this post"
359 msgstr ""
360 
361-#: html.c:1909 html.c:4775
362+#: html.c:1987 html.c:5219
363 msgid "Unlike"
364 msgstr ""
365 
366-#: html.c:1909
367+#: html.c:1987
368 msgid "Nah don't like it that much"
369 msgstr ""
370 
371-#: html.c:1915 html.c:4912
372+#: html.c:1993 html.c:5356
373 msgid "Unpin"
374 msgstr ""
375 
376-#: html.c:1915
377+#: html.c:1993
378 msgid "Unpin this post from your timeline"
379 msgstr ""
380 
381-#: html.c:1918 html.c:4907
382+#: html.c:1996 html.c:5351
383 msgid "Pin"
384 msgstr ""
385 
386-#: html.c:1918
387+#: html.c:1996
388 msgid "Pin this post to the top of your timeline"
389 msgstr ""
390 
391-#: html.c:1925
392+#: html.c:2003
393 msgid "Announce this post to your followers"
394 msgstr ""
395 
396-#: html.c:1930 html.c:4783
397+#: html.c:2008 html.c:5227
398 msgid "Unboost"
399 msgstr ""
400 
401-#: html.c:1930
402+#: html.c:2008
403 msgid "I regret I boosted this"
404 msgstr ""
405 
406-#: html.c:1936 html.c:4922
407+#: html.c:2014 html.c:5366
408 msgid "Unbookmark"
409 msgstr ""
410 
411-#: html.c:1936
412+#: html.c:2014
413 msgid "Delete this post from your bookmarks"
414 msgstr ""
415 
416-#: html.c:1939 html.c:4917
417+#: html.c:2017 html.c:5361
418 msgid "Bookmark"
419 msgstr ""
420 
421-#: html.c:1939
422+#: html.c:2017
423 msgid "Add this post to your bookmarks"
424 msgstr ""
425 
426-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
427+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
428 msgid "Unfollow"
429 msgstr ""
430 
431-#: html.c:1945 html.c:3387
432+#: html.c:2023 html.c:3763 html.c:4042
433 msgid "Stop following this user's activity"
434 msgstr ""
435 
436-#: html.c:1949 html.c:3401
437+#: html.c:2027 html.c:3777 html.c:4044
438 msgid "Start following this user's activity"
439 msgstr ""
440 
441-#: html.c:1955 html.c:4860
442+#: html.c:2033 html.c:5304
443 msgid "Unfollow Group"
444 msgstr ""
445 
446-#: html.c:1956
447+#: html.c:2034
448 msgid "Stop following this group or channel"
449 msgstr ""
450 
451-#: html.c:1960 html.c:4847
452+#: html.c:2038 html.c:5291
453 msgid "Follow Group"
454 msgstr ""
455 
456-#: html.c:1961
457+#: html.c:2039
458 msgid "Start following this group or channel"
459 msgstr ""
460 
461-#: html.c:1966 html.c:3423 html.c:4791
462+#: html.c:2044 html.c:3799 html.c:5235
463 msgid "MUTE"
464 msgstr ""
465 
466-#: html.c:1967
467+#: html.c:2045
468 msgid "Block any activity from this user forever"
469 msgstr ""
470 
471-#: html.c:1972 html.c:3405 html.c:4877
472+#: html.c:2050 html.c:3781 html.c:5321
473 msgid "Delete"
474 msgstr ""
475 
476-#: html.c:1972
477+#: html.c:2050
478 msgid "Delete this post"
479 msgstr ""
480 
481-#: html.c:1975 html.c:4799
482+#: html.c:2053 html.c:5243
483 msgid "Hide"
484 msgstr ""
485 
486-#: html.c:1975
487+#: html.c:2053
488 msgid "Hide this post and its children"
489 msgstr ""
490 
491-#: html.c:2017
492+#: html.c:2095
493 msgid "Edit..."
494 msgstr ""
495 
496-#: html.c:2039
497+#: html.c:2133
498 msgid "Reply..."
499 msgstr ""
500 
501-#: html.c:2090
502+#: html.c:2184
503 msgid "Truncated (too deep)"
504 msgstr ""
505 
506-#: html.c:2108
507+#: html.c:2202
508 msgid "follows you"
509 msgstr ""
510 
511-#: html.c:2182
512+#: html.c:2276
513 msgid "Pinned"
514 msgstr ""
515 
516-#: html.c:2190
517+#: html.c:2284
518 msgid "Bookmarked"
519 msgstr ""
520 
521-#: html.c:2198
522+#: html.c:2292
523 msgid "Poll"
524 msgstr ""
525 
526-#: html.c:2205
527+#: html.c:2299
528 msgid "Voted"
529 msgstr ""
530 
531-#: html.c:2214
532+#: html.c:2308
533 msgid "Event"
534 msgstr ""
535 
536-#: html.c:2246 html.c:2275
537+#: html.c:2340 html.c:2369
538 msgid "boosted"
539 msgstr ""
540 
541-#: html.c:2289
542+#: html.c:2383
543 msgid "in reply to"
544 msgstr ""
545 
546-#: html.c:2345
547+#: html.c:2439
548 msgid " [SENSITIVE CONTENT]"
549 msgstr ""
550 
551-#: html.c:2512
552+#: html.c:2796
553 msgid "Vote"
554 msgstr ""
555 
556-#: html.c:2522
557+#: html.c:2806
558 msgid "Closed"
559 msgstr ""
560 
561-#: html.c:2547
562+#: html.c:2831
563 msgid "Closes in"
564 msgstr ""
565 
566-#: html.c:2627
567+#: html.c:2911
568 msgid "Video"
569 msgstr ""
570 
571-#: html.c:2642
572+#: html.c:2926
573 msgid "Audio"
574 msgstr ""
575 
576-#: html.c:2670
577+#: html.c:2954
578 msgid "Attachment"
579 msgstr ""
580 
581-#: html.c:2684
582+#: html.c:2968
583 msgid "Alt..."
584 msgstr ""
585 
586-#: html.c:2697
587+#: html.c:2981
588 msgid "Source channel or community"
589 msgstr ""
590 
591-#: html.c:2791
592+#: html.c:3075
593 msgid "Time: "
594 msgstr ""
595 
596-#: html.c:2872
597+#: html.c:3156
598 msgid "Older..."
599 msgstr ""
600 
601-#: html.c:2974
602+#: html.c:3258
603 msgid "about this site"
604 msgstr ""
605 
606-#: html.c:2976
607+#: html.c:3260
608 msgid "powered by "
609 msgstr ""
610 
611-#: html.c:3041
612+#: html.c:3329
613 msgid "Dismiss"
614 msgstr ""
615 
616-#: html.c:3058
617+#: html.c:3346
618 #, c-format
619 msgid "Timeline for list '%s'"
620 msgstr ""
621 
622-#: html.c:3077 html.c:4169
623+#: html.c:3365 html.c:4589
624 msgid "Pinned posts"
625 msgstr ""
626 
627-#: html.c:3089 html.c:4184
628+#: html.c:3377 html.c:4604
629 msgid "Bookmarked posts"
630 msgstr ""
631 
632-#: html.c:3101 html.c:4199
633+#: html.c:3389 html.c:4619
634 msgid "Post drafts"
635 msgstr ""
636 
637-#: html.c:3177
638+#: html.c:3465
639 msgid "No more unseen posts"
640 msgstr ""
641 
642-#: html.c:3181 html.c:3290
643+#: html.c:3469 html.c:3578
644 msgid "Back to top"
645 msgstr ""
646 
647-#: html.c:3243
648+#: html.c:3531
649 msgid "History"
650 msgstr ""
651 
652-#: html.c:3295 html.c:3734
653+#: html.c:3583 html.c:4149
654 msgid "More..."
655 msgstr ""
656 
657-#: html.c:3391 html.c:4813
658+#: html.c:3767 html.c:5257
659 msgid "Unlimit"
660 msgstr ""
661 
662-#: html.c:3392
663+#: html.c:3768
664 msgid "Allow announces (boosts) from this user"
665 msgstr ""
666 
667-#: html.c:3395 html.c:4809
668+#: html.c:3771 html.c:5253
669 msgid "Limit"
670 msgstr ""
671 
672-#: html.c:3396
673+#: html.c:3772
674 msgid "Block announces (boosts) from this user"
675 msgstr ""
676 
677-#: html.c:3405
678+#: html.c:3781
679 msgid "Delete this user"
680 msgstr ""
681 
682-#: html.c:3410 html.c:4927
683+#: html.c:3786 html.c:5371
684 msgid "Approve"
685 msgstr ""
686 
687-#: html.c:3411
688+#: html.c:3787
689 msgid "Approve this follow request"
690 msgstr ""
691 
692-#: html.c:3414 html.c:4951
693+#: html.c:3790 html.c:5395
694 msgid "Discard"
695 msgstr ""
696 
697-#: html.c:3414
698+#: html.c:3790
699 msgid "Discard this follow request"
700 msgstr ""
701 
702-#: html.c:3419 html.c:4795
703+#: html.c:3795 html.c:5239
704 msgid "Unmute"
705 msgstr ""
706 
707-#: html.c:3420
708+#: html.c:3796
709 msgid "Stop blocking activities from this user"
710 msgstr ""
711 
712-#: html.c:3424
713+#: html.c:3800
714 msgid "Block any activity from this user"
715 msgstr ""
716 
717-#: html.c:3432
718+#: html.c:3808
719 msgid "Direct Message..."
720 msgstr ""
721 
722-#: html.c:3467
723+#: html.c:3843
724 msgid "Pending follow confirmations"
725 msgstr ""
726 
727-#: html.c:3471
728+#: html.c:3847
729 msgid "People you follow"
730 msgstr ""
731 
732-#: html.c:3472
733+#: html.c:3848
734 msgid "People that follow you"
735 msgstr ""
736 
737-#: html.c:3511
738+#: html.c:3887
739 msgid "Clear all"
740 msgstr ""
741 
742-#: html.c:3571
743+#: html.c:3951
744 msgid "Mention"
745 msgstr ""
746 
747-#: html.c:3574
748+#: html.c:3954
749 msgid "Finished poll"
750 msgstr ""
751 
752-#: html.c:3590
753+#: html.c:3979
754 msgid "Follow Request"
755 msgstr ""
756 
757-#: html.c:3674
758+#: html.c:4089
759 msgid "Context"
760 msgstr ""
761 
762-#: html.c:3692
763+#: html.c:4107
764 msgid "New"
765 msgstr ""
766 
767-#: html.c:3707
768+#: html.c:4122
769 msgid "Already seen"
770 msgstr ""
771 
772-#: html.c:3722
773+#: html.c:4137
774 msgid "None"
775 msgstr ""
776 
777-#: html.c:3994
778+#: html.c:4414
779 #, c-format
780 msgid "Search results for account %s"
781 msgstr ""
782 
783-#: html.c:4001
784+#: html.c:4421
785 #, c-format
786 msgid "Account %s not found"
787 msgstr ""
788 
789-#: html.c:4032
790+#: html.c:4452
791 #, c-format
792 msgid "Search results for tag %s"
793 msgstr ""
794 
795-#: html.c:4032
796+#: html.c:4452
797 #, c-format
798 msgid "Nothing found for tag %s"
799 msgstr ""
800 
801-#: html.c:4048
802+#: html.c:4468
803 #, c-format
804 msgid "Search results for '%s' (may be more)"
805 msgstr ""
806 
807-#: html.c:4051
808+#: html.c:4471
809 #, c-format
810 msgid "Search results for '%s'"
811 msgstr ""
812 
813-#: html.c:4054
814+#: html.c:4474
815 #, c-format
816 msgid "No more matches for '%s'"
817 msgstr ""
818 
819-#: html.c:4056
820+#: html.c:4476
821 #, c-format
822 msgid "Nothing found for '%s'"
823 msgstr ""
824 
825-#: html.c:4154
826+#: html.c:4574
827 msgid "Showing instance timeline"
828 msgstr ""
829 
830-#: html.c:4237
831+#: html.c:4657
832 #, c-format
833 msgid "Showing timeline for list '%s'"
834 msgstr ""
835 
836-#: httpd.c:258
837+#: httpd.c:259
838 #, c-format
839 msgid "Search results for tag #%s"
840 msgstr ""
841 
842-#: httpd.c:267
843+#: httpd.c:268
844 msgid "Recent posts by users in this instance"
845 msgstr ""
846 
847-#: html.c:1764
848+#: html.c:1842
849 msgid "Blocked hashtags..."
850 msgstr ""
851 
852-#: html.c:518
853+#: html.c:574
854 msgid "Optional URL to reply to"
855 msgstr ""
856 
857-#: html.c:695
858+#: html.c:751
859 msgid ""
860 "Option 1...\n"
861 "Option 2...\n"
862@@ -701,94 +701,106 @@ msgid ""
863 "..."
864 msgstr ""
865 
866-#: html.c:1558
867+#: html.c:1636
868 msgid "Bot API key"
869 msgstr ""
870 
871-#: html.c:1564
872+#: html.c:1642
873 msgid "Chat id"
874 msgstr ""
875 
876-#: html.c:1572
877+#: html.c:1650
878 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
879 msgstr ""
880 
881-#: html.c:1578
882+#: html.c:1656
883 msgid "ntfy token - if needed"
884 msgstr ""
885 
886-#: html.c:3078
887+#: html.c:3366
888 msgid "pinned"
889 msgstr ""
890 
891-#: html.c:3090
892+#: html.c:3378
893 msgid "bookmarks"
894 msgstr ""
895 
896-#: html.c:3102
897+#: html.c:3390
898 msgid "drafts"
899 msgstr ""
900 
901-#: html.c:584
902+#: html.c:640
903 msgid "Scheduled post..."
904 msgstr ""
905 
906 msgid "Post date and time:"
907 msgstr ""
908 
909-#: html.c:3113 html.c:4214
910+#: html.c:3401 html.c:4634
911 msgid "Scheduled posts"
912 msgstr ""
913 
914-#: html.c:3114
915+#: html.c:3402
916 msgid "scheduled posts"
917 msgstr ""
918 
919-#: html.c:578
920+#: html.c:634
921 #, c-format
922 msgid "Post date and time (timezone: %s):"
923 msgstr ""
924 
925-#: html.c:1689
926+#: html.c:1767
927 msgid "Time zone:"
928 msgstr ""
929 
930-#: html.c:559
931+#: html.c:615
932 msgid "Language:"
933 msgstr ""
934 
935-#: html.c:1580
936+#: html.c:1658
937 msgid "Notify webhook:"
938 msgstr ""
939 
940-#: html.c:1586
941+#: html.c:1664
942 msgid "http://example.com/webhook"
943 msgstr ""
944 
945-#: html.c:1694
946+#: html.c:1772
947 msgid "Languages you usually post in:"
948 msgstr ""
949 
950-#: html.c:1700
951+#: html.c:1778
952 msgid "en fr es de_AT"
953 msgstr ""
954 
955-#: html.c:460
956+#: html.c:428
957 msgid "Visibility: "
958 msgstr ""
959 
960-#: html.c:468
961 msgid "Public"
962 msgstr ""
963 
964-#: html.c:477
965 msgid "Unlisted"
966 msgstr ""
967 
968-#: html.c:486
969 msgid "Followers-only"
970 msgstr ""
971 
972-#: html.c:495
973 msgid "Direct Message"
974 msgstr ""
975+
976+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
977+msgid "EmojiUnreact"
978+msgstr ""
979+
980+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
981+msgid "EmojiReact"
982+msgstr ""
983+
984+#: html.c:2115
985+msgid "Emoji react..."
986+msgstr ""
987+
988+#: html.c:2609
989+msgid "Emoji reactions: "
990+msgstr ""
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: es\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Contenido sensible: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Descripción del contenido sensible"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Solo personas mencionadas: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Responder a (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "No enviar. Guardar como borrador"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Borrador:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Adjuntos..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Archivo:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Limpiar este campo para eliminar el adjunto"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Descripción del adjunto"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Encuesta..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Opciones de encuesta (una por línea, hasta 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Una opción"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Opciones múltiples"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Finalizar en 5 minutos"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Finalizar en 1 hora"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Finalizar en 1 día"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Publicar"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Descripción del sitio"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email del Administrador"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Cuenta del Administrador"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d siguiendo, %d seguidores"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privado"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "público"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notificaciones"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "personas"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instancia"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,576 +128,576 @@ msgstr ""
150 "Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
151 "@usuario@host , ó #etiqueta"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Buscar contenido"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "link verificado"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Ubicación: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nueva Publicación..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "¿En qué estás pensando?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Operaciones..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Seguir"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(por URL o usuario@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Impulsar"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(por URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Me gusta"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Configuración de usuario..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Nombre para mostrar:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Su nombre"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Eliminar avatar"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Imagen de cabecera (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Eliminar imagen de cabecera"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Escriba algo sobre usted aquí..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Siempre mostrar contenido sensible"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Cuenta de email para las notificaciones:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "Notificaciones en ntfy (servidor ntfy y token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr ""
277 "Plazo máximo de conservación de publicaciones en días (0: usar configuración "
278 "del servidor):"
279 
280-#: html.c:1602
281+#: html.c:1680
282 msgid "Drop direct messages from people you don't follow"
283 msgstr "Descartar mensajes directos de personas a las que no sigue"
284 
285-#: html.c:1611
286+#: html.c:1689
287 msgid "This account is a bot"
288 msgstr "Esta cuenta es un bot"
289 
290-#: html.c:1620
291+#: html.c:1698
292 msgid "Auto-boost all mentions to this account"
293 msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
294 
295-#: html.c:1629
296+#: html.c:1707
297 msgid "This account is private (posts are not shown through the web)"
298 msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
299 
300-#: html.c:1639
301+#: html.c:1717
302 msgid "Collapse top threads by default"
303 msgstr "Contraer hilo de publicaciones por defecto"
304 
305-#: html.c:1648
306+#: html.c:1726
307 msgid "Follow requests must be approved"
308 msgstr "Las solicitudes de seguimiento deben ser aprobadas"
309 
310-#: html.c:1657
311+#: html.c:1735
312 msgid "Publish follower and following metrics"
313 msgstr "Mostrar cantidad de seguidores y seguidos"
314 
315-#: html.c:1659
316+#: html.c:1737
317 msgid "Current location:"
318 msgstr "Ubicación actual:"
319 
320-#: html.c:1673
321+#: html.c:1751
322 msgid "Profile metadata (key=value pairs in each line):"
323 msgstr "Metadata del perfil (pares llave=valor en cada línea):"
324 
325-#: html.c:1684
326+#: html.c:1762
327 msgid "Web interface language:"
328 msgstr "Idioma de la interfaz Web:"
329 
330-#: html.c:1703
331+#: html.c:1781
332 msgid "New password:"
333 msgstr "Nueva contraseña:"
334 
335-#: html.c:1710
336+#: html.c:1788
337 msgid "Repeat new password:"
338 msgstr "Repetir nueva contraseña:"
339 
340-#: html.c:1720
341+#: html.c:1798
342 msgid "Update user info"
343 msgstr "Actualizar información de usuario"
344 
345-#: html.c:1731
346+#: html.c:1809
347 msgid "Followed hashtags..."
348 msgstr "Etiquetas en seguimiento..."
349 
350-#: html.c:1733 html.c:1766
351+#: html.c:1811 html.c:1844
352 msgid "One hashtag per line"
353 msgstr "Una etiqueta por línea"
354 
355-#: html.c:1755 html.c:1787
356+#: html.c:1833 html.c:1865
357 msgid "Update hashtags"
358 msgstr "Actualizar etiquetas"
359 
360-#: html.c:1904
361+#: html.c:1982
362 msgid "Say you like this post"
363 msgstr "Decir que te gusta esta publicación"
364 
365-#: html.c:1909 html.c:4775
366+#: html.c:1987 html.c:5219
367 msgid "Unlike"
368 msgstr "No me gusta"
369 
370-#: html.c:1909
371+#: html.c:1987
372 msgid "Nah don't like it that much"
373 msgstr "Nah, no me gusta tanto"
374 
375-#: html.c:1915 html.c:4912
376+#: html.c:1993 html.c:5356
377 msgid "Unpin"
378 msgstr "Desanclar"
379 
380-#: html.c:1915
381+#: html.c:1993
382 msgid "Unpin this post from your timeline"
383 msgstr "Desanclar esta publicación de su línea de tiempo"
384 
385-#: html.c:1918 html.c:4907
386+#: html.c:1996 html.c:5351
387 msgid "Pin"
388 msgstr "Anclar"
389 
390-#: html.c:1918
391+#: html.c:1996
392 msgid "Pin this post to the top of your timeline"
393 msgstr "Anclar esta publicación al inicio de su línea de tiempo"
394 
395-#: html.c:1925
396+#: html.c:2003
397 msgid "Announce this post to your followers"
398 msgstr "Anunciar esta publicación a sus seguidores"
399 
400-#: html.c:1930 html.c:4783
401+#: html.c:2008 html.c:5227
402 msgid "Unboost"
403 msgstr "Eliminar impulso"
404 
405-#: html.c:1930
406+#: html.c:2008
407 msgid "I regret I boosted this"
408 msgstr "Me arrepiento de haber impulsado esto"
409 
410-#: html.c:1936 html.c:4922
411+#: html.c:2014 html.c:5366
412 msgid "Unbookmark"
413 msgstr "Eliminar marcador"
414 
415-#: html.c:1936
416+#: html.c:2014
417 msgid "Delete this post from your bookmarks"
418 msgstr "Eliminar marcador de esta publicación"
419 
420-#: html.c:1939 html.c:4917
421+#: html.c:2017 html.c:5361
422 msgid "Bookmark"
423 msgstr "Marcador"
424 
425-#: html.c:1939
426+#: html.c:2017
427 msgid "Add this post to your bookmarks"
428 msgstr "Agregar esta publicación a mis marcadores"
429 
430-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
431+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
432 msgid "Unfollow"
433 msgstr "Dejar de seguir"
434 
435-#: html.c:1945 html.c:3387
436+#: html.c:2023 html.c:3763 html.c:4042
437 msgid "Stop following this user's activity"
438 msgstr "Dejar de seguir la actividad de este usuario"
439 
440-#: html.c:1949 html.c:3401
441+#: html.c:2027 html.c:3777 html.c:4044
442 msgid "Start following this user's activity"
443 msgstr "Seguir la actividad de este usuario"
444 
445-#: html.c:1955 html.c:4860
446+#: html.c:2033 html.c:5304
447 msgid "Unfollow Group"
448 msgstr "Dejar de seguir este Grupo"
449 
450-#: html.c:1956
451+#: html.c:2034
452 msgid "Stop following this group or channel"
453 msgstr "Dejar de seguir este grupo o canal"
454 
455-#: html.c:1960 html.c:4847
456+#: html.c:2038 html.c:5291
457 msgid "Follow Group"
458 msgstr "Seguir Grupo"
459 
460-#: html.c:1961
461+#: html.c:2039
462 msgid "Start following this group or channel"
463 msgstr "Seguir grupo o canal"
464 
465-#: html.c:1966 html.c:3423 html.c:4791
466+#: html.c:2044 html.c:3799 html.c:5235
467 msgid "MUTE"
468 msgstr "SILENCIAR"
469 
470-#: html.c:1967
471+#: html.c:2045
472 msgid "Block any activity from this user forever"
473 msgstr "Bloquear toda la actividad de este usuario para siempre"
474 
475-#: html.c:1972 html.c:3405 html.c:4877
476+#: html.c:2050 html.c:3781 html.c:5321
477 msgid "Delete"
478 msgstr "Eliminar"
479 
480-#: html.c:1972
481+#: html.c:2050
482 msgid "Delete this post"
483 msgstr "Eliminar esta publicación"
484 
485-#: html.c:1975 html.c:4799
486+#: html.c:2053 html.c:5243
487 msgid "Hide"
488 msgstr "Ocultar"
489 
490-#: html.c:1975
491+#: html.c:2053
492 msgid "Hide this post and its children"
493 msgstr "Ocultar esta publicación y sus respuestas"
494 
495-#: html.c:2017
496+#: html.c:2095
497 msgid "Edit..."
498 msgstr "Editar..."
499 
500-#: html.c:2039
501+#: html.c:2133
502 msgid "Reply..."
503 msgstr "Responder..."
504 
505-#: html.c:2090
506+#: html.c:2184
507 msgid "Truncated (too deep)"
508 msgstr "Truncado (demasiado profundo)"
509 
510-#: html.c:2108
511+#: html.c:2202
512 msgid "follows you"
513 msgstr "te sigue"
514 
515-#: html.c:2182
516+#: html.c:2276
517 msgid "Pinned"
518 msgstr "Anclado"
519 
520-#: html.c:2190
521+#: html.c:2284
522 msgid "Bookmarked"
523 msgstr "Marcado"
524 
525-#: html.c:2198
526+#: html.c:2292
527 msgid "Poll"
528 msgstr "Encuesta"
529 
530-#: html.c:2205
531+#: html.c:2299
532 msgid "Voted"
533 msgstr "Votado"
534 
535-#: html.c:2214
536+#: html.c:2308
537 msgid "Event"
538 msgstr "Evento"
539 
540-#: html.c:2246 html.c:2275
541+#: html.c:2340 html.c:2369
542 msgid "boosted"
543 msgstr "impulsado"
544 
545-#: html.c:2289
546+#: html.c:2383
547 msgid "in reply to"
548 msgstr "en respuesta a"
549 
550-#: html.c:2345
551+#: html.c:2439
552 msgid " [SENSITIVE CONTENT]"
553 msgstr " [CONTENIDO SENSIBLE]"
554 
555-#: html.c:2512
556+#: html.c:2796
557 msgid "Vote"
558 msgstr "Votar"
559 
560-#: html.c:2522
561+#: html.c:2806
562 msgid "Closed"
563 msgstr "Cerrado"
564 
565-#: html.c:2547
566+#: html.c:2831
567 msgid "Closes in"
568 msgstr "Cierra en"
569 
570-#: html.c:2627
571+#: html.c:2911
572 msgid "Video"
573 msgstr "Video"
574 
575-#: html.c:2642
576+#: html.c:2926
577 msgid "Audio"
578 msgstr "Audio"
579 
580-#: html.c:2670
581+#: html.c:2954
582 msgid "Attachment"
583 msgstr "Adjunto"
584 
585-#: html.c:2684
586+#: html.c:2968
587 msgid "Alt..."
588 msgstr "Alt..."
589 
590-#: html.c:2697
591+#: html.c:2981
592 msgid "Source channel or community"
593 msgstr "Canal o comunidad de origen"
594 
595-#: html.c:2791
596+#: html.c:3075
597 msgid "Time: "
598 msgstr "Hora: "
599 
600-#: html.c:2872
601+#: html.c:3156
602 msgid "Older..."
603 msgstr "Más antiguo..."
604 
605-#: html.c:2974
606+#: html.c:3258
607 msgid "about this site"
608 msgstr "acerca de este sitio"
609 
610-#: html.c:2976
611+#: html.c:3260
612 msgid "powered by "
613 msgstr "provisto por "
614 
615-#: html.c:3041
616+#: html.c:3329
617 msgid "Dismiss"
618 msgstr "Descartar"
619 
620-#: html.c:3058
621+#: html.c:3346
622 #, c-format
623 msgid "Timeline for list '%s'"
624 msgstr "Línea de tiempo de la lista '%s'"
625 
626-#: html.c:3077 html.c:4169
627+#: html.c:3365 html.c:4589
628 msgid "Pinned posts"
629 msgstr "Publicaciones ancladas"
630 
631-#: html.c:3089 html.c:4184
632+#: html.c:3377 html.c:4604
633 msgid "Bookmarked posts"
634 msgstr "Publicaciones marcadas"
635 
636-#: html.c:3101 html.c:4199
637+#: html.c:3389 html.c:4619
638 msgid "Post drafts"
639 msgstr "Borradores de publicaciones"
640 
641-#: html.c:3177
642+#: html.c:3465
643 msgid "No more unseen posts"
644 msgstr "No quedan publicaciones sin ver"
645 
646-#: html.c:3181 html.c:3290
647+#: html.c:3469 html.c:3578
648 msgid "Back to top"
649 msgstr "Volver al inicio"
650 
651-#: html.c:3243
652+#: html.c:3531
653 msgid "History"
654 msgstr "Historia"
655 
656-#: html.c:3295 html.c:3734
657+#: html.c:3583 html.c:4149
658 msgid "More..."
659 msgstr "Más..."
660 
661-#: html.c:3391 html.c:4813
662+#: html.c:3767 html.c:5257
663 msgid "Unlimit"
664 msgstr "Sin límite"
665 
666-#: html.c:3392
667+#: html.c:3768
668 msgid "Allow announces (boosts) from this user"
669 msgstr "Permitir anuncios (impulsos) de este usuario"
670 
671-#: html.c:3395 html.c:4809
672+#: html.c:3771 html.c:5253
673 msgid "Limit"
674 msgstr "Límite"
675 
676-#: html.c:3396
677+#: html.c:3772
678 msgid "Block announces (boosts) from this user"
679 msgstr "Bloquear anuncios (impulsos) de este usuario"
680 
681-#: html.c:3405
682+#: html.c:3781
683 msgid "Delete this user"
684 msgstr "Eliminar este usuario"
685 
686-#: html.c:3410 html.c:4927
687+#: html.c:3786 html.c:5371
688 msgid "Approve"
689 msgstr "Aprobar"
690 
691-#: html.c:3411
692+#: html.c:3787
693 msgid "Approve this follow request"
694 msgstr "Aprobar solicitud de seguimiento"
695 
696-#: html.c:3414 html.c:4951
697+#: html.c:3790 html.c:5395
698 msgid "Discard"
699 msgstr "Descartar"
700 
701-#: html.c:3414
702+#: html.c:3790
703 msgid "Discard this follow request"
704 msgstr "Descartar solicitud de seguimiento"
705 
706-#: html.c:3419 html.c:4795
707+#: html.c:3795 html.c:5239
708 msgid "Unmute"
709 msgstr "Dejar de SILENCIAR"
710 
711-#: html.c:3420
712+#: html.c:3796
713 msgid "Stop blocking activities from this user"
714 msgstr "Dejar de bloquear actividad de este usuario"
715 
716-#: html.c:3424
717+#: html.c:3800
718 msgid "Block any activity from this user"
719 msgstr "Bloquear toda actividad de este usuario"
720 
721-#: html.c:3432
722+#: html.c:3808
723 msgid "Direct Message..."
724 msgstr "Mensaje Directo..."
725 
726-#: html.c:3467
727+#: html.c:3843
728 msgid "Pending follow confirmations"
729 msgstr "Confirmaciones de seguimiento pendientes"
730 
731-#: html.c:3471
732+#: html.c:3847
733 msgid "People you follow"
734 msgstr "Personas que sigues"
735 
736-#: html.c:3472
737+#: html.c:3848
738 msgid "People that follow you"
739 msgstr "Personas que te siguen"
740 
741-#: html.c:3511
742+#: html.c:3887
743 msgid "Clear all"
744 msgstr "Limpiar todo"
745 
746-#: html.c:3571
747+#: html.c:3951
748 msgid "Mention"
749 msgstr "Mención"
750 
751-#: html.c:3574
752+#: html.c:3954
753 msgid "Finished poll"
754 msgstr "Encuesta finalizada"
755 
756-#: html.c:3590
757+#: html.c:3979
758 msgid "Follow Request"
759 msgstr "Solicitud de Seguimiento"
760 
761-#: html.c:3674
762+#: html.c:4089
763 msgid "Context"
764 msgstr "Contexto"
765 
766-#: html.c:3692
767+#: html.c:4107
768 msgid "New"
769 msgstr "Nuevo"
770 
771-#: html.c:3707
772+#: html.c:4122
773 msgid "Already seen"
774 msgstr "Ya visto"
775 
776-#: html.c:3722
777+#: html.c:4137
778 msgid "None"
779 msgstr "Ninguno"
780 
781-#: html.c:3994
782+#: html.c:4414
783 #, c-format
784 msgid "Search results for account %s"
785 msgstr "Buscar resultados para la cuenta %s"
786 
787-#: html.c:4001
788+#: html.c:4421
789 #, c-format
790 msgid "Account %s not found"
791 msgstr "No se encontró la cuenta %s"
792 
793-#: html.c:4032
794+#: html.c:4452
795 #, c-format
796 msgid "Search results for tag %s"
797 msgstr "Buscar resultados para la etiqueta %s"
798 
799-#: html.c:4032
800+#: html.c:4452
801 #, c-format
802 msgid "Nothing found for tag %s"
803 msgstr "No se encontró nada con la etiqueta %s"
804 
805-#: html.c:4048
806+#: html.c:4468
807 #, c-format
808 msgid "Search results for '%s' (may be more)"
809 msgstr "Resultados de búsqueda para '%s' (puede haber más)"
810 
811-#: html.c:4051
812+#: html.c:4471
813 #, c-format
814 msgid "Search results for '%s'"
815 msgstr "Resultados de búsqueda para '%s'"
816 
817-#: html.c:4054
818+#: html.c:4474
819 #, c-format
820 msgid "No more matches for '%s'"
821 msgstr "No hay más coincidencias para '%s'"
822 
823-#: html.c:4056
824+#: html.c:4476
825 #, c-format
826 msgid "Nothing found for '%s'"
827 msgstr "No se encontró nada para '%s'"
828 
829-#: html.c:4154
830+#: html.c:4574
831 msgid "Showing instance timeline"
832 msgstr "Mostrando línea de tiempo de la instancia"
833 
834-#: html.c:4237
835+#: html.c:4657
836 #, c-format
837 msgid "Showing timeline for list '%s'"
838 msgstr "Mostrando línea de tiempo de la lista '%s'"
839 
840-#: httpd.c:258
841+#: httpd.c:259
842 #, c-format
843 msgid "Search results for tag #%s"
844 msgstr "Resultado de búsqueda para la etiqueta #%s"
845 
846-#: httpd.c:267
847+#: httpd.c:268
848 msgid "Recent posts by users in this instance"
849 msgstr "Publicaciones recientes de los usuarios de esta instancia"
850 
851-#: html.c:1764
852+#: html.c:1842
853 msgid "Blocked hashtags..."
854 msgstr "Etiquetas bloqueadas..."
855 
856-#: html.c:518
857+#: html.c:574
858 msgid "Optional URL to reply to"
859 msgstr "URL opcional a la que responder"
860 
861-#: html.c:695
862+#: html.c:751
863 msgid ""
864 "Option 1...\n"
865 "Option 2...\n"
866@@ -709,91 +709,103 @@ msgstr ""
867 "Opción 3...\n"
868 "..."
869 
870-#: html.c:1558
871+#: html.c:1636
872 msgid "Bot API key"
873 msgstr "Clave del API del Bot"
874 
875-#: html.c:1564
876+#: html.c:1642
877 msgid "Chat id"
878 msgstr "Identificador de chat"
879 
880-#: html.c:1572
881+#: html.c:1650
882 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
883 msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
884 
885-#: html.c:1578
886+#: html.c:1656
887 msgid "ntfy token - if needed"
888 msgstr "Token ntft - si es necesario"
889 
890-#: html.c:3078
891+#: html.c:3366
892 msgid "pinned"
893 msgstr "Anclados"
894 
895-#: html.c:3090
896+#: html.c:3378
897 msgid "bookmarks"
898 msgstr "Marcados"
899 
900-#: html.c:3102
901+#: html.c:3390
902 msgid "drafts"
903 msgstr "Borradores"
904 
905-#: html.c:584
906+#: html.c:640
907 msgid "Scheduled post..."
908 msgstr "Envío programado..."
909 
910-#: html.c:3113 html.c:4214
911+#: html.c:3401 html.c:4634
912 msgid "Scheduled posts"
913 msgstr "Envíos programados"
914 
915-#: html.c:3114
916+#: html.c:3402
917 msgid "scheduled posts"
918 msgstr "envíos programados"
919 
920-#: html.c:578
921+#: html.c:634
922 #, c-format
923 msgid "Post date and time (timezone: %s):"
924 msgstr "Fecha y hora de publicación (zona horaria: %s):"
925 
926-#: html.c:1689
927+#: html.c:1767
928 msgid "Time zone:"
929 msgstr "Zona horaria:"
930 
931-#: html.c:559
932+#: html.c:615
933 msgid "Language:"
934 msgstr "Idioma:"
935 
936-#: html.c:1580
937+#: html.c:1658
938 msgid "Notify webhook:"
939 msgstr "Webhook de notificación:"
940 
941-#: html.c:1586
942+#: html.c:1664
943 msgid "http://example.com/webhook"
944 msgstr ""
945 
946-#: html.c:1694
947+#: html.c:1772
948 msgid "Languages you usually post in:"
949 msgstr "Idiomas en los que sueles escribir:"
950 
951-#: html.c:1700
952+#: html.c:1778
953 msgid "en fr es de_AT"
954 msgstr ""
955 
956-#: html.c:460
957+#: html.c:428
958 msgid "Visibility: "
959 msgstr "Visibilidad: "
960 
961-#: html.c:468
962 msgid "Public"
963 msgstr "Público"
964 
965-#: html.c:477
966 msgid "Unlisted"
967 msgstr "No listado"
968 
969-#: html.c:486
970 msgid "Followers-only"
971 msgstr "Solo seguidores"
972 
973-#: html.c:495
974 msgid "Direct Message"
975 msgstr "Mensaje directo"
976+
977+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
978+msgid "EmojiUnreact"
979+msgstr ""
980+
981+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
982+msgid "EmojiReact"
983+msgstr ""
984+
985+#: html.c:2115
986+msgid "Emoji react..."
987+msgstr "Reaccionar con un emoji..."
988+
989+#: html.c:2609
990+msgid "Emoji reactions: "
991+msgstr "Reacciones con emoji: "
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: es_AR\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Contenido sensible: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Descripción del contenido sensible"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Solo personas mencionadas: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Responder a (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "No enviar. Guardar como borrador"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Borrador:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Adjuntos..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Archivo:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Limpiar este campo para eliminar el adjunto"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Descripción del adjunto"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Encuesta..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Opciones de encuesta (una por línea, hasta 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Una opción"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Opciones múltiples"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Finalizar en 5 minutos"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Finalizar en 1 hora"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Finalizar en 1 día"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Publicar"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Descripción del sitio"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email del Administrador"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Cuenta del Administrador"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d siguiendo, %d seguidores"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privado"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "público"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notificaciones"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "personas"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instancia"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,576 +128,576 @@ msgstr ""
150 "Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
151 "@usuario@host , ó #etiqueta"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Buscar contenido"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "link verificado"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Ubicación: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nueva Publicación..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "¿En qué estás pensando?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Operaciones..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Seguir"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(por URL o usuario@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Impulsar"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(por URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Me gusta"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Configuración de usuario..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Nombre para mostrar:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Su nombre"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Eliminar avatar"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Imagen de cabecera (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Eliminar imagen de cabecera"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Escriba algo sobre usted aquí..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Siempre mostrar contenido sensible"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Cuenta de email para las notificaciones:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "Notificaciones en ntfy (servidor ntfy y token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr ""
277 "Plazo máximo de conservación de publicaciones en días (0: usar configuración "
278 "del servidor):"
279 
280-#: html.c:1602
281+#: html.c:1680
282 msgid "Drop direct messages from people you don't follow"
283 msgstr "Descartar mensajes directos de personas a las que no sigue"
284 
285-#: html.c:1611
286+#: html.c:1689
287 msgid "This account is a bot"
288 msgstr "Esta cuenta es un bot"
289 
290-#: html.c:1620
291+#: html.c:1698
292 msgid "Auto-boost all mentions to this account"
293 msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
294 
295-#: html.c:1629
296+#: html.c:1707
297 msgid "This account is private (posts are not shown through the web)"
298 msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
299 
300-#: html.c:1639
301+#: html.c:1717
302 msgid "Collapse top threads by default"
303 msgstr "Contraer hilo de publicaciones por defecto"
304 
305-#: html.c:1648
306+#: html.c:1726
307 msgid "Follow requests must be approved"
308 msgstr "Las solicitudes de seguimiento deben ser aprobadas"
309 
310-#: html.c:1657
311+#: html.c:1735
312 msgid "Publish follower and following metrics"
313 msgstr "Mostrar cantidad de seguidores y seguidos"
314 
315-#: html.c:1659
316+#: html.c:1737
317 msgid "Current location:"
318 msgstr "Ubicación actual:"
319 
320-#: html.c:1673
321+#: html.c:1751
322 msgid "Profile metadata (key=value pairs in each line):"
323 msgstr "Metadata del perfil (pares llave=valor en cada línea):"
324 
325-#: html.c:1684
326+#: html.c:1762
327 msgid "Web interface language:"
328 msgstr "Idioma de la interfaz Web:"
329 
330-#: html.c:1703
331+#: html.c:1781
332 msgid "New password:"
333 msgstr "Nueva contraseña:"
334 
335-#: html.c:1710
336+#: html.c:1788
337 msgid "Repeat new password:"
338 msgstr "Repetir nueva contraseña:"
339 
340-#: html.c:1720
341+#: html.c:1798
342 msgid "Update user info"
343 msgstr "Actualizar información de usuario"
344 
345-#: html.c:1731
346+#: html.c:1809
347 msgid "Followed hashtags..."
348 msgstr "Etiquetas en seguimiento..."
349 
350-#: html.c:1733 html.c:1766
351+#: html.c:1811 html.c:1844
352 msgid "One hashtag per line"
353 msgstr "Una etiqueta por línea"
354 
355-#: html.c:1755 html.c:1787
356+#: html.c:1833 html.c:1865
357 msgid "Update hashtags"
358 msgstr "Actualizar etiquetas"
359 
360-#: html.c:1904
361+#: html.c:1982
362 msgid "Say you like this post"
363 msgstr "Decir que te gusta esta publicación"
364 
365-#: html.c:1909 html.c:4775
366+#: html.c:1987 html.c:5219
367 msgid "Unlike"
368 msgstr "No me gusta"
369 
370-#: html.c:1909
371+#: html.c:1987
372 msgid "Nah don't like it that much"
373 msgstr "Nah, no me gusta tanto"
374 
375-#: html.c:1915 html.c:4912
376+#: html.c:1993 html.c:5356
377 msgid "Unpin"
378 msgstr "Desanclar"
379 
380-#: html.c:1915
381+#: html.c:1993
382 msgid "Unpin this post from your timeline"
383 msgstr "Desanclar esta publicación de su línea de tiempo"
384 
385-#: html.c:1918 html.c:4907
386+#: html.c:1996 html.c:5351
387 msgid "Pin"
388 msgstr "Anclar"
389 
390-#: html.c:1918
391+#: html.c:1996
392 msgid "Pin this post to the top of your timeline"
393 msgstr "Anclar esta publicación al inicio de su línea de tiempo"
394 
395-#: html.c:1925
396+#: html.c:2003
397 msgid "Announce this post to your followers"
398 msgstr "Anunciar esta publicación a sus seguidores"
399 
400-#: html.c:1930 html.c:4783
401+#: html.c:2008 html.c:5227
402 msgid "Unboost"
403 msgstr "Eliminar impulso"
404 
405-#: html.c:1930
406+#: html.c:2008
407 msgid "I regret I boosted this"
408 msgstr "Me arrepiento de haber impulsado esto"
409 
410-#: html.c:1936 html.c:4922
411+#: html.c:2014 html.c:5366
412 msgid "Unbookmark"
413 msgstr "Eliminar marcador"
414 
415-#: html.c:1936
416+#: html.c:2014
417 msgid "Delete this post from your bookmarks"
418 msgstr "Eliminar marcador de esta publicación"
419 
420-#: html.c:1939 html.c:4917
421+#: html.c:2017 html.c:5361
422 msgid "Bookmark"
423 msgstr "Marcador"
424 
425-#: html.c:1939
426+#: html.c:2017
427 msgid "Add this post to your bookmarks"
428 msgstr "Agregar esta publicación a mis marcadores"
429 
430-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
431+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
432 msgid "Unfollow"
433 msgstr "Dejar de seguir"
434 
435-#: html.c:1945 html.c:3387
436+#: html.c:2023 html.c:3763 html.c:4042
437 msgid "Stop following this user's activity"
438 msgstr "Dejar de seguir la actividad de este usuario"
439 
440-#: html.c:1949 html.c:3401
441+#: html.c:2027 html.c:3777 html.c:4044
442 msgid "Start following this user's activity"
443 msgstr "Seguir la actividad de este usuario"
444 
445-#: html.c:1955 html.c:4860
446+#: html.c:2033 html.c:5304
447 msgid "Unfollow Group"
448 msgstr "Dejar de seguir este Grupo"
449 
450-#: html.c:1956
451+#: html.c:2034
452 msgid "Stop following this group or channel"
453 msgstr "Dejar de seguir este grupo o canal"
454 
455-#: html.c:1960 html.c:4847
456+#: html.c:2038 html.c:5291
457 msgid "Follow Group"
458 msgstr "Seguir Grupo"
459 
460-#: html.c:1961
461+#: html.c:2039
462 msgid "Start following this group or channel"
463 msgstr "Seguir grupo o canal"
464 
465-#: html.c:1966 html.c:3423 html.c:4791
466+#: html.c:2044 html.c:3799 html.c:5235
467 msgid "MUTE"
468 msgstr "SILENCIAR"
469 
470-#: html.c:1967
471+#: html.c:2045
472 msgid "Block any activity from this user forever"
473 msgstr "Bloquear toda la actividad de este usuario para siempre"
474 
475-#: html.c:1972 html.c:3405 html.c:4877
476+#: html.c:2050 html.c:3781 html.c:5321
477 msgid "Delete"
478 msgstr "Eliminar"
479 
480-#: html.c:1972
481+#: html.c:2050
482 msgid "Delete this post"
483 msgstr "Eliminar esta publicación"
484 
485-#: html.c:1975 html.c:4799
486+#: html.c:2053 html.c:5243
487 msgid "Hide"
488 msgstr "Ocultar"
489 
490-#: html.c:1975
491+#: html.c:2053
492 msgid "Hide this post and its children"
493 msgstr "Ocultar esta publicación y sus respuestas"
494 
495-#: html.c:2017
496+#: html.c:2095
497 msgid "Edit..."
498 msgstr "Editar..."
499 
500-#: html.c:2039
501+#: html.c:2133
502 msgid "Reply..."
503 msgstr "Responder..."
504 
505-#: html.c:2090
506+#: html.c:2184
507 msgid "Truncated (too deep)"
508 msgstr "Truncado (demasiado profundo)"
509 
510-#: html.c:2108
511+#: html.c:2202
512 msgid "follows you"
513 msgstr "te sigue"
514 
515-#: html.c:2182
516+#: html.c:2276
517 msgid "Pinned"
518 msgstr "Anclado"
519 
520-#: html.c:2190
521+#: html.c:2284
522 msgid "Bookmarked"
523 msgstr "Marcado"
524 
525-#: html.c:2198
526+#: html.c:2292
527 msgid "Poll"
528 msgstr "Encuesta"
529 
530-#: html.c:2205
531+#: html.c:2299
532 msgid "Voted"
533 msgstr "Votado"
534 
535-#: html.c:2214
536+#: html.c:2308
537 msgid "Event"
538 msgstr "Evento"
539 
540-#: html.c:2246 html.c:2275
541+#: html.c:2340 html.c:2369
542 msgid "boosted"
543 msgstr "impulsado"
544 
545-#: html.c:2289
546+#: html.c:2383
547 msgid "in reply to"
548 msgstr "en respuesta a"
549 
550-#: html.c:2345
551+#: html.c:2439
552 msgid " [SENSITIVE CONTENT]"
553 msgstr " [CONTENIDO SENSIBLE]"
554 
555-#: html.c:2512
556+#: html.c:2796
557 msgid "Vote"
558 msgstr "Votar"
559 
560-#: html.c:2522
561+#: html.c:2806
562 msgid "Closed"
563 msgstr "Cerrado"
564 
565-#: html.c:2547
566+#: html.c:2831
567 msgid "Closes in"
568 msgstr "Cierra en"
569 
570-#: html.c:2627
571+#: html.c:2911
572 msgid "Video"
573 msgstr "Video"
574 
575-#: html.c:2642
576+#: html.c:2926
577 msgid "Audio"
578 msgstr "Audio"
579 
580-#: html.c:2670
581+#: html.c:2954
582 msgid "Attachment"
583 msgstr "Adjunto"
584 
585-#: html.c:2684
586+#: html.c:2968
587 msgid "Alt..."
588 msgstr "Alt..."
589 
590-#: html.c:2697
591+#: html.c:2981
592 msgid "Source channel or community"
593 msgstr "Canal o comunidad de origen"
594 
595-#: html.c:2791
596+#: html.c:3075
597 msgid "Time: "
598 msgstr "Hora: "
599 
600-#: html.c:2872
601+#: html.c:3156
602 msgid "Older..."
603 msgstr "Más antiguo..."
604 
605-#: html.c:2974
606+#: html.c:3258
607 msgid "about this site"
608 msgstr "acerca de este sitio"
609 
610-#: html.c:2976
611+#: html.c:3260
612 msgid "powered by "
613 msgstr "provisto por "
614 
615-#: html.c:3041
616+#: html.c:3329
617 msgid "Dismiss"
618 msgstr "Descartar"
619 
620-#: html.c:3058
621+#: html.c:3346
622 #, c-format
623 msgid "Timeline for list '%s'"
624 msgstr "Línea de tiempo de la lista '%s'"
625 
626-#: html.c:3077 html.c:4169
627+#: html.c:3365 html.c:4589
628 msgid "Pinned posts"
629 msgstr "Publicaciones ancladas"
630 
631-#: html.c:3089 html.c:4184
632+#: html.c:3377 html.c:4604
633 msgid "Bookmarked posts"
634 msgstr "Publicaciones marcadas"
635 
636-#: html.c:3101 html.c:4199
637+#: html.c:3389 html.c:4619
638 msgid "Post drafts"
639 msgstr "Borradores de publicaciones"
640 
641-#: html.c:3177
642+#: html.c:3465
643 msgid "No more unseen posts"
644 msgstr "No quedan publicaciones sin ver"
645 
646-#: html.c:3181 html.c:3290
647+#: html.c:3469 html.c:3578
648 msgid "Back to top"
649 msgstr "Volver al inicio"
650 
651-#: html.c:3243
652+#: html.c:3531
653 msgid "History"
654 msgstr "Historia"
655 
656-#: html.c:3295 html.c:3734
657+#: html.c:3583 html.c:4149
658 msgid "More..."
659 msgstr "Más..."
660 
661-#: html.c:3391 html.c:4813
662+#: html.c:3767 html.c:5257
663 msgid "Unlimit"
664 msgstr "Sin límite"
665 
666-#: html.c:3392
667+#: html.c:3768
668 msgid "Allow announces (boosts) from this user"
669 msgstr "Permitir anuncios (impulsos) de este usuario"
670 
671-#: html.c:3395 html.c:4809
672+#: html.c:3771 html.c:5253
673 msgid "Limit"
674 msgstr "Límite"
675 
676-#: html.c:3396
677+#: html.c:3772
678 msgid "Block announces (boosts) from this user"
679 msgstr "Bloquear anuncios (impulsos) de este usuario"
680 
681-#: html.c:3405
682+#: html.c:3781
683 msgid "Delete this user"
684 msgstr "Eliminar este usuario"
685 
686-#: html.c:3410 html.c:4927
687+#: html.c:3786 html.c:5371
688 msgid "Approve"
689 msgstr "Aprobar"
690 
691-#: html.c:3411
692+#: html.c:3787
693 msgid "Approve this follow request"
694 msgstr "Aprobar solicitud de seguimiento"
695 
696-#: html.c:3414 html.c:4951
697+#: html.c:3790 html.c:5395
698 msgid "Discard"
699 msgstr "Descartar"
700 
701-#: html.c:3414
702+#: html.c:3790
703 msgid "Discard this follow request"
704 msgstr "Descartar solicitud de seguimiento"
705 
706-#: html.c:3419 html.c:4795
707+#: html.c:3795 html.c:5239
708 msgid "Unmute"
709 msgstr "Dejar de SILENCIAR"
710 
711-#: html.c:3420
712+#: html.c:3796
713 msgid "Stop blocking activities from this user"
714 msgstr "Dejar de bloquear actividad de este usuario"
715 
716-#: html.c:3424
717+#: html.c:3800
718 msgid "Block any activity from this user"
719 msgstr "Bloquear toda actividad de este usuario"
720 
721-#: html.c:3432
722+#: html.c:3808
723 msgid "Direct Message..."
724 msgstr "Mensaje Directo..."
725 
726-#: html.c:3467
727+#: html.c:3843
728 msgid "Pending follow confirmations"
729 msgstr "Confirmaciones de seguimiento pendientes"
730 
731-#: html.c:3471
732+#: html.c:3847
733 msgid "People you follow"
734 msgstr "Personas que sigues"
735 
736-#: html.c:3472
737+#: html.c:3848
738 msgid "People that follow you"
739 msgstr "Personas que te siguen"
740 
741-#: html.c:3511
742+#: html.c:3887
743 msgid "Clear all"
744 msgstr "Limpiar todo"
745 
746-#: html.c:3571
747+#: html.c:3951
748 msgid "Mention"
749 msgstr "Mención"
750 
751-#: html.c:3574
752+#: html.c:3954
753 msgid "Finished poll"
754 msgstr "Encuesta finalizada"
755 
756-#: html.c:3590
757+#: html.c:3979
758 msgid "Follow Request"
759 msgstr "Solicitud de Seguimiento"
760 
761-#: html.c:3674
762+#: html.c:4089
763 msgid "Context"
764 msgstr "Contexto"
765 
766-#: html.c:3692
767+#: html.c:4107
768 msgid "New"
769 msgstr "Nuevo"
770 
771-#: html.c:3707
772+#: html.c:4122
773 msgid "Already seen"
774 msgstr "Ya visto"
775 
776-#: html.c:3722
777+#: html.c:4137
778 msgid "None"
779 msgstr "Ninguno"
780 
781-#: html.c:3994
782+#: html.c:4414
783 #, c-format
784 msgid "Search results for account %s"
785 msgstr "Buscar resultados para la cuenta %s"
786 
787-#: html.c:4001
788+#: html.c:4421
789 #, c-format
790 msgid "Account %s not found"
791 msgstr "No se encontró la cuenta %s"
792 
793-#: html.c:4032
794+#: html.c:4452
795 #, c-format
796 msgid "Search results for tag %s"
797 msgstr "Buscar resultados para la etiqueta %s"
798 
799-#: html.c:4032
800+#: html.c:4452
801 #, c-format
802 msgid "Nothing found for tag %s"
803 msgstr "No se encontró nada con la etiqueta %s"
804 
805-#: html.c:4048
806+#: html.c:4468
807 #, c-format
808 msgid "Search results for '%s' (may be more)"
809 msgstr "Resultados de búsqueda para '%s' (puede haber más)"
810 
811-#: html.c:4051
812+#: html.c:4471
813 #, c-format
814 msgid "Search results for '%s'"
815 msgstr "Resultados de búsqueda para '%s'"
816 
817-#: html.c:4054
818+#: html.c:4474
819 #, c-format
820 msgid "No more matches for '%s'"
821 msgstr "No hay más coincidencias para '%s'"
822 
823-#: html.c:4056
824+#: html.c:4476
825 #, c-format
826 msgid "Nothing found for '%s'"
827 msgstr "No se encontró nada para '%s'"
828 
829-#: html.c:4154
830+#: html.c:4574
831 msgid "Showing instance timeline"
832 msgstr "Mostrando línea de tiempo de la instancia"
833 
834-#: html.c:4237
835+#: html.c:4657
836 #, c-format
837 msgid "Showing timeline for list '%s'"
838 msgstr "Mostrando línea de tiempo de la lista '%s'"
839 
840-#: httpd.c:258
841+#: httpd.c:259
842 #, c-format
843 msgid "Search results for tag #%s"
844 msgstr "Resultado de búsqueda para la etiqueta #%s"
845 
846-#: httpd.c:267
847+#: httpd.c:268
848 msgid "Recent posts by users in this instance"
849 msgstr "Publicaciones recientes de los usuarios de esta instancia"
850 
851-#: html.c:1764
852+#: html.c:1842
853 msgid "Blocked hashtags..."
854 msgstr "Etiquetas bloqueadas..."
855 
856-#: html.c:518
857+#: html.c:574
858 msgid "Optional URL to reply to"
859 msgstr "URL opcional a la que responder"
860 
861-#: html.c:695
862+#: html.c:751
863 msgid ""
864 "Option 1...\n"
865 "Option 2...\n"
866@@ -709,91 +709,103 @@ msgstr ""
867 "Opción 3...\n"
868 "..."
869 
870-#: html.c:1558
871+#: html.c:1636
872 msgid "Bot API key"
873 msgstr "Clave del API del Bot"
874 
875-#: html.c:1564
876+#: html.c:1642
877 msgid "Chat id"
878 msgstr "Identificador de chat"
879 
880-#: html.c:1572
881+#: html.c:1650
882 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
883 msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
884 
885-#: html.c:1578
886+#: html.c:1656
887 msgid "ntfy token - if needed"
888 msgstr "Token ntft - si es necesario"
889 
890-#: html.c:3078
891+#: html.c:3366
892 msgid "pinned"
893 msgstr "Anclados"
894 
895-#: html.c:3090
896+#: html.c:3378
897 msgid "bookmarks"
898 msgstr "Marcados"
899 
900-#: html.c:3102
901+#: html.c:3390
902 msgid "drafts"
903 msgstr "Borradores"
904 
905-#: html.c:584
906+#: html.c:640
907 msgid "Scheduled post..."
908 msgstr "Envío programado..."
909 
910-#: html.c:3113 html.c:4214
911+#: html.c:3401 html.c:4634
912 msgid "Scheduled posts"
913 msgstr "Envíos programados"
914 
915-#: html.c:3114
916+#: html.c:3402
917 msgid "scheduled posts"
918 msgstr "envíos programados"
919 
920-#: html.c:578
921+#: html.c:634
922 #, c-format
923 msgid "Post date and time (timezone: %s):"
924 msgstr "Fecha y hora de publicación (zona horaria: %s):"
925 
926-#: html.c:1689
927+#: html.c:1767
928 msgid "Time zone:"
929 msgstr "Zona horaria:"
930 
931-#: html.c:559
932+#: html.c:615
933 msgid "Language:"
934 msgstr "Idioma:"
935 
936-#: html.c:1580
937+#: html.c:1658
938 msgid "Notify webhook:"
939 msgstr "Webhook de notificación:"
940 
941-#: html.c:1586
942+#: html.c:1664
943 msgid "http://example.com/webhook"
944 msgstr ""
945 
946-#: html.c:1694
947+#: html.c:1772
948 msgid "Languages you usually post in:"
949 msgstr "Idiomas en los que sueles escribir:"
950 
951-#: html.c:1700
952+#: html.c:1778
953 msgid "en fr es de_AT"
954 msgstr ""
955 
956-#: html.c:460
957+#: html.c:428
958 msgid "Visibility: "
959 msgstr "Visibilidad: "
960 
961-#: html.c:468
962 msgid "Public"
963 msgstr "Público"
964 
965-#: html.c:477
966 msgid "Unlisted"
967 msgstr "No listado"
968 
969-#: html.c:486
970 msgid "Followers-only"
971 msgstr "Solo seguidores"
972 
973-#: html.c:495
974 msgid "Direct Message"
975 msgstr "Mensaje directo"
976+
977+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
978+msgid "EmojiUnreact"
979+msgstr ""
980+
981+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
982+msgid "EmojiReact"
983+msgstr ""
984+
985+#: html.c:2115
986+msgid "Emoji react..."
987+msgstr "Reaccionar con un emoji..."
988+
989+#: html.c:2609
990+msgid "Emoji reactions: "
991+msgstr "Reacciones con emoji: "
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: es_UY\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Contenido sensible: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Descripción del contenido sensible"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Solo personas mencionadas: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Responder a (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "No enviar. Guardar como borrador"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Borrador:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Adjuntos..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Archivo:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Limpiar este campo para eliminar el adjunto"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Descripción del adjunto"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Encuesta..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Opciones de encuesta (una por línea, hasta 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Una opción"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Opciones múltiples"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Finalizar en 5 minutos"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Finalizar en 1 hora"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Finalizar en 1 día"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Publicar"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Descripción del sitio"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email del Administrador"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Cuenta del Administrador"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d siguiendo, %d seguidores"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privado"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "público"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notificaciones"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "personas"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instancia"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,576 +128,576 @@ msgstr ""
150 "Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
151 "@usuario@host , ó #etiqueta"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Buscar contenido"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "link verificado"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Ubicación: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nueva Publicación..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "¿En qué estás pensando?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Operaciones..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Seguir"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(por URL o usuario@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Impulsar"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(por URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Me gusta"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Configuración de usuario..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Nombre para mostrar:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Su nombre"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Eliminar avatar"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Imagen de cabecera (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Eliminar imagen de cabecera"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Escriba algo sobre usted aquí..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Siempre mostrar contenido sensible"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Cuenta de email para las notificaciones:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "Notificaciones en ntfy (servidor ntfy y token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr ""
277 "Plazo máximo de conservación de publicaciones en días (0: usar configuración "
278 "del servidor):"
279 
280-#: html.c:1602
281+#: html.c:1680
282 msgid "Drop direct messages from people you don't follow"
283 msgstr "Descartar mensajes directos de personas a las que no sigue"
284 
285-#: html.c:1611
286+#: html.c:1689
287 msgid "This account is a bot"
288 msgstr "Esta cuenta es un bot"
289 
290-#: html.c:1620
291+#: html.c:1698
292 msgid "Auto-boost all mentions to this account"
293 msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
294 
295-#: html.c:1629
296+#: html.c:1707
297 msgid "This account is private (posts are not shown through the web)"
298 msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
299 
300-#: html.c:1639
301+#: html.c:1717
302 msgid "Collapse top threads by default"
303 msgstr "Contraer hilo de publicaciones por defecto"
304 
305-#: html.c:1648
306+#: html.c:1726
307 msgid "Follow requests must be approved"
308 msgstr "Las solicitudes de seguimiento deben ser aprobadas"
309 
310-#: html.c:1657
311+#: html.c:1735
312 msgid "Publish follower and following metrics"
313 msgstr "Mostrar cantidad de seguidores y seguidos"
314 
315-#: html.c:1659
316+#: html.c:1737
317 msgid "Current location:"
318 msgstr "Ubicación actual:"
319 
320-#: html.c:1673
321+#: html.c:1751
322 msgid "Profile metadata (key=value pairs in each line):"
323 msgstr "Metadata del perfil (pares llave=valor en cada línea):"
324 
325-#: html.c:1684
326+#: html.c:1762
327 msgid "Web interface language:"
328 msgstr "Idioma de la interfaz Web:"
329 
330-#: html.c:1703
331+#: html.c:1781
332 msgid "New password:"
333 msgstr "Nueva contraseña:"
334 
335-#: html.c:1710
336+#: html.c:1788
337 msgid "Repeat new password:"
338 msgstr "Repetir nueva contraseña:"
339 
340-#: html.c:1720
341+#: html.c:1798
342 msgid "Update user info"
343 msgstr "Actualizar información de usuario"
344 
345-#: html.c:1731
346+#: html.c:1809
347 msgid "Followed hashtags..."
348 msgstr "Etiquetas en seguimiento..."
349 
350-#: html.c:1733 html.c:1766
351+#: html.c:1811 html.c:1844
352 msgid "One hashtag per line"
353 msgstr "Una etiqueta por línea"
354 
355-#: html.c:1755 html.c:1787
356+#: html.c:1833 html.c:1865
357 msgid "Update hashtags"
358 msgstr "Actualizar etiquetas"
359 
360-#: html.c:1904
361+#: html.c:1982
362 msgid "Say you like this post"
363 msgstr "Decir que te gusta esta publicación"
364 
365-#: html.c:1909 html.c:4775
366+#: html.c:1987 html.c:5219
367 msgid "Unlike"
368 msgstr "No me gusta"
369 
370-#: html.c:1909
371+#: html.c:1987
372 msgid "Nah don't like it that much"
373 msgstr "Nah, no me gusta tanto"
374 
375-#: html.c:1915 html.c:4912
376+#: html.c:1993 html.c:5356
377 msgid "Unpin"
378 msgstr "Desanclar"
379 
380-#: html.c:1915
381+#: html.c:1993
382 msgid "Unpin this post from your timeline"
383 msgstr "Desanclar esta publicación de su línea de tiempo"
384 
385-#: html.c:1918 html.c:4907
386+#: html.c:1996 html.c:5351
387 msgid "Pin"
388 msgstr "Anclar"
389 
390-#: html.c:1918
391+#: html.c:1996
392 msgid "Pin this post to the top of your timeline"
393 msgstr "Anclar esta publicación al inicio de su línea de tiempo"
394 
395-#: html.c:1925
396+#: html.c:2003
397 msgid "Announce this post to your followers"
398 msgstr "Anunciar esta publicación a sus seguidores"
399 
400-#: html.c:1930 html.c:4783
401+#: html.c:2008 html.c:5227
402 msgid "Unboost"
403 msgstr "Eliminar impulso"
404 
405-#: html.c:1930
406+#: html.c:2008
407 msgid "I regret I boosted this"
408 msgstr "Me arrepiento de haber impulsado esto"
409 
410-#: html.c:1936 html.c:4922
411+#: html.c:2014 html.c:5366
412 msgid "Unbookmark"
413 msgstr "Eliminar marcador"
414 
415-#: html.c:1936
416+#: html.c:2014
417 msgid "Delete this post from your bookmarks"
418 msgstr "Eliminar marcador de esta publicación"
419 
420-#: html.c:1939 html.c:4917
421+#: html.c:2017 html.c:5361
422 msgid "Bookmark"
423 msgstr "Marcador"
424 
425-#: html.c:1939
426+#: html.c:2017
427 msgid "Add this post to your bookmarks"
428 msgstr "Agregar esta publicación a mis marcadores"
429 
430-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
431+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
432 msgid "Unfollow"
433 msgstr "Dejar de seguir"
434 
435-#: html.c:1945 html.c:3387
436+#: html.c:2023 html.c:3763 html.c:4042
437 msgid "Stop following this user's activity"
438 msgstr "Dejar de seguir la actividad de este usuario"
439 
440-#: html.c:1949 html.c:3401
441+#: html.c:2027 html.c:3777 html.c:4044
442 msgid "Start following this user's activity"
443 msgstr "Seguir la actividad de este usuario"
444 
445-#: html.c:1955 html.c:4860
446+#: html.c:2033 html.c:5304
447 msgid "Unfollow Group"
448 msgstr "Dejar de seguir este Grupo"
449 
450-#: html.c:1956
451+#: html.c:2034
452 msgid "Stop following this group or channel"
453 msgstr "Dejar de seguir este grupo o canal"
454 
455-#: html.c:1960 html.c:4847
456+#: html.c:2038 html.c:5291
457 msgid "Follow Group"
458 msgstr "Seguir Grupo"
459 
460-#: html.c:1961
461+#: html.c:2039
462 msgid "Start following this group or channel"
463 msgstr "Seguir grupo o canal"
464 
465-#: html.c:1966 html.c:3423 html.c:4791
466+#: html.c:2044 html.c:3799 html.c:5235
467 msgid "MUTE"
468 msgstr "SILENCIAR"
469 
470-#: html.c:1967
471+#: html.c:2045
472 msgid "Block any activity from this user forever"
473 msgstr "Bloquear toda la actividad de este usuario para siempre"
474 
475-#: html.c:1972 html.c:3405 html.c:4877
476+#: html.c:2050 html.c:3781 html.c:5321
477 msgid "Delete"
478 msgstr "Eliminar"
479 
480-#: html.c:1972
481+#: html.c:2050
482 msgid "Delete this post"
483 msgstr "Eliminar esta publicación"
484 
485-#: html.c:1975 html.c:4799
486+#: html.c:2053 html.c:5243
487 msgid "Hide"
488 msgstr "Ocultar"
489 
490-#: html.c:1975
491+#: html.c:2053
492 msgid "Hide this post and its children"
493 msgstr "Ocultar esta publicación y sus respuestas"
494 
495-#: html.c:2017
496+#: html.c:2095
497 msgid "Edit..."
498 msgstr "Editar..."
499 
500-#: html.c:2039
501+#: html.c:2133
502 msgid "Reply..."
503 msgstr "Responder..."
504 
505-#: html.c:2090
506+#: html.c:2184
507 msgid "Truncated (too deep)"
508 msgstr "Truncado (demasiado profundo)"
509 
510-#: html.c:2108
511+#: html.c:2202
512 msgid "follows you"
513 msgstr "te sigue"
514 
515-#: html.c:2182
516+#: html.c:2276
517 msgid "Pinned"
518 msgstr "Anclado"
519 
520-#: html.c:2190
521+#: html.c:2284
522 msgid "Bookmarked"
523 msgstr "Marcado"
524 
525-#: html.c:2198
526+#: html.c:2292
527 msgid "Poll"
528 msgstr "Encuesta"
529 
530-#: html.c:2205
531+#: html.c:2299
532 msgid "Voted"
533 msgstr "Votado"
534 
535-#: html.c:2214
536+#: html.c:2308
537 msgid "Event"
538 msgstr "Evento"
539 
540-#: html.c:2246 html.c:2275
541+#: html.c:2340 html.c:2369
542 msgid "boosted"
543 msgstr "impulsado"
544 
545-#: html.c:2289
546+#: html.c:2383
547 msgid "in reply to"
548 msgstr "en respuesta a"
549 
550-#: html.c:2345
551+#: html.c:2439
552 msgid " [SENSITIVE CONTENT]"
553 msgstr " [CONTENIDO SENSIBLE]"
554 
555-#: html.c:2512
556+#: html.c:2796
557 msgid "Vote"
558 msgstr "Votar"
559 
560-#: html.c:2522
561+#: html.c:2806
562 msgid "Closed"
563 msgstr "Cerrado"
564 
565-#: html.c:2547
566+#: html.c:2831
567 msgid "Closes in"
568 msgstr "Cierra en"
569 
570-#: html.c:2627
571+#: html.c:2911
572 msgid "Video"
573 msgstr "Video"
574 
575-#: html.c:2642
576+#: html.c:2926
577 msgid "Audio"
578 msgstr "Audio"
579 
580-#: html.c:2670
581+#: html.c:2954
582 msgid "Attachment"
583 msgstr "Adjunto"
584 
585-#: html.c:2684
586+#: html.c:2968
587 msgid "Alt..."
588 msgstr "Alt..."
589 
590-#: html.c:2697
591+#: html.c:2981
592 msgid "Source channel or community"
593 msgstr "Canal o comunidad de origen"
594 
595-#: html.c:2791
596+#: html.c:3075
597 msgid "Time: "
598 msgstr "Hora: "
599 
600-#: html.c:2872
601+#: html.c:3156
602 msgid "Older..."
603 msgstr "Más antiguo..."
604 
605-#: html.c:2974
606+#: html.c:3258
607 msgid "about this site"
608 msgstr "acerca de este sitio"
609 
610-#: html.c:2976
611+#: html.c:3260
612 msgid "powered by "
613 msgstr "provisto por "
614 
615-#: html.c:3041
616+#: html.c:3329
617 msgid "Dismiss"
618 msgstr "Descartar"
619 
620-#: html.c:3058
621+#: html.c:3346
622 #, c-format
623 msgid "Timeline for list '%s'"
624 msgstr "Línea de tiempo de la lista '%s'"
625 
626-#: html.c:3077 html.c:4169
627+#: html.c:3365 html.c:4589
628 msgid "Pinned posts"
629 msgstr "Publicaciones ancladas"
630 
631-#: html.c:3089 html.c:4184
632+#: html.c:3377 html.c:4604
633 msgid "Bookmarked posts"
634 msgstr "Publicaciones marcadas"
635 
636-#: html.c:3101 html.c:4199
637+#: html.c:3389 html.c:4619
638 msgid "Post drafts"
639 msgstr "Borradores de publicaciones"
640 
641-#: html.c:3177
642+#: html.c:3465
643 msgid "No more unseen posts"
644 msgstr "No quedan publicaciones sin ver"
645 
646-#: html.c:3181 html.c:3290
647+#: html.c:3469 html.c:3578
648 msgid "Back to top"
649 msgstr "Volver al inicio"
650 
651-#: html.c:3243
652+#: html.c:3531
653 msgid "History"
654 msgstr "Historia"
655 
656-#: html.c:3295 html.c:3734
657+#: html.c:3583 html.c:4149
658 msgid "More..."
659 msgstr "Más..."
660 
661-#: html.c:3391 html.c:4813
662+#: html.c:3767 html.c:5257
663 msgid "Unlimit"
664 msgstr "Sin límite"
665 
666-#: html.c:3392
667+#: html.c:3768
668 msgid "Allow announces (boosts) from this user"
669 msgstr "Permitir anuncios (impulsos) de este usuario"
670 
671-#: html.c:3395 html.c:4809
672+#: html.c:3771 html.c:5253
673 msgid "Limit"
674 msgstr "Límite"
675 
676-#: html.c:3396
677+#: html.c:3772
678 msgid "Block announces (boosts) from this user"
679 msgstr "Bloquear anuncios (impulsos) de este usuario"
680 
681-#: html.c:3405
682+#: html.c:3781
683 msgid "Delete this user"
684 msgstr "Eliminar este usuario"
685 
686-#: html.c:3410 html.c:4927
687+#: html.c:3786 html.c:5371
688 msgid "Approve"
689 msgstr "Aprobar"
690 
691-#: html.c:3411
692+#: html.c:3787
693 msgid "Approve this follow request"
694 msgstr "Aprobar solicitud de seguimiento"
695 
696-#: html.c:3414 html.c:4951
697+#: html.c:3790 html.c:5395
698 msgid "Discard"
699 msgstr "Descartar"
700 
701-#: html.c:3414
702+#: html.c:3790
703 msgid "Discard this follow request"
704 msgstr "Descartar solicitud de seguimiento"
705 
706-#: html.c:3419 html.c:4795
707+#: html.c:3795 html.c:5239
708 msgid "Unmute"
709 msgstr "Dejar de SILENCIAR"
710 
711-#: html.c:3420
712+#: html.c:3796
713 msgid "Stop blocking activities from this user"
714 msgstr "Dejar de bloquear actividad de este usuario"
715 
716-#: html.c:3424
717+#: html.c:3800
718 msgid "Block any activity from this user"
719 msgstr "Bloquear toda actividad de este usuario"
720 
721-#: html.c:3432
722+#: html.c:3808
723 msgid "Direct Message..."
724 msgstr "Mensaje Directo..."
725 
726-#: html.c:3467
727+#: html.c:3843
728 msgid "Pending follow confirmations"
729 msgstr "Confirmaciones de seguimiento pendientes"
730 
731-#: html.c:3471
732+#: html.c:3847
733 msgid "People you follow"
734 msgstr "Personas que sigues"
735 
736-#: html.c:3472
737+#: html.c:3848
738 msgid "People that follow you"
739 msgstr "Personas que te siguen"
740 
741-#: html.c:3511
742+#: html.c:3887
743 msgid "Clear all"
744 msgstr "Limpiar todo"
745 
746-#: html.c:3571
747+#: html.c:3951
748 msgid "Mention"
749 msgstr "Mención"
750 
751-#: html.c:3574
752+#: html.c:3954
753 msgid "Finished poll"
754 msgstr "Encuesta finalizada"
755 
756-#: html.c:3590
757+#: html.c:3979
758 msgid "Follow Request"
759 msgstr "Solicitud de Seguimiento"
760 
761-#: html.c:3674
762+#: html.c:4089
763 msgid "Context"
764 msgstr "Contexto"
765 
766-#: html.c:3692
767+#: html.c:4107
768 msgid "New"
769 msgstr "Nuevo"
770 
771-#: html.c:3707
772+#: html.c:4122
773 msgid "Already seen"
774 msgstr "Ya visto"
775 
776-#: html.c:3722
777+#: html.c:4137
778 msgid "None"
779 msgstr "Ninguno"
780 
781-#: html.c:3994
782+#: html.c:4414
783 #, c-format
784 msgid "Search results for account %s"
785 msgstr "Buscar resultados para la cuenta %s"
786 
787-#: html.c:4001
788+#: html.c:4421
789 #, c-format
790 msgid "Account %s not found"
791 msgstr "No se encontró la cuenta %s"
792 
793-#: html.c:4032
794+#: html.c:4452
795 #, c-format
796 msgid "Search results for tag %s"
797 msgstr "Buscar resultados para la etiqueta %s"
798 
799-#: html.c:4032
800+#: html.c:4452
801 #, c-format
802 msgid "Nothing found for tag %s"
803 msgstr "No se encontró nada con la etiqueta %s"
804 
805-#: html.c:4048
806+#: html.c:4468
807 #, c-format
808 msgid "Search results for '%s' (may be more)"
809 msgstr "Resultados de búsqueda para '%s' (puede haber más)"
810 
811-#: html.c:4051
812+#: html.c:4471
813 #, c-format
814 msgid "Search results for '%s'"
815 msgstr "Resultados de búsqueda para '%s'"
816 
817-#: html.c:4054
818+#: html.c:4474
819 #, c-format
820 msgid "No more matches for '%s'"
821 msgstr "No hay más coincidencias para '%s'"
822 
823-#: html.c:4056
824+#: html.c:4476
825 #, c-format
826 msgid "Nothing found for '%s'"
827 msgstr "No se encontró nada para '%s'"
828 
829-#: html.c:4154
830+#: html.c:4574
831 msgid "Showing instance timeline"
832 msgstr "Mostrando línea de tiempo de la instancia"
833 
834-#: html.c:4237
835+#: html.c:4657
836 #, c-format
837 msgid "Showing timeline for list '%s'"
838 msgstr "Mostrando línea de tiempo de la lista '%s'"
839 
840-#: httpd.c:258
841+#: httpd.c:259
842 #, c-format
843 msgid "Search results for tag #%s"
844 msgstr "Resultado de búsqueda para la etiqueta #%s"
845 
846-#: httpd.c:267
847+#: httpd.c:268
848 msgid "Recent posts by users in this instance"
849 msgstr "Publicaciones recientes de los usuarios de esta instancia"
850 
851-#: html.c:1764
852+#: html.c:1842
853 msgid "Blocked hashtags..."
854 msgstr "Etiquetas bloqueadas..."
855 
856-#: html.c:518
857+#: html.c:574
858 msgid "Optional URL to reply to"
859 msgstr "URL opcional a la que responder"
860 
861-#: html.c:695
862+#: html.c:751
863 msgid ""
864 "Option 1...\n"
865 "Option 2...\n"
866@@ -709,91 +709,103 @@ msgstr ""
867 "Opción 3...\n"
868 "..."
869 
870-#: html.c:1558
871+#: html.c:1636
872 msgid "Bot API key"
873 msgstr "Clave del API del Bot"
874 
875-#: html.c:1564
876+#: html.c:1642
877 msgid "Chat id"
878 msgstr "Identificador de chat"
879 
880-#: html.c:1572
881+#: html.c:1650
882 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
883 msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
884 
885-#: html.c:1578
886+#: html.c:1656
887 msgid "ntfy token - if needed"
888 msgstr "Token ntft - si es necesario"
889 
890-#: html.c:3078
891+#: html.c:3366
892 msgid "pinned"
893 msgstr "Anclados"
894 
895-#: html.c:3090
896+#: html.c:3378
897 msgid "bookmarks"
898 msgstr "Marcados"
899 
900-#: html.c:3102
901+#: html.c:3390
902 msgid "drafts"
903 msgstr "Borradores"
904 
905-#: html.c:584
906+#: html.c:640
907 msgid "Scheduled post..."
908 msgstr "Envío programado..."
909 
910-#: html.c:3113 html.c:4214
911+#: html.c:3401 html.c:4634
912 msgid "Scheduled posts"
913 msgstr "Envíos programados"
914 
915-#: html.c:3114
916+#: html.c:3402
917 msgid "scheduled posts"
918 msgstr "envíos programados"
919 
920-#: html.c:578
921+#: html.c:634
922 #, c-format
923 msgid "Post date and time (timezone: %s):"
924 msgstr "Fecha y hora de publicación (zona horaria: %s):"
925 
926-#: html.c:1689
927+#: html.c:1767
928 msgid "Time zone:"
929 msgstr "Zona horaria:"
930 
931-#: html.c:559
932+#: html.c:615
933 msgid "Language:"
934 msgstr "Idioma:"
935 
936-#: html.c:1580
937+#: html.c:1658
938 msgid "Notify webhook:"
939 msgstr "Webhook de notificación:"
940 
941-#: html.c:1586
942+#: html.c:1664
943 msgid "http://example.com/webhook"
944 msgstr ""
945 
946-#: html.c:1694
947+#: html.c:1772
948 msgid "Languages you usually post in:"
949 msgstr "Idiomas en los que sueles escribir:"
950 
951-#: html.c:1700
952+#: html.c:1778
953 msgid "en fr es de_AT"
954 msgstr ""
955 
956-#: html.c:460
957+#: html.c:428
958 msgid "Visibility: "
959 msgstr "Visibilidad: "
960 
961-#: html.c:468
962 msgid "Public"
963 msgstr "Público"
964 
965-#: html.c:477
966 msgid "Unlisted"
967 msgstr "No listado"
968 
969-#: html.c:486
970 msgid "Followers-only"
971 msgstr "Solo seguidores"
972 
973-#: html.c:495
974 msgid "Direct Message"
975 msgstr "Mensaje directo"
976+
977+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
978+msgid "EmojiUnreact"
979+msgstr ""
980+
981+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
982+msgid "EmojiReact"
983+msgstr ""
984+
985+#: html.c:2115
986+msgid "Emoji react..."
987+msgstr "Reaccionar con un emoji..."
988+
989+#: html.c:2609
990+msgid "Emoji reactions: "
991+msgstr "Reacciones con emoji: "
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: fi\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Arkaluontoista sisältöä: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Arkaluontoisen sisällön kuvaus"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Vain mainituille: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Vastaus (osoite): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Älä lähetä, tallenna luonnoksena"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Luonnos:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Liitteet..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Tiedosto:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Tyhjennä kenttä poistaaksesi liiteen"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Liitteen kuvaus"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Kysely..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Kyselyn vaihtoehdot (riveittäin, korkeintaan 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Yksi valinta"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Monta valintaa"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Päättyy viiden minuutin päästä"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Päättyy tunnin päästä"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Päättyy päivän päästä"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Julkaise"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Sivuston kuvaus"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Ylläpitäjän sähköposti"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Ylläpitäjän tili"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "Seuraa %d, %d seuraajaa"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "yksityinen"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "julkinen"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "ilmoitukset"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "ihmiset"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "palvelin"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,574 +128,574 @@ msgstr ""
150 "Etsi julkaisuja osoitteella tai sisällön perusteella, @käyttäjä@palvelin  "
151 "tai #tagi"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Sisälöhaku"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "varmistettu linkki"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Sijainti: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Uusi julkaisu..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Mitä on mielessäsi?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Toiminnot..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Seuraa"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(osoite tai käyttäjä@palvelin)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Tehosta"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(osoite)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Tykkää"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Käyttäjäasetukset..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Näytetty nimi:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Nimesi"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Poista nykyinen avatar"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Otsikkokuva: "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Poista nykyinen otsikkokuva"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Kuvaus:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Kirjoita itsestäsi tähän..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Näytä arkaluontoinen sisältö aina"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Sähköposti ilmoituksille:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Telegram-ilmoitukset (botin avain ja chat id):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "nfty-ilmoitukset (ntfy-palvelin ja token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Säilytä julkaisut korkeintaan (päivää, 0: palvelimen asetukset)"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Poista yksityisviestit ihmisiltä, joita et seuraa"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Tämä tili on botti"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Tehosta tilin maininnat automaattisesti"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr "Tili on yksityinen (julkaisuja ei näytetä sivustolla)"
297 
298-#: html.c:1639
299+#: html.c:1717
300 msgid "Collapse top threads by default"
301 msgstr "Avaa säikeet automaattisesti"
302 
303-#: html.c:1648
304+#: html.c:1726
305 msgid "Follow requests must be approved"
306 msgstr "Vaadi hyväksyntä seurantapyynnöille"
307 
308-#: html.c:1657
309+#: html.c:1735
310 msgid "Publish follower and following metrics"
311 msgstr "Julkaise seuraamistilastot"
312 
313-#: html.c:1659
314+#: html.c:1737
315 msgid "Current location:"
316 msgstr "Nykyinen sijainti:"
317 
318-#: html.c:1673
319+#: html.c:1751
320 msgid "Profile metadata (key=value pairs in each line):"
321 msgstr "Profiilin metadata (avain=arvo, riveittäin):"
322 
323-#: html.c:1684
324+#: html.c:1762
325 msgid "Web interface language:"
326 msgstr "Käyttöliitymän kieli:"
327 
328-#: html.c:1703
329+#: html.c:1781
330 msgid "New password:"
331 msgstr "Uusi salasana:"
332 
333-#: html.c:1710
334+#: html.c:1788
335 msgid "Repeat new password:"
336 msgstr "Toista salasana:"
337 
338-#: html.c:1720
339+#: html.c:1798
340 msgid "Update user info"
341 msgstr "Päivitä käyttäjätiedot"
342 
343-#: html.c:1731
344+#: html.c:1809
345 msgid "Followed hashtags..."
346 msgstr "Seuratut aihetunnisteet..."
347 
348-#: html.c:1733 html.c:1766
349+#: html.c:1811 html.c:1844
350 msgid "One hashtag per line"
351 msgstr "Aihetunnisteet, riveittäin"
352 
353-#: html.c:1755 html.c:1787
354+#: html.c:1833 html.c:1865
355 msgid "Update hashtags"
356 msgstr "Päivitä aihetunnisteet"
357 
358-#: html.c:1904
359+#: html.c:1982
360 msgid "Say you like this post"
361 msgstr "Tykkää tästä julkaisusta"
362 
363-#: html.c:1909 html.c:4775
364+#: html.c:1987 html.c:5219
365 msgid "Unlike"
366 msgstr "Poista tykkäys"
367 
368-#: html.c:1909
369+#: html.c:1987
370 msgid "Nah don't like it that much"
371 msgstr "Ei ole omaan makuuni"
372 
373-#: html.c:1915 html.c:4912
374+#: html.c:1993 html.c:5356
375 msgid "Unpin"
376 msgstr "Poista kiinnitys"
377 
378-#: html.c:1915
379+#: html.c:1993
380 msgid "Unpin this post from your timeline"
381 msgstr "Poista julkaisun kiinnitys aikajanalle"
382 
383-#: html.c:1918 html.c:4907
384+#: html.c:1996 html.c:5351
385 msgid "Pin"
386 msgstr "Kiinnitä"
387 
388-#: html.c:1918
389+#: html.c:1996
390 msgid "Pin this post to the top of your timeline"
391 msgstr "Kiinnitä julkaisu aikajanasi alkuun"
392 
393-#: html.c:1925
394+#: html.c:2003
395 msgid "Announce this post to your followers"
396 msgstr "Ilmoita julkaisusta seuraajillesi"
397 
398-#: html.c:1930 html.c:4783
399+#: html.c:2008 html.c:5227
400 msgid "Unboost"
401 msgstr "Poista tehostus"
402 
403-#: html.c:1930
404+#: html.c:2008
405 msgid "I regret I boosted this"
406 msgstr "Kadun tehostaneeni tätä"
407 
408-#: html.c:1936 html.c:4922
409+#: html.c:2014 html.c:5366
410 msgid "Unbookmark"
411 msgstr "Poista kirjanmerkki"
412 
413-#: html.c:1936
414+#: html.c:2014
415 msgid "Delete this post from your bookmarks"
416 msgstr "Poista julkaisu kirjanmerkeistäsi"
417 
418-#: html.c:1939 html.c:4917
419+#: html.c:2017 html.c:5361
420 msgid "Bookmark"
421 msgstr "Lisää kirjanmerkki"
422 
423-#: html.c:1939
424+#: html.c:2017
425 msgid "Add this post to your bookmarks"
426 msgstr "Lisää julkaisu kirjanmerkkeihisi"
427 
428-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
429+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
430 msgid "Unfollow"
431 msgstr "Älä seuraa"
432 
433-#: html.c:1945 html.c:3387
434+#: html.c:2023 html.c:3763 html.c:4042
435 msgid "Stop following this user's activity"
436 msgstr "Lakkaa seuraamasta käyttäjän toimintaa"
437 
438-#: html.c:1949 html.c:3401
439+#: html.c:2027 html.c:3777 html.c:4044
440 msgid "Start following this user's activity"
441 msgstr "Seuraa käyttäjän toimintaa"
442 
443-#: html.c:1955 html.c:4860
444+#: html.c:2033 html.c:5304
445 msgid "Unfollow Group"
446 msgstr "Älä seuraa ryhmää"
447 
448-#: html.c:1956
449+#: html.c:2034
450 msgid "Stop following this group or channel"
451 msgstr "Lopeta ryhnän tai kanavan seuraaminen"
452 
453-#: html.c:1960 html.c:4847
454+#: html.c:2038 html.c:5291
455 msgid "Follow Group"
456 msgstr "Seuraa ryhmää"
457 
458-#: html.c:1961
459+#: html.c:2039
460 msgid "Start following this group or channel"
461 msgstr "Seuraa tätä ryhmää tai kanavaa"
462 
463-#: html.c:1966 html.c:3423 html.c:4791
464+#: html.c:2044 html.c:3799 html.c:5235
465 msgid "MUTE"
466 msgstr "VAIMENNA"
467 
468-#: html.c:1967
469+#: html.c:2045
470 msgid "Block any activity from this user forever"
471 msgstr "Estä kaikki toiminta tältä käyttäjältä"
472 
473-#: html.c:1972 html.c:3405 html.c:4877
474+#: html.c:2050 html.c:3781 html.c:5321
475 msgid "Delete"
476 msgstr "Poista"
477 
478-#: html.c:1972
479+#: html.c:2050
480 msgid "Delete this post"
481 msgstr "Poista julkaisu"
482 
483-#: html.c:1975 html.c:4799
484+#: html.c:2053 html.c:5243
485 msgid "Hide"
486 msgstr "Piilota"
487 
488-#: html.c:1975
489+#: html.c:2053
490 msgid "Hide this post and its children"
491 msgstr "Piilota julkaisu ja vastaukset"
492 
493-#: html.c:2017
494+#: html.c:2095
495 msgid "Edit..."
496 msgstr "Muokkaa..."
497 
498-#: html.c:2039
499+#: html.c:2133
500 msgid "Reply..."
501 msgstr "Vastaa..."
502 
503-#: html.c:2090
504+#: html.c:2184
505 msgid "Truncated (too deep)"
506 msgstr "Katkaistu (liian syvä)"
507 
508-#: html.c:2108
509+#: html.c:2202
510 msgid "follows you"
511 msgstr "seuraa sinua"
512 
513-#: html.c:2182
514+#: html.c:2276
515 msgid "Pinned"
516 msgstr "Kiinnitetty"
517 
518-#: html.c:2190
519+#: html.c:2284
520 msgid "Bookmarked"
521 msgstr "Kirjanmerkitty"
522 
523-#: html.c:2198
524+#: html.c:2292
525 msgid "Poll"
526 msgstr "Kysely"
527 
528-#: html.c:2205
529+#: html.c:2299
530 msgid "Voted"
531 msgstr "Äänestetty"
532 
533-#: html.c:2214
534+#: html.c:2308
535 msgid "Event"
536 msgstr "Tapahtuma"
537 
538-#: html.c:2246 html.c:2275
539+#: html.c:2340 html.c:2369
540 msgid "boosted"
541 msgstr "tehostettu"
542 
543-#: html.c:2289
544+#: html.c:2383
545 msgid "in reply to"
546 msgstr "vastauksena"
547 
548-#: html.c:2345
549+#: html.c:2439
550 msgid " [SENSITIVE CONTENT]"
551 msgstr " [ARKALUONTOISTA SISÄLTÖÄ]"
552 
553-#: html.c:2512
554+#: html.c:2796
555 msgid "Vote"
556 msgstr "Äänestä"
557 
558-#: html.c:2522
559+#: html.c:2806
560 msgid "Closed"
561 msgstr "Sulkeutunut"
562 
563-#: html.c:2547
564+#: html.c:2831
565 msgid "Closes in"
566 msgstr "Sulkeutuu"
567 
568-#: html.c:2627
569+#: html.c:2911
570 msgid "Video"
571 msgstr "Video"
572 
573-#: html.c:2642
574+#: html.c:2926
575 msgid "Audio"
576 msgstr "Ääni"
577 
578-#: html.c:2670
579+#: html.c:2954
580 msgid "Attachment"
581 msgstr "Liite"
582 
583-#: html.c:2684
584+#: html.c:2968
585 msgid "Alt..."
586 msgstr "Kuvaus..."
587 
588-#: html.c:2697
589+#: html.c:2981
590 msgid "Source channel or community"
591 msgstr "Lähdekanava tai -yhteisö"
592 
593-#: html.c:2791
594+#: html.c:3075
595 msgid "Time: "
596 msgstr "Aika: "
597 
598-#: html.c:2872
599+#: html.c:3156
600 msgid "Older..."
601 msgstr "Vanhemmat..."
602 
603-#: html.c:2974
604+#: html.c:3258
605 msgid "about this site"
606 msgstr "tietoa sivustosta"
607 
608-#: html.c:2976
609+#: html.c:3260
610 msgid "powered by "
611 msgstr "moottorina "
612 
613-#: html.c:3041
614+#: html.c:3329
615 msgid "Dismiss"
616 msgstr "Kuittaa"
617 
618-#: html.c:3058
619+#: html.c:3346
620 #, c-format
621 msgid "Timeline for list '%s'"
622 msgstr "Listan ”%s” aikajana"
623 
624-#: html.c:3077 html.c:4169
625+#: html.c:3365 html.c:4589
626 msgid "Pinned posts"
627 msgstr "Kiinnitetyt julkaisut"
628 
629-#: html.c:3089 html.c:4184
630+#: html.c:3377 html.c:4604
631 msgid "Bookmarked posts"
632 msgstr "Kirjanmerkit"
633 
634-#: html.c:3101 html.c:4199
635+#: html.c:3389 html.c:4619
636 msgid "Post drafts"
637 msgstr "Vedokset"
638 
639-#: html.c:3177
640+#: html.c:3465
641 msgid "No more unseen posts"
642 msgstr "Ei lukemattonia julkaisuja"
643 
644-#: html.c:3181 html.c:3290
645+#: html.c:3469 html.c:3578
646 msgid "Back to top"
647 msgstr "Takaisin"
648 
649-#: html.c:3243
650+#: html.c:3531
651 msgid "History"
652 msgstr "Historia"
653 
654-#: html.c:3295 html.c:3734
655+#: html.c:3583 html.c:4149
656 msgid "More..."
657 msgstr "Enemmän..."
658 
659-#: html.c:3391 html.c:4813
660+#: html.c:3767 html.c:5257
661 msgid "Unlimit"
662 msgstr "Poista rajoitus"
663 
664-#: html.c:3392
665+#: html.c:3768
666 msgid "Allow announces (boosts) from this user"
667 msgstr "Salli tehostukset käyttäjältä"
668 
669-#: html.c:3395 html.c:4809
670+#: html.c:3771 html.c:5253
671 msgid "Limit"
672 msgstr "Rajoita"
673 
674-#: html.c:3396
675+#: html.c:3772
676 msgid "Block announces (boosts) from this user"
677 msgstr "Kiellö tehostukset käyttäjältä"
678 
679-#: html.c:3405
680+#: html.c:3781
681 msgid "Delete this user"
682 msgstr "Poista käyttäjä"
683 
684-#: html.c:3410 html.c:4927
685+#: html.c:3786 html.c:5371
686 msgid "Approve"
687 msgstr "Hyväksy"
688 
689-#: html.c:3411
690+#: html.c:3787
691 msgid "Approve this follow request"
692 msgstr "Hyväksy seurantapyyntö"
693 
694-#: html.c:3414 html.c:4951
695+#: html.c:3790 html.c:5395
696 msgid "Discard"
697 msgstr "Hylkää"
698 
699-#: html.c:3414
700+#: html.c:3790
701 msgid "Discard this follow request"
702 msgstr "Hylkää seurantapyyntö"
703 
704-#: html.c:3419 html.c:4795
705+#: html.c:3795 html.c:5239
706 msgid "Unmute"
707 msgstr "Poista vaimennus"
708 
709-#: html.c:3420
710+#: html.c:3796
711 msgid "Stop blocking activities from this user"
712 msgstr "Salli toiminta käyttäjältä"
713 
714-#: html.c:3424
715+#: html.c:3800
716 msgid "Block any activity from this user"
717 msgstr "Estä kaikki toiminnat käyttäjältä"
718 
719-#: html.c:3432
720+#: html.c:3808
721 msgid "Direct Message..."
722 msgstr "Yksityisviesti..."
723 
724-#: html.c:3467
725+#: html.c:3843
726 msgid "Pending follow confirmations"
727 msgstr "Hyväksymistä odottavat seurantapyynnöt"
728 
729-#: html.c:3471
730+#: html.c:3847
731 msgid "People you follow"
732 msgstr "Seuraamasi ihniset"
733 
734-#: html.c:3472
735+#: html.c:3848
736 msgid "People that follow you"
737 msgstr "Sinua seuraavat"
738 
739-#: html.c:3511
740+#: html.c:3887
741 msgid "Clear all"
742 msgstr "Tyhjennä"
743 
744-#: html.c:3571
745+#: html.c:3951
746 msgid "Mention"
747 msgstr "Mainitse"
748 
749-#: html.c:3574
750+#: html.c:3954
751 msgid "Finished poll"
752 msgstr "Päättynyt kysely"
753 
754-#: html.c:3590
755+#: html.c:3979
756 msgid "Follow Request"
757 msgstr "Seurantapyyntö"
758 
759-#: html.c:3674
760+#: html.c:4089
761 msgid "Context"
762 msgstr "Konteksti"
763 
764-#: html.c:3692
765+#: html.c:4107
766 msgid "New"
767 msgstr "Uusi"
768 
769-#: html.c:3707
770+#: html.c:4122
771 msgid "Already seen"
772 msgstr "Nähty"
773 
774-#: html.c:3722
775+#: html.c:4137
776 msgid "None"
777 msgstr "Ei ilmoituksia"
778 
779-#: html.c:3994
780+#: html.c:4414
781 #, c-format
782 msgid "Search results for account %s"
783 msgstr "Hakutulokset tilille %s"
784 
785-#: html.c:4001
786+#: html.c:4421
787 #, c-format
788 msgid "Account %s not found"
789 msgstr "Tiliä %s ei löytynyt"
790 
791-#: html.c:4032
792+#: html.c:4452
793 #, c-format
794 msgid "Search results for tag %s"
795 msgstr "Hakutulokset aihetunnisteelle %s"
796 
797-#: html.c:4032
798+#: html.c:4452
799 #, c-format
800 msgid "Nothing found for tag %s"
801 msgstr "Aihetunnisteella %s ei löytynyt tuloksia"
802 
803-#: html.c:4048
804+#: html.c:4468
805 #, c-format
806 msgid "Search results for '%s' (may be more)"
807 msgstr "Tulokset haulle ”%s” (mahdollisesti enemmän tuloksia)"
808 
809-#: html.c:4051
810+#: html.c:4471
811 #, c-format
812 msgid "Search results for '%s'"
813 msgstr "Tulokset haulle ”%s”"
814 
815-#: html.c:4054
816+#: html.c:4474
817 #, c-format
818 msgid "No more matches for '%s'"
819 msgstr "Ei enempää tuloksia haulle ”%s”"
820 
821-#: html.c:4056
822+#: html.c:4476
823 #, c-format
824 msgid "Nothing found for '%s'"
825 msgstr "Haulla ”%s” ei löytynyt tuloksia"
826 
827-#: html.c:4154
828+#: html.c:4574
829 msgid "Showing instance timeline"
830 msgstr "Palvelimen aikajana"
831 
832-#: html.c:4237
833+#: html.c:4657
834 #, c-format
835 msgid "Showing timeline for list '%s'"
836 msgstr "Listan ”%s” aikajana"
837 
838-#: httpd.c:258
839+#: httpd.c:259
840 #, c-format
841 msgid "Search results for tag #%s"
842 msgstr "Hakutulokset aihetunnisteelle #%s"
843 
844-#: httpd.c:267
845+#: httpd.c:268
846 msgid "Recent posts by users in this instance"
847 msgstr "Viimeaikaisia julkaisuja tällä palvelimella"
848 
849-#: html.c:1764
850+#: html.c:1842
851 msgid "Blocked hashtags..."
852 msgstr "Estetyt aihetunnisteet..."
853 
854-#: html.c:518
855+#: html.c:574
856 msgid "Optional URL to reply to"
857 msgstr "Vastaus julkaisuun (osoite, valinnainen)"
858 
859-#: html.c:695
860+#: html.c:751
861 msgid ""
862 "Option 1...\n"
863 "Option 2...\n"
864@@ -707,94 +707,106 @@ msgstr ""
865 "Vaihtoehto 3...\n"
866 "..."
867 
868-#: html.c:1558
869+#: html.c:1636
870 msgid "Bot API key"
871 msgstr "botin API-avain"
872 
873-#: html.c:1564
874+#: html.c:1642
875 msgid "Chat id"
876 msgstr "chat id"
877 
878-#: html.c:1572
879+#: html.c:1650
880 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
881 msgstr "ntfy-palvelin - täydellinen osoite (esim: https://ntfy.sh/YourTopic)"
882 
883-#: html.c:1578
884+#: html.c:1656
885 msgid "ntfy token - if needed"
886 msgstr "ntfy token - tarvittaessa"
887 
888-#: html.c:3078
889+#: html.c:3366
890 msgid "pinned"
891 msgstr "kiinnitetyt"
892 
893-#: html.c:3090
894+#: html.c:3378
895 msgid "bookmarks"
896 msgstr "kirjanmerkit"
897 
898-#: html.c:3102
899+#: html.c:3390
900 msgid "drafts"
901 msgstr "vedokset"
902 
903-#: html.c:584
904+#: html.c:640
905 msgid "Scheduled post..."
906 msgstr "Ajastettu julkaisu..."
907 
908 msgid "Post date and time:"
909 msgstr "Julkaisuajankohta:"
910 
911-#: html.c:3113 html.c:4214
912+#: html.c:3401 html.c:4634
913 msgid "Scheduled posts"
914 msgstr "Ajastetut julkaisut"
915 
916-#: html.c:3114
917+#: html.c:3402
918 msgid "scheduled posts"
919 msgstr "ajastetut julkaisut"
920 
921-#: html.c:578
922+#: html.c:634
923 #, c-format
924 msgid "Post date and time (timezone: %s):"
925 msgstr "Julkaisuajankohta (aikavyöhyke: %s):"
926 
927-#: html.c:1689
928+#: html.c:1767
929 msgid "Time zone:"
930 msgstr "Aikavyöhyke: "
931 
932-#: html.c:559
933+#: html.c:615
934 msgid "Language:"
935 msgstr ""
936 
937-#: html.c:1580
938+#: html.c:1658
939 msgid "Notify webhook:"
940 msgstr ""
941 
942-#: html.c:1586
943+#: html.c:1664
944 msgid "http://example.com/webhook"
945 msgstr ""
946 
947-#: html.c:1694
948+#: html.c:1772
949 msgid "Languages you usually post in:"
950 msgstr ""
951 
952-#: html.c:1700
953+#: html.c:1778
954 msgid "en fr es de_AT"
955 msgstr ""
956 
957-#: html.c:460
958+#: html.c:428
959 msgid "Visibility: "
960 msgstr ""
961 
962-#: html.c:468
963 msgid "Public"
964 msgstr ""
965 
966-#: html.c:477
967 msgid "Unlisted"
968 msgstr ""
969 
970-#: html.c:486
971 msgid "Followers-only"
972 msgstr ""
973 
974-#: html.c:495
975 msgid "Direct Message"
976 msgstr ""
977+
978+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
979+msgid "EmojiUnreact"
980+msgstr ""
981+
982+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
983+msgid "EmojiReact"
984+msgstr ""
985+
986+#: html.c:2115
987+msgid "Emoji react..."
988+msgstr ""
989+
990+#: html.c:2609
991+msgid "Emoji reactions: "
992+msgstr ""
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: fr\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Contenu sensible :"
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Description du contenu sensible :"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Seulement pour les personnes mentionnées :"
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Répondre à (URL) :"
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Ne pas envoyer, mais sauvegarder en tant que brouillon"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Brouillon :"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Pièces jointes…"
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Fichier :"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Nettoyer ce champs pour supprimer la pièce jointe"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Description de la pièce jointe"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Sondage…"
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Options du sondage (une par ligne, jusqu'à 8) :"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Un seul choix"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Choix multiples"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Se termine dans 5 minutes"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Se termine dans 1 heure"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Se termine dans 1 jour"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Envoyer"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Description du site"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email de l'admin"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Compte de l'admin"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d abonnements, %d personnes abonnées"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privé"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "public"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notifications"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "personnes"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instance"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,575 +128,575 @@ msgstr ""
150 "Chercher les messages par URL ou contenu (expression régulière), comptes "
151 "@pseudo@hôte, ou #tag"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Recherche de contenu"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "Lien vérifié"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Emplacement : "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nouveau message…"
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Qu'avez-vous en tête ?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Opérations…"
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Suivre"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(par URL ou pseudo@hôte)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Repartager"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(par URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Aime"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Paramètre du compte…"
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Nom affiché :"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Votre nom"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar : "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Supprimer l'avatar actuel"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Image d'entête (bannière) : "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Supprimer l'image d'entête actuelle"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Description :"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Décrivez-vous ici…"
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Toujours afficher le contenu sensible"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Adresse email pour les notifications :"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Notifications Telegram (clé de bot et ID de discussion) :"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "notifications ntfy (serveur et jeton ntfy) :"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr ""
277 "Nombre de jours maximum de rétention des messages (0 : réglages du serveur) :"
278 
279-#: html.c:1602
280+#: html.c:1680
281 msgid "Drop direct messages from people you don't follow"
282 msgstr "Rejeter les messages directs des personnes que vous ne suivez pas"
283 
284-#: html.c:1611
285+#: html.c:1689
286 msgid "This account is a bot"
287 msgstr "Ce compte est un bot"
288 
289-#: html.c:1620
290+#: html.c:1698
291 msgid "Auto-boost all mentions to this account"
292 msgstr "Auto-repartage de toutes les mentions de ce compte"
293 
294-#: html.c:1629
295+#: html.c:1707
296 msgid "This account is private (posts are not shown through the web)"
297 msgstr "Ce compte est privé (les messages ne sont pas affiché sur le web)"
298 
299-#: html.c:1639
300+#: html.c:1717
301 msgid "Collapse top threads by default"
302 msgstr "replier les fils de discussion principaux par défaut"
303 
304-#: html.c:1648
305+#: html.c:1726
306 msgid "Follow requests must be approved"
307 msgstr "Les demande de suivi doivent être approuvées"
308 
309-#: html.c:1657
310+#: html.c:1735
311 msgid "Publish follower and following metrics"
312 msgstr "Publier les statistiques d'abonnements"
313 
314-#: html.c:1659
315+#: html.c:1737
316 msgid "Current location:"
317 msgstr "Localisation actuelle :"
318 
319-#: html.c:1673
320+#: html.c:1751
321 msgid "Profile metadata (key=value pairs in each line):"
322 msgstr "Métadonnées du profile (paires clé=valeur à chaque ligne) :"
323 
324-#: html.c:1684
325+#: html.c:1762
326 msgid "Web interface language:"
327 msgstr "Langue de l'interface web :"
328 
329-#: html.c:1703
330+#: html.c:1781
331 msgid "New password:"
332 msgstr "Nouveau mot de passe :"
333 
334-#: html.c:1710
335+#: html.c:1788
336 msgid "Repeat new password:"
337 msgstr "Répétez le nouveau mot de passe :"
338 
339-#: html.c:1720
340+#: html.c:1798
341 msgid "Update user info"
342 msgstr "Mettre à jour les infos du compte"
343 
344-#: html.c:1731
345+#: html.c:1809
346 msgid "Followed hashtags..."
347 msgstr "hashtags suivis…"
348 
349-#: html.c:1733 html.c:1766
350+#: html.c:1811 html.c:1844
351 msgid "One hashtag per line"
352 msgstr "Un hashtag par ligne"
353 
354-#: html.c:1755 html.c:1787
355+#: html.c:1833 html.c:1865
356 msgid "Update hashtags"
357 msgstr "Mettre à jour les hashtags"
358 
359-#: html.c:1904
360+#: html.c:1982
361 msgid "Say you like this post"
362 msgstr "Dire que vous aimez ce message"
363 
364-#: html.c:1909 html.c:4775
365+#: html.c:1987 html.c:5219
366 msgid "Unlike"
367 msgstr "N'aime plus"
368 
369-#: html.c:1909
370+#: html.c:1987
371 msgid "Nah don't like it that much"
372 msgstr "Nan, j'aime pas tant que ça"
373 
374-#: html.c:1915 html.c:4912
375+#: html.c:1993 html.c:5356
376 msgid "Unpin"
377 msgstr "Dés-épingler"
378 
379-#: html.c:1915
380+#: html.c:1993
381 msgid "Unpin this post from your timeline"
382 msgstr "Dés-épingler ce message de votre chronologie"
383 
384-#: html.c:1918 html.c:4907
385+#: html.c:1996 html.c:5351
386 msgid "Pin"
387 msgstr "Épingler"
388 
389-#: html.c:1918
390+#: html.c:1996
391 msgid "Pin this post to the top of your timeline"
392 msgstr "Épingler ce message en haut de votre chronologie"
393 
394-#: html.c:1925
395+#: html.c:2003
396 msgid "Announce this post to your followers"
397 msgstr "Annoncer ce message aux personnes abonnées"
398 
399-#: html.c:1930 html.c:4783
400+#: html.c:2008 html.c:5227
401 msgid "Unboost"
402 msgstr "Dé-repartager"
403 
404-#: html.c:1930
405+#: html.c:2008
406 msgid "I regret I boosted this"
407 msgstr "Je regrette d'avoir repartagé ceci"
408 
409-#: html.c:1936 html.c:4922
410+#: html.c:2014 html.c:5366
411 msgid "Unbookmark"
412 msgstr "Retirer le signet"
413 
414-#: html.c:1936
415+#: html.c:2014
416 msgid "Delete this post from your bookmarks"
417 msgstr "Supprime ce message de vos signets"
418 
419-#: html.c:1939 html.c:4917
420+#: html.c:2017 html.c:5361
421 msgid "Bookmark"
422 msgstr "Signet"
423 
424-#: html.c:1939
425+#: html.c:2017
426 msgid "Add this post to your bookmarks"
427 msgstr "Ajouter ce message à vos signets"
428 
429-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
430+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
431 msgid "Unfollow"
432 msgstr "Ne plus suivre"
433 
434-#: html.c:1945 html.c:3387
435+#: html.c:2023 html.c:3763 html.c:4042
436 msgid "Stop following this user's activity"
437 msgstr "Arrêter de suivre les activités de cette personne"
438 
439-#: html.c:1949 html.c:3401
440+#: html.c:2027 html.c:3777 html.c:4044
441 msgid "Start following this user's activity"
442 msgstr "Commencer à suivre les activité de cette personne"
443 
444-#: html.c:1955 html.c:4860
445+#: html.c:2033 html.c:5304
446 msgid "Unfollow Group"
447 msgstr "Ne plus suivre le Groupe"
448 
449-#: html.c:1956
450+#: html.c:2034
451 msgid "Stop following this group or channel"
452 msgstr "Arrêter de suivre ce groupe ou canal"
453 
454-#: html.c:1960 html.c:4847
455+#: html.c:2038 html.c:5291
456 msgid "Follow Group"
457 msgstr "Suivre le Groupe"
458 
459-#: html.c:1961
460+#: html.c:2039
461 msgid "Start following this group or channel"
462 msgstr "Commencer à suivre ce groupe ou canal"
463 
464-#: html.c:1966 html.c:3423 html.c:4791
465+#: html.c:2044 html.c:3799 html.c:5235
466 msgid "MUTE"
467 msgstr "SOURDINE"
468 
469-#: html.c:1967
470+#: html.c:2045
471 msgid "Block any activity from this user forever"
472 msgstr "Bloquer toute activité de cette personne à jamais"
473 
474-#: html.c:1972 html.c:3405 html.c:4877
475+#: html.c:2050 html.c:3781 html.c:5321
476 msgid "Delete"
477 msgstr "Supprimer"
478 
479-#: html.c:1972
480+#: html.c:2050
481 msgid "Delete this post"
482 msgstr "Supprimer ce message"
483 
484-#: html.c:1975 html.c:4799
485+#: html.c:2053 html.c:5243
486 msgid "Hide"
487 msgstr "Cacher"
488 
489-#: html.c:1975
490+#: html.c:2053
491 msgid "Hide this post and its children"
492 msgstr "Cacher ce message et ses réponses"
493 
494-#: html.c:2017
495+#: html.c:2095
496 msgid "Edit..."
497 msgstr "Modifier…"
498 
499-#: html.c:2039
500+#: html.c:2133
501 msgid "Reply..."
502 msgstr "Répondre…"
503 
504-#: html.c:2090
505+#: html.c:2184
506 msgid "Truncated (too deep)"
507 msgstr "Tronqué (trop profond)"
508 
509-#: html.c:2108
510+#: html.c:2202
511 msgid "follows you"
512 msgstr "vous suit"
513 
514-#: html.c:2182
515+#: html.c:2276
516 msgid "Pinned"
517 msgstr "Épinglé"
518 
519-#: html.c:2190
520+#: html.c:2284
521 msgid "Bookmarked"
522 msgstr "Ajouté aux signets"
523 
524-#: html.c:2198
525+#: html.c:2292
526 msgid "Poll"
527 msgstr "Sondage"
528 
529-#: html.c:2205
530+#: html.c:2299
531 msgid "Voted"
532 msgstr "Voté"
533 
534-#: html.c:2214
535+#: html.c:2308
536 msgid "Event"
537 msgstr "Événement"
538 
539-#: html.c:2246 html.c:2275
540+#: html.c:2340 html.c:2369
541 msgid "boosted"
542 msgstr "Repartagé"
543 
544-#: html.c:2289
545+#: html.c:2383
546 msgid "in reply to"
547 msgstr "En réponse à"
548 
549-#: html.c:2345
550+#: html.c:2439
551 msgid " [SENSITIVE CONTENT]"
552 msgstr " [CONTENU SENSIBLE]"
553 
554-#: html.c:2512
555+#: html.c:2796
556 msgid "Vote"
557 msgstr "Vote"
558 
559-#: html.c:2522
560+#: html.c:2806
561 msgid "Closed"
562 msgstr "Terminé"
563 
564-#: html.c:2547
565+#: html.c:2831
566 msgid "Closes in"
567 msgstr "Termine dans"
568 
569-#: html.c:2627
570+#: html.c:2911
571 msgid "Video"
572 msgstr "Vidéo"
573 
574-#: html.c:2642
575+#: html.c:2926
576 msgid "Audio"
577 msgstr "Audio"
578 
579-#: html.c:2670
580+#: html.c:2954
581 msgid "Attachment"
582 msgstr "Pièce jointe"
583 
584-#: html.c:2684
585+#: html.c:2968
586 msgid "Alt..."
587 msgstr "Alt…"
588 
589-#: html.c:2697
590+#: html.c:2981
591 msgid "Source channel or community"
592 msgstr "Canal ou communauté source"
593 
594-#: html.c:2791
595+#: html.c:3075
596 msgid "Time: "
597 msgstr "Date : "
598 
599-#: html.c:2872
600+#: html.c:3156
601 msgid "Older..."
602 msgstr "Plus anciens…"
603 
604-#: html.c:2974
605+#: html.c:3258
606 msgid "about this site"
607 msgstr "à propos de ce site"
608 
609-#: html.c:2976
610+#: html.c:3260
611 msgid "powered by "
612 msgstr "fonctionne grace à "
613 
614-#: html.c:3041
615+#: html.c:3329
616 msgid "Dismiss"
617 msgstr "Rejeter"
618 
619-#: html.c:3058
620+#: html.c:3346
621 #, c-format
622 msgid "Timeline for list '%s'"
623 msgstr "Chronologie pour la liste '%s'"
624 
625-#: html.c:3077 html.c:4169
626+#: html.c:3365 html.c:4589
627 msgid "Pinned posts"
628 msgstr "Messages épinglés"
629 
630-#: html.c:3089 html.c:4184
631+#: html.c:3377 html.c:4604
632 msgid "Bookmarked posts"
633 msgstr "Messages en signets"
634 
635-#: html.c:3101 html.c:4199
636+#: html.c:3389 html.c:4619
637 msgid "Post drafts"
638 msgstr "Brouillons de messages"
639 
640-#: html.c:3177
641+#: html.c:3465
642 msgid "No more unseen posts"
643 msgstr "Pas d'avantage de message non vus"
644 
645-#: html.c:3181 html.c:3290
646+#: html.c:3469 html.c:3578
647 msgid "Back to top"
648 msgstr "Retourner en haut"
649 
650-#: html.c:3243
651+#: html.c:3531
652 msgid "History"
653 msgstr "Historique"
654 
655-#: html.c:3295 html.c:3734
656+#: html.c:3583 html.c:4149
657 msgid "More..."
658 msgstr "Plus…"
659 
660-#: html.c:3391 html.c:4813
661+#: html.c:3767 html.c:5257
662 msgid "Unlimit"
663 msgstr "Illimité"
664 
665-#: html.c:3392
666+#: html.c:3768
667 msgid "Allow announces (boosts) from this user"
668 msgstr "Permettre les annonces (repartages) par cette personne"
669 
670-#: html.c:3395 html.c:4809
671+#: html.c:3771 html.c:5253
672 msgid "Limit"
673 msgstr "Limite"
674 
675-#: html.c:3396
676+#: html.c:3772
677 msgid "Block announces (boosts) from this user"
678 msgstr "Bloquer les annonces (repartages) par cette personne"
679 
680-#: html.c:3405
681+#: html.c:3781
682 msgid "Delete this user"
683 msgstr "Supprimer cette personne"
684 
685-#: html.c:3410 html.c:4927
686+#: html.c:3786 html.c:5371
687 msgid "Approve"
688 msgstr "Approuver"
689 
690-#: html.c:3411
691+#: html.c:3787
692 msgid "Approve this follow request"
693 msgstr "Approuver cette demande de suivi"
694 
695-#: html.c:3414 html.c:4951
696+#: html.c:3790 html.c:5395
697 msgid "Discard"
698 msgstr "Rejeter"
699 
700-#: html.c:3414
701+#: html.c:3790
702 msgid "Discard this follow request"
703 msgstr "Rejeter la demande suivante"
704 
705-#: html.c:3419 html.c:4795
706+#: html.c:3795 html.c:5239
707 msgid "Unmute"
708 msgstr "Ne plus taire"
709 
710-#: html.c:3420
711+#: html.c:3796
712 msgid "Stop blocking activities from this user"
713 msgstr "Arrêter de bloquer les activités de cette personne"
714 
715-#: html.c:3424
716+#: html.c:3800
717 msgid "Block any activity from this user"
718 msgstr "Bloque toutes les activités de cette personne"
719 
720-#: html.c:3432
721+#: html.c:3808
722 msgid "Direct Message..."
723 msgstr "Message direct…"
724 
725-#: html.c:3467
726+#: html.c:3843
727 msgid "Pending follow confirmations"
728 msgstr "Confirmation de suivi en attente"
729 
730-#: html.c:3471
731+#: html.c:3847
732 msgid "People you follow"
733 msgstr "Personnes que vous suivez"
734 
735-#: html.c:3472
736+#: html.c:3848
737 msgid "People that follow you"
738 msgstr "Personnes qui vous suivent"
739 
740-#: html.c:3511
741+#: html.c:3887
742 msgid "Clear all"
743 msgstr "Tout nettoyer"
744 
745-#: html.c:3571
746+#: html.c:3951
747 msgid "Mention"
748 msgstr "Mention"
749 
750-#: html.c:3574
751+#: html.c:3954
752 msgid "Finished poll"
753 msgstr "Sondage terminé"
754 
755-#: html.c:3590
756+#: html.c:3979
757 msgid "Follow Request"
758 msgstr "Requête de suivi"
759 
760-#: html.c:3674
761+#: html.c:4089
762 msgid "Context"
763 msgstr "Contexte"
764 
765-#: html.c:3692
766+#: html.c:4107
767 msgid "New"
768 msgstr "Nouveau"
769 
770-#: html.c:3707
771+#: html.c:4122
772 msgid "Already seen"
773 msgstr "Déjà vu"
774 
775-#: html.c:3722
776+#: html.c:4137
777 msgid "None"
778 msgstr "Aucun"
779 
780-#: html.c:3994
781+#: html.c:4414
782 #, c-format
783 msgid "Search results for account %s"
784 msgstr "Résultats de recherche pour le compte %s"
785 
786-#: html.c:4001
787+#: html.c:4421
788 #, c-format
789 msgid "Account %s not found"
790 msgstr "Compte %s non trouvé"
791 
792-#: html.c:4032
793+#: html.c:4452
794 #, c-format
795 msgid "Search results for tag %s"
796 msgstr "Résultats de recherche pour le tag %s"
797 
798-#: html.c:4032
799+#: html.c:4452
800 #, c-format
801 msgid "Nothing found for tag %s"
802 msgstr "Rien n'a été trouvé pour le tag %s"
803 
804-#: html.c:4048
805+#: html.c:4468
806 #, c-format
807 msgid "Search results for '%s' (may be more)"
808 msgstr "Résultats de recherche pour '%s' (il pourrait y en avoir davantage)"
809 
810-#: html.c:4051
811+#: html.c:4471
812 #, c-format
813 msgid "Search results for '%s'"
814 msgstr "Résultats de recherche pour '%s'"
815 
816-#: html.c:4054
817+#: html.c:4474
818 #, c-format
819 msgid "No more matches for '%s'"
820 msgstr "Pas davantage de résultats pour '%s'"
821 
822-#: html.c:4056
823+#: html.c:4476
824 #, c-format
825 msgid "Nothing found for '%s'"
826 msgstr "Rien n'a été trouvé pour '%s'"
827 
828-#: html.c:4154
829+#: html.c:4574
830 msgid "Showing instance timeline"
831 msgstr "Montrer la chronologie de l'instance"
832 
833-#: html.c:4237
834+#: html.c:4657
835 #, c-format
836 msgid "Showing timeline for list '%s'"
837 msgstr "Montrer le chronologie pour la liste '%s'"
838 
839-#: httpd.c:258
840+#: httpd.c:259
841 #, c-format
842 msgid "Search results for tag #%s"
843 msgstr "Résultats de recherche pour le tag #%s"
844 
845-#: httpd.c:267
846+#: httpd.c:268
847 msgid "Recent posts by users in this instance"
848 msgstr "Messages récents des internautes de cette instance"
849 
850-#: html.c:1764
851+#: html.c:1842
852 msgid "Blocked hashtags..."
853 msgstr "Hashtags bloqués…"
854 
855-#: html.c:518
856+#: html.c:574
857 msgid "Optional URL to reply to"
858 msgstr "URL optionnelle pour répondre à"
859 
860-#: html.c:695
861+#: html.c:751
862 msgid ""
863 "Option 1...\n"
864 "Option 2...\n"
865@@ -708,94 +708,106 @@ msgstr ""
866 "Option 3…\n"
867 "…"
868 
869-#: html.c:1558
870+#: html.c:1636
871 msgid "Bot API key"
872 msgstr "Clé API de bot"
873 
874-#: html.c:1564
875+#: html.c:1642
876 msgid "Chat id"
877 msgstr "Identifiant du salon"
878 
879-#: html.c:1572
880+#: html.c:1650
881 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
882 msgstr "serveur ntfy – adresse complète (ex : https://ntfy.sh/VotreSujet)"
883 
884-#: html.c:1578
885+#: html.c:1656
886 msgid "ntfy token - if needed"
887 msgstr "jeton ntfy – si nécessaire"
888 
889-#: html.c:3078
890+#: html.c:3366
891 msgid "pinned"
892 msgstr "épinglé"
893 
894-#: html.c:3090
895+#: html.c:3378
896 msgid "bookmarks"
897 msgstr "signets"
898 
899-#: html.c:3102
900+#: html.c:3390
901 msgid "drafts"
902 msgstr "brouillons"
903 
904-#: html.c:584
905+#: html.c:640
906 msgid "Scheduled post..."
907 msgstr "Publication planifiée…"
908 
909 msgid "Post date and time:"
910 msgstr "Date et heure de publication :"
911 
912-#: html.c:3113 html.c:4214
913+#: html.c:3401 html.c:4634
914 msgid "Scheduled posts"
915 msgstr "Publications planifiées"
916 
917-#: html.c:3114
918+#: html.c:3402
919 msgid "scheduled posts"
920 msgstr "publications planifiées"
921 
922-#: html.c:578
923+#: html.c:634
924 #, c-format
925 msgid "Post date and time (timezone: %s):"
926 msgstr "Date et heure de publication (fuseau horaire : %s) :"
927 
928-#: html.c:1689
929+#: html.c:1767
930 msgid "Time zone:"
931 msgstr "Fuseau horaire :"
932 
933-#: html.c:559
934+#: html.c:615
935 msgid "Language:"
936 msgstr ""
937 
938-#: html.c:1580
939+#: html.c:1658
940 msgid "Notify webhook:"
941 msgstr ""
942 
943-#: html.c:1586
944+#: html.c:1664
945 msgid "http://example.com/webhook"
946 msgstr ""
947 
948-#: html.c:1694
949+#: html.c:1772
950 msgid "Languages you usually post in:"
951 msgstr ""
952 
953-#: html.c:1700
954+#: html.c:1778
955 msgid "en fr es de_AT"
956 msgstr ""
957 
958-#: html.c:460
959+#: html.c:428
960 msgid "Visibility: "
961 msgstr ""
962 
963-#: html.c:468
964 msgid "Public"
965 msgstr ""
966 
967-#: html.c:477
968 msgid "Unlisted"
969 msgstr ""
970 
971-#: html.c:486
972 msgid "Followers-only"
973 msgstr ""
974 
975-#: html.c:495
976 msgid "Direct Message"
977 msgstr ""
978+
979+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
980+msgid "EmojiUnreact"
981+msgstr ""
982+
983+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
984+msgid "EmojiReact"
985+msgstr ""
986+
987+#: html.c:2115
988+msgid "Emoji react..."
989+msgstr ""
990+
991+#: html.c:2609
992+msgid "Emoji reactions: "
993+msgstr ""
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: fy_NL\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Gefoelige ynhâld: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Beskriuwing fan gefoelige ynhâld"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Allinnich foar neamde personen: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Antwurd op (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Net ferstjoere, mar bewarje as konsept"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Konsept:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Bylagen..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Bestân:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Fjild leech meitsje om de bylage fuort te smiten"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Beskriuwing fan bylage"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Peiling..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Peilingopsjes (ien per rigel, oant 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Ien keuze"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Mear keuzes"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Einiget oer 5 minuten"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Einiget oer 1 oere"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Einiget oer 1 dei"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Berjocht"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Beskriuwing fan de side"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Admin e-mail"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Admin akkount"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d folgjend, %d folgers"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privé"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "publik"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notifikaasjes"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "minsken"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instantsje"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,575 +128,575 @@ msgstr ""
150 "Sykje berjochten op URL of ynh??ld (reguliere ekspresje), @brûker@host "
151 "akkounts, of #tag"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Ynhâld sêkje"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "ferifiearre keppeling"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Lokaasje: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nij berjocht..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Wat wolst diele?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Hannelens..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Folgje"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(fia URL of brûker@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Boost"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(fia URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Lyk"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Brûkersynstellings..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Werjeftenamme:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Jo namme"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Profylplaatsje: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Hjoeddeistige profylplaatsje fuortsmite"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Koptekstplaatsje (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Hjoeddeistige koptekstplaatsje fuortsmite"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Skriuw hjir wat oer josels..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Altyd gefoelige ynhâld toanje"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "E-mailadres foar notifikaasjes:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Telegram notifikaasjes (bot kaai en chat id):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "ntfy notifikaasjes (ntfy server en token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr ""
277 "Maksimaal oantal dagen om berjochten te bewarjen (0: serverynstellings):"
278 
279-#: html.c:1602
280+#: html.c:1680
281 msgid "Drop direct messages from people you don't follow"
282 msgstr "Direktte berjochten fan minsken dy't jo net folgje fuortsmite"
283 
284-#: html.c:1611
285+#: html.c:1689
286 msgid "This account is a bot"
287 msgstr "Dit akkount is in bot"
288 
289-#: html.c:1620
290+#: html.c:1698
291 msgid "Auto-boost all mentions to this account"
292 msgstr "Automatysk boostje fan alle fermeldingen fan dit akkount"
293 
294-#: html.c:1629
295+#: html.c:1707
296 msgid "This account is private (posts are not shown through the web)"
297 msgstr "Dit akkount is privé (berjochten wurde net toand fia it web)"
298 
299-#: html.c:1639
300+#: html.c:1717
301 msgid "Collapse top threads by default"
302 msgstr "Standert topthreads ynklappe"
303 
304-#: html.c:1648
305+#: html.c:1726
306 msgid "Follow requests must be approved"
307 msgstr "Folchfersiken moatte goedkeard wurde"
308 
309-#: html.c:1657
310+#: html.c:1735
311 msgid "Publish follower and following metrics"
312 msgstr "Folger- en folchstatistiken publisearje"
313 
314-#: html.c:1659
315+#: html.c:1737
316 msgid "Current location:"
317 msgstr "Hjoeddeistige lokaasje:"
318 
319-#: html.c:1673
320+#: html.c:1751
321 msgid "Profile metadata (key=value pairs in each line):"
322 msgstr "Profylmetadata (kaai=wearde pearen yn eltse rigel):"
323 
324-#: html.c:1684
325+#: html.c:1762
326 msgid "Web interface language:"
327 msgstr "Webynterfacetaal:"
328 
329-#: html.c:1703
330+#: html.c:1781
331 msgid "New password:"
332 msgstr "Nij wachtwurd:"
333 
334-#: html.c:1710
335+#: html.c:1788
336 msgid "Repeat new password:"
337 msgstr "Nij wachtwurd werhelje:"
338 
339-#: html.c:1720
340+#: html.c:1798
341 msgid "Update user info"
342 msgstr "Brûkerynformaasje bywurkje"
343 
344-#: html.c:1731
345+#: html.c:1809
346 msgid "Followed hashtags..."
347 msgstr "Folge hashtags..."
348 
349-#: html.c:1733 html.c:1766
350+#: html.c:1811 html.c:1844
351 msgid "One hashtag per line"
352 msgstr "Ien hashtag per rigel"
353 
354-#: html.c:1755 html.c:1787
355+#: html.c:1833 html.c:1865
356 msgid "Update hashtags"
357 msgstr "Hashtags bywurkje"
358 
359-#: html.c:1904
360+#: html.c:1982
361 msgid "Say you like this post"
362 msgstr "Sis dat jo dit berjocht mooi fine"
363 
364-#: html.c:1909 html.c:4775
365+#: html.c:1987 html.c:5219
366 msgid "Unlike"
367 msgstr "Net mooi fine"
368 
369-#: html.c:1909
370+#: html.c:1987
371 msgid "Nah don't like it that much"
372 msgstr "Nee, ik find it net sa mooi"
373 
374-#: html.c:1915 html.c:4912
375+#: html.c:1993 html.c:5356
376 msgid "Unpin"
377 msgstr "Net fêstsette"
378 
379-#: html.c:1915
380+#: html.c:1993
381 msgid "Unpin this post from your timeline"
382 msgstr "Dit berjocht net mear fêstsette op jo tiidline"
383 
384-#: html.c:1918 html.c:4907
385+#: html.c:1996 html.c:5351
386 msgid "Pin"
387 msgstr "Fêstsette"
388 
389-#: html.c:1918
390+#: html.c:1996
391 msgid "Pin this post to the top of your timeline"
392 msgstr "Dit berjocht fêstsette boppe-oan jo tiidline"
393 
394-#: html.c:1925
395+#: html.c:2003
396 msgid "Announce this post to your followers"
397 msgstr "Dit berjocht oankondichje by jo folgers"
398 
399-#: html.c:1930 html.c:4783
400+#: html.c:2008 html.c:5227
401 msgid "Unboost"
402 msgstr "Untboostje"
403 
404-#: html.c:1930
405+#: html.c:2008
406 msgid "I regret I boosted this"
407 msgstr "Ik betreure dat ik dit boostet ha"
408 
409-#: html.c:1936 html.c:4922
410+#: html.c:2014 html.c:5366
411 msgid "Unbookmark"
412 msgstr "Ut favorite fuortsmite"
413 
414-#: html.c:1936
415+#: html.c:2014
416 msgid "Delete this post from your bookmarks"
417 msgstr "Dit berjocht ut jo favorite fuortsmite"
418 
419-#: html.c:1939 html.c:4917
420+#: html.c:2017 html.c:5361
421 msgid "Bookmark"
422 msgstr "Favoryt"
423 
424-#: html.c:1939
425+#: html.c:2017
426 msgid "Add this post to your bookmarks"
427 msgstr "Dit berjocht tafoegje oan jo favorite"
428 
429-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
430+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
431 msgid "Unfollow"
432 msgstr "Untfolgje"
433 
434-#: html.c:1945 html.c:3387
435+#: html.c:2023 html.c:3763 html.c:4042
436 msgid "Stop following this user's activity"
437 msgstr "Stopje mei it folgjen fan de aktiviteit fan dizze brûker"
438 
439-#: html.c:1949 html.c:3401
440+#: html.c:2027 html.c:3777 html.c:4044
441 msgid "Start following this user's activity"
442 msgstr "Begjinne mei it folgjen fan de aktiviteit fan dizze brûker"
443 
444-#: html.c:1955 html.c:4860
445+#: html.c:2033 html.c:5304
446 msgid "Unfollow Group"
447 msgstr "Untfolgje groep"
448 
449-#: html.c:1956
450+#: html.c:2034
451 msgid "Stop following this group or channel"
452 msgstr "Stopje mei it folgjen fan dizze groep of kanaal"
453 
454-#: html.c:1960 html.c:4847
455+#: html.c:2038 html.c:5291
456 msgid "Follow Group"
457 msgstr "Folgje groep"
458 
459-#: html.c:1961
460+#: html.c:2039
461 msgid "Start following this group or channel"
462 msgstr "Begjinne mei it folgjen fan dizze groep of kanaal"
463 
464-#: html.c:1966 html.c:3423 html.c:4791
465+#: html.c:2044 html.c:3799 html.c:5235
466 msgid "MUTE"
467 msgstr "STILJE"
468 
469-#: html.c:1967
470+#: html.c:2045
471 msgid "Block any activity from this user forever"
472 msgstr "Alle aktiviteit fan dizze brûker foar altyd blokkearje"
473 
474-#: html.c:1972 html.c:3405 html.c:4877
475+#: html.c:2050 html.c:3781 html.c:5321
476 msgid "Delete"
477 msgstr "Fuortsmite"
478 
479-#: html.c:1972
480+#: html.c:2050
481 msgid "Delete this post"
482 msgstr "Dit berjocht fuortsmite"
483 
484-#: html.c:1975 html.c:4799
485+#: html.c:2053 html.c:5243
486 msgid "Hide"
487 msgstr "Ferbergje"
488 
489-#: html.c:1975
490+#: html.c:2053
491 msgid "Hide this post and its children"
492 msgstr "Dit berjocht en syn bern ferbergje"
493 
494-#: html.c:2017
495+#: html.c:2095
496 msgid "Edit..."
497 msgstr "Bewurkje..."
498 
499-#: html.c:2039
500+#: html.c:2133
501 msgid "Reply..."
502 msgstr "Antwurd..."
503 
504-#: html.c:2090
505+#: html.c:2184
506 msgid "Truncated (too deep)"
507 msgstr "Ofkapte (te djip)"
508 
509-#: html.c:2108
510+#: html.c:2202
511 msgid "follows you"
512 msgstr "folget jo"
513 
514-#: html.c:2182
515+#: html.c:2276
516 msgid "Pinned"
517 msgstr "Fêstsetten"
518 
519-#: html.c:2190
520+#: html.c:2284
521 msgid "Bookmarked"
522 msgstr "Favoryt"
523 
524-#: html.c:2198
525+#: html.c:2292
526 msgid "Poll"
527 msgstr "Peiling"
528 
529-#: html.c:2205
530+#: html.c:2299
531 msgid "Voted"
532 msgstr "Stimme"
533 
534-#: html.c:2214
535+#: html.c:2308
536 msgid "Event"
537 msgstr "Barrens"
538 
539-#: html.c:2246 html.c:2275
540+#: html.c:2340 html.c:2369
541 msgid "boosted"
542 msgstr "boostet"
543 
544-#: html.c:2289
545+#: html.c:2383
546 msgid "in reply to"
547 msgstr "as antwurd op"
548 
549-#: html.c:2345
550+#: html.c:2439
551 msgid " [SENSITIVE CONTENT]"
552 msgstr " [GEFOELIGE YNHÂLD]"
553 
554-#: html.c:2512
555+#: html.c:2796
556 msgid "Vote"
557 msgstr "Stimme"
558 
559-#: html.c:2522
560+#: html.c:2806
561 msgid "Closed"
562 msgstr "Sletten"
563 
564-#: html.c:2547
565+#: html.c:2831
566 msgid "Closes in"
567 msgstr "Slut oer"
568 
569-#: html.c:2627
570+#: html.c:2911
571 msgid "Video"
572 msgstr "Fideo"
573 
574-#: html.c:2642
575+#: html.c:2926
576 msgid "Audio"
577 msgstr "Audio"
578 
579-#: html.c:2670
580+#: html.c:2954
581 msgid "Attachment"
582 msgstr "Bylage"
583 
584-#: html.c:2684
585+#: html.c:2968
586 msgid "Alt..."
587 msgstr "Alt..."
588 
589-#: html.c:2697
590+#: html.c:2981
591 msgid "Source channel or community"
592 msgstr "Boarnekanaal of mienskip"
593 
594-#: html.c:2791
595+#: html.c:3075
596 msgid "Time: "
597 msgstr "Tiid: "
598 
599-#: html.c:2872
600+#: html.c:3156
601 msgid "Older..."
602 msgstr "Alder..."
603 
604-#: html.c:2974
605+#: html.c:3258
606 msgid "about this site"
607 msgstr "oer dizze side"
608 
609-#: html.c:2976
610+#: html.c:3260
611 msgid "powered by "
612 msgstr "oanjoegen troch "
613 
614-#: html.c:3041
615+#: html.c:3329
616 msgid "Dismiss"
617 msgstr "Wegerje"
618 
619-#: html.c:3058
620+#: html.c:3346
621 #, c-format
622 msgid "Timeline for list '%s'"
623 msgstr "Tiidline foar list '%s'"
624 
625-#: html.c:3077 html.c:4169
626+#: html.c:3365 html.c:4589
627 msgid "Pinned posts"
628 msgstr "Fêstsette berjochten"
629 
630-#: html.c:3089 html.c:4184
631+#: html.c:3377 html.c:4604
632 msgid "Bookmarked posts"
633 msgstr "Favorite berjochten"
634 
635-#: html.c:3101 html.c:4199
636+#: html.c:3389 html.c:4619
637 msgid "Post drafts"
638 msgstr "Berjochtkonsepten"
639 
640-#: html.c:3177
641+#: html.c:3465
642 msgid "No more unseen posts"
643 msgstr "Gjin net-lêzene berjochten mear"
644 
645-#: html.c:3181 html.c:3290
646+#: html.c:3469 html.c:3578
647 msgid "Back to top"
648 msgstr "Werom nei boppe"
649 
650-#: html.c:3243
651+#: html.c:3531
652 msgid "History"
653 msgstr "Skiednis"
654 
655-#: html.c:3295 html.c:3734
656+#: html.c:3583 html.c:4149
657 msgid "More..."
658 msgstr "Mear..."
659 
660-#: html.c:3391 html.c:4813
661+#: html.c:3767 html.c:5257
662 msgid "Unlimit"
663 msgstr "Unbeheind"
664 
665-#: html.c:3392
666+#: html.c:3768
667 msgid "Allow announces (boosts) from this user"
668 msgstr "Oankondichings (boosts) fan dizze brûker tasteane"
669 
670-#: html.c:3395 html.c:4809
671+#: html.c:3771 html.c:5253
672 msgid "Limit"
673 msgstr "Beheine"
674 
675-#: html.c:3396
676+#: html.c:3772
677 msgid "Block announces (boosts) from this user"
678 msgstr "Oankondichings (boosts) fan dizze brûker blokkearje"
679 
680-#: html.c:3405
681+#: html.c:3781
682 msgid "Delete this user"
683 msgstr "Dizze brûker fuortsmite"
684 
685-#: html.c:3410 html.c:4927
686+#: html.c:3786 html.c:5371
687 msgid "Approve"
688 msgstr "Goedkarre"
689 
690-#: html.c:3411
691+#: html.c:3787
692 msgid "Approve this follow request"
693 msgstr "Dit folchfersk goedkarre"
694 
695-#: html.c:3414 html.c:4951
696+#: html.c:3790 html.c:5395
697 msgid "Discard"
698 msgstr "Wegerje"
699 
700-#: html.c:3414
701+#: html.c:3790
702 msgid "Discard this follow request"
703 msgstr "Dit folchfersk wegerje"
704 
705-#: html.c:3419 html.c:4795
706+#: html.c:3795 html.c:5239
707 msgid "Unmute"
708 msgstr "Net mear stilje"
709 
710-#: html.c:3420
711+#: html.c:3796
712 msgid "Stop blocking activities from this user"
713 msgstr "Stopje mei it blokkearjen fan aktiviteiten fan dizze brûker"
714 
715-#: html.c:3424
716+#: html.c:3800
717 msgid "Block any activity from this user"
718 msgstr "Alle aktiviteit fan dizze brûker blokkearje"
719 
720-#: html.c:3432
721+#: html.c:3808
722 msgid "Direct Message..."
723 msgstr "Persoanlik berjocht..."
724 
725-#: html.c:3467
726+#: html.c:3843
727 msgid "Pending follow confirmations"
728 msgstr "Iepenstjitte folchbefestichings"
729 
730-#: html.c:3471
731+#: html.c:3847
732 msgid "People you follow"
733 msgstr "Minsken dy't jo folge"
734 
735-#: html.c:3472
736+#: html.c:3848
737 msgid "People that follow you"
738 msgstr "Minsken dy't jo folge"
739 
740-#: html.c:3511
741+#: html.c:3887
742 msgid "Clear all"
743 msgstr "Alles wiskje"
744 
745-#: html.c:3571
746+#: html.c:3951
747 msgid "Mention"
748 msgstr "Neame"
749 
750-#: html.c:3574
751+#: html.c:3954
752 msgid "Finished poll"
753 msgstr "Ofêrunde peiling"
754 
755-#: html.c:3590
756+#: html.c:3979
757 msgid "Follow Request"
758 msgstr "Folchfersk"
759 
760-#: html.c:3674
761+#: html.c:4089
762 msgid "Context"
763 msgstr "Kontekst"
764 
765-#: html.c:3692
766+#: html.c:4107
767 msgid "New"
768 msgstr "Nij"
769 
770-#: html.c:3707
771+#: html.c:4122
772 msgid "Already seen"
773 msgstr "Al sjoen"
774 
775-#: html.c:3722
776+#: html.c:4137
777 msgid "None"
778 msgstr "Gjin"
779 
780-#: html.c:3994
781+#: html.c:4414
782 #, c-format
783 msgid "Search results for account %s"
784 msgstr "Sêkresultaten foar akkount %s"
785 
786-#: html.c:4001
787+#: html.c:4421
788 #, c-format
789 msgid "Account %s not found"
790 msgstr "Akkount %s net foun"
791 
792-#: html.c:4032
793+#: html.c:4452
794 #, c-format
795 msgid "Search results for tag %s"
796 msgstr "Sêkresultaten foar tag %s"
797 
798-#: html.c:4032
799+#: html.c:4452
800 #, c-format
801 msgid "Nothing found for tag %s"
802 msgstr "Neat foun foar tag %s"
803 
804-#: html.c:4048
805+#: html.c:4468
806 #, c-format
807 msgid "Search results for '%s' (may be more)"
808 msgstr "Sêkresultaten foar '%s' (mooglik mear)"
809 
810-#: html.c:4051
811+#: html.c:4471
812 #, c-format
813 msgid "Search results for '%s'"
814 msgstr "Sêkresultaten foar '%s'"
815 
816-#: html.c:4054
817+#: html.c:4474
818 #, c-format
819 msgid "No more matches for '%s'"
820 msgstr "Gjin fjirder oerienkomsten foar '%s'"
821 
822-#: html.c:4056
823+#: html.c:4476
824 #, c-format
825 msgid "Nothing found for '%s'"
826 msgstr "Neat foun foar '%s'"
827 
828-#: html.c:4154
829+#: html.c:4574
830 msgid "Showing instance timeline"
831 msgstr "Tiidline fan ynstallaasje toane"
832 
833-#: html.c:4237
834+#: html.c:4657
835 #, c-format
836 msgid "Showing timeline for list '%s'"
837 msgstr "Tiidline foar list '%s' toane"
838 
839-#: httpd.c:258
840+#: httpd.c:259
841 #, c-format
842 msgid "Search results for tag #%s"
843 msgstr "Sêkresultaten foar tag #%s"
844 
845-#: httpd.c:267
846+#: httpd.c:268
847 msgid "Recent posts by users in this instance"
848 msgstr "Resinte berjochten fan brûkers yn dizze ynstallaasje"
849 
850-#: html.c:1764
851+#: html.c:1842
852 msgid "Blocked hashtags..."
853 msgstr "Blokkearre hashtags..."
854 
855-#: html.c:518
856+#: html.c:574
857 msgid "Optional URL to reply to"
858 msgstr "Opsjonele URL om op te antwurdjen"
859 
860-#: html.c:695
861+#: html.c:751
862 msgid ""
863 "Option 1...\n"
864 "Option 2...\n"
865@@ -708,94 +708,106 @@ msgstr ""
866 "Optie 3...\n"
867 "..."
868 
869-#: html.c:1558
870+#: html.c:1636
871 msgid "Bot API key"
872 msgstr "Bot API kaai"
873 
874-#: html.c:1564
875+#: html.c:1642
876 msgid "Chat id"
877 msgstr "Chat id"
878 
879-#: html.c:1572
880+#: html.c:1650
881 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
882 msgstr "ntfy server - folsleine URL (foarbyld: https://ntfy.sh/YourTopic)"
883 
884-#: html.c:1578
885+#: html.c:1656
886 msgid "ntfy token - if needed"
887 msgstr "ntfy token - as nedich"
888 
889-#: html.c:3078
890+#: html.c:3366
891 msgid "pinned"
892 msgstr "fêssetten"
893 
894-#: html.c:3090
895+#: html.c:3378
896 msgid "bookmarks"
897 msgstr "favorite"
898 
899-#: html.c:3102
900+#: html.c:3390
901 msgid "drafts"
902 msgstr "konsepten"
903 
904-#: html.c:584
905+#: html.c:640
906 msgid "Scheduled post..."
907 msgstr "Planne berjocht..."
908 
909 msgid "Post date and time:"
910 msgstr "Berjocht datum en tiid:"
911 
912-#: html.c:3113 html.c:4214
913+#: html.c:3401 html.c:4634
914 msgid "Scheduled posts"
915 msgstr "Planne berjochten"
916 
917-#: html.c:3114
918+#: html.c:3402
919 msgid "scheduled posts"
920 msgstr "planne berjochten"
921 
922-#: html.c:578
923+#: html.c:634
924 #, c-format
925 msgid "Post date and time (timezone: %s):"
926 msgstr "Berjocht datum en tiid (tiidsone: %s):"
927 
928-#: html.c:1689
929+#: html.c:1767
930 msgid "Time zone:"
931 msgstr "Tiidsone:"
932 
933-#: html.c:559
934+#: html.c:615
935 msgid "Language:"
936 msgstr ""
937 
938-#: html.c:1580
939+#: html.c:1658
940 msgid "Notify webhook:"
941 msgstr ""
942 
943-#: html.c:1586
944+#: html.c:1664
945 msgid "http://example.com/webhook"
946 msgstr ""
947 
948-#: html.c:1694
949+#: html.c:1772
950 msgid "Languages you usually post in:"
951 msgstr ""
952 
953-#: html.c:1700
954+#: html.c:1778
955 msgid "en fr es de_AT"
956 msgstr ""
957 
958-#: html.c:460
959+#: html.c:428
960 msgid "Visibility: "
961 msgstr ""
962 
963-#: html.c:468
964 msgid "Public"
965 msgstr ""
966 
967-#: html.c:477
968 msgid "Unlisted"
969 msgstr ""
970 
971-#: html.c:486
972 msgid "Followers-only"
973 msgstr ""
974 
975-#: html.c:495
976 msgid "Direct Message"
977 msgstr ""
978+
979+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
980+msgid "EmojiUnreact"
981+msgstr ""
982+
983+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
984+msgid "EmojiReact"
985+msgstr ""
986+
987+#: html.c:2115
988+msgid "Emoji react..."
989+msgstr ""
990+
991+#: html.c:2609
992+msgid "Emoji reactions: "
993+msgstr ""
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: it\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Contenuto sensibile"
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Descrizione del contenuto sensibile"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Riservato alle persone indicate: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Rispondi a (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Salva come bozza senza inviare"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Bozza"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Allegati..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "File:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Pulisci ed elimina l'allegato"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Descrizione dell'allegato"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Sondaggio..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Scelte per il sondaggio (una per linea, massimo 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Una scelta"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Scelte multiple"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Termina in 5 minuti"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Termina in 1 ora"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Termina in 1 giorno"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Post"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Descrizione del sito web"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Email dell'amministratore"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Account amministratore"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d seguiti, %d seguenti"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privato"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "pubblico"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notifiche"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "persone"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "istanza"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,574 +128,574 @@ msgstr ""
150 "Ricerca post per URL o contenuto (espressione regolare), @user@host "
151 "accounts, #tag"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Ricerca contenuto"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "link verificato"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Posizione: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nuovo post..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Cosa stai pensando?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Operazioni..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Segui"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(per URL o user@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Annuncia"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(per URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Mi piace"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Impostazioni..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Nome visualizzato:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Il tuo nome"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Avatar: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Elimina l'avatar"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Immagine intestazione (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Elimina l'immagine d'intestazione"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Descriviti qui..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Mostra sempre i contenuti sensibili"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Indirizzo email per le notifiche:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Notifiche Telegram (bot key e chat id):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "Notifiche ntfy (server ntfy e token)"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Giorni di mantenimento dei post (0: impostazione server)"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Elimina i messaggi diretti delle persone non seguite"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Questo account è un bot"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Annuncio automatico delle citazioni a quest'account"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr "Quest'account è privato (post invisibili nel web)"
297 
298-#: html.c:1639
299+#: html.c:1717
300 msgid "Collapse top threads by default"
301 msgstr "Tieni chiuse le discussioni"
302 
303-#: html.c:1648
304+#: html.c:1726
305 msgid "Follow requests must be approved"
306 msgstr "Devi approvare le richieste dei seguenti"
307 
308-#: html.c:1657
309+#: html.c:1735
310 msgid "Publish follower and following metrics"
311 msgstr "Rendi pubblici seguenti e seguiti"
312 
313-#: html.c:1659
314+#: html.c:1737
315 msgid "Current location:"
316 msgstr "Posizione corrente:"
317 
318-#: html.c:1673
319+#: html.c:1751
320 msgid "Profile metadata (key=value pairs in each line):"
321 msgstr "Dati del profilo (coppie di chiave=valore per ogni linea):"
322 
323-#: html.c:1684
324+#: html.c:1762
325 msgid "Web interface language:"
326 msgstr "Lingua dell'interfaccia web:"
327 
328-#: html.c:1703
329+#: html.c:1781
330 msgid "New password:"
331 msgstr "Nuova password:"
332 
333-#: html.c:1710
334+#: html.c:1788
335 msgid "Repeat new password:"
336 msgstr "Reinserisci la password:"
337 
338-#: html.c:1720
339+#: html.c:1798
340 msgid "Update user info"
341 msgstr "Aggiorna dati utente"
342 
343-#: html.c:1731
344+#: html.c:1809
345 msgid "Followed hashtags..."
346 msgstr "Hashtag seguiti..."
347 
348-#: html.c:1733 html.c:1766
349+#: html.c:1811 html.c:1844
350 msgid "One hashtag per line"
351 msgstr "Un hashtag per linea"
352 
353-#: html.c:1755 html.c:1787
354+#: html.c:1833 html.c:1865
355 msgid "Update hashtags"
356 msgstr "Aggiorna hashtags"
357 
358-#: html.c:1904
359+#: html.c:1982
360 msgid "Say you like this post"
361 msgstr "Questo post ti piace"
362 
363-#: html.c:1909 html.c:4775
364+#: html.c:1987 html.c:5219
365 msgid "Unlike"
366 msgstr "Non mi piace"
367 
368-#: html.c:1909
369+#: html.c:1987
370 msgid "Nah don't like it that much"
371 msgstr "No, non mi piace molto"
372 
373-#: html.c:1915 html.c:4912
374+#: html.c:1993 html.c:5356
375 msgid "Unpin"
376 msgstr "Sgancia"
377 
378-#: html.c:1915
379+#: html.c:1993
380 msgid "Unpin this post from your timeline"
381 msgstr "Sgancia questo post dalla timeline"
382 
383-#: html.c:1918 html.c:4907
384+#: html.c:1996 html.c:5351
385 msgid "Pin"
386 msgstr "Aggancia"
387 
388-#: html.c:1918
389+#: html.c:1996
390 msgid "Pin this post to the top of your timeline"
391 msgstr "Aggancia questo post in cima alla timeline"
392 
393-#: html.c:1925
394+#: html.c:2003
395 msgid "Announce this post to your followers"
396 msgstr "Annuncia questo post ai tuoi seguenti"
397 
398-#: html.c:1930 html.c:4783
399+#: html.c:2008 html.c:5227
400 msgid "Unboost"
401 msgstr "Rimuovi annuncio"
402 
403-#: html.c:1930
404+#: html.c:2008
405 msgid "I regret I boosted this"
406 msgstr "Mi pento di aver annunciato questo"
407 
408-#: html.c:1936 html.c:4922
409+#: html.c:2014 html.c:5366
410 msgid "Unbookmark"
411 msgstr "Elimina segnalibro"
412 
413-#: html.c:1936
414+#: html.c:2014
415 msgid "Delete this post from your bookmarks"
416 msgstr "Elimina questo post dai segnalibri"
417 
418-#: html.c:1939 html.c:4917
419+#: html.c:2017 html.c:5361
420 msgid "Bookmark"
421 msgstr "Segnalibro"
422 
423-#: html.c:1939
424+#: html.c:2017
425 msgid "Add this post to your bookmarks"
426 msgstr "Aggiungi questo post ai segnalibri"
427 
428-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
429+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
430 msgid "Unfollow"
431 msgstr "Smetti di seguire"
432 
433-#: html.c:1945 html.c:3387
434+#: html.c:2023 html.c:3763 html.c:4042
435 msgid "Stop following this user's activity"
436 msgstr "Smetti di seguire l'utente"
437 
438-#: html.c:1949 html.c:3401
439+#: html.c:2027 html.c:3777 html.c:4044
440 msgid "Start following this user's activity"
441 msgstr "Sequi l'utente"
442 
443-#: html.c:1955 html.c:4860
444+#: html.c:2033 html.c:5304
445 msgid "Unfollow Group"
446 msgstr "Smetti di seguire il gruppo"
447 
448-#: html.c:1956
449+#: html.c:2034
450 msgid "Stop following this group or channel"
451 msgstr "Smetti di seguire il gruppo o canale"
452 
453-#: html.c:1960 html.c:4847
454+#: html.c:2038 html.c:5291
455 msgid "Follow Group"
456 msgstr "Segui grupp"
457 
458-#: html.c:1961
459+#: html.c:2039
460 msgid "Start following this group or channel"
461 msgstr "Segui il gruppo o canale"
462 
463-#: html.c:1966 html.c:3423 html.c:4791
464+#: html.c:2044 html.c:3799 html.c:5235
465 msgid "MUTE"
466 msgstr "Silenzia"
467 
468-#: html.c:1967
469+#: html.c:2045
470 msgid "Block any activity from this user forever"
471 msgstr "Blocca l'utente"
472 
473-#: html.c:1972 html.c:3405 html.c:4877
474+#: html.c:2050 html.c:3781 html.c:5321
475 msgid "Delete"
476 msgstr "Elimina"
477 
478-#: html.c:1972
479+#: html.c:2050
480 msgid "Delete this post"
481 msgstr "Elimina questo post"
482 
483-#: html.c:1975 html.c:4799
484+#: html.c:2053 html.c:5243
485 msgid "Hide"
486 msgstr "Nascondi"
487 
488-#: html.c:1975
489+#: html.c:2053
490 msgid "Hide this post and its children"
491 msgstr "Nascondi questo post completamente"
492 
493-#: html.c:2017
494+#: html.c:2095
495 msgid "Edit..."
496 msgstr "Modifica..."
497 
498-#: html.c:2039
499+#: html.c:2133
500 msgid "Reply..."
501 msgstr "Rispondi..."
502 
503-#: html.c:2090
504+#: html.c:2184
505 msgid "Truncated (too deep)"
506 msgstr "Troncato (troppo lungo)"
507 
508-#: html.c:2108
509+#: html.c:2202
510 msgid "follows you"
511 msgstr "Ti segue"
512 
513-#: html.c:2182
514+#: html.c:2276
515 msgid "Pinned"
516 msgstr "Aggancia"
517 
518-#: html.c:2190
519+#: html.c:2284
520 msgid "Bookmarked"
521 msgstr "Segnalibro"
522 
523-#: html.c:2198
524+#: html.c:2292
525 msgid "Poll"
526 msgstr "Sondaggio"
527 
528-#: html.c:2205
529+#: html.c:2299
530 msgid "Voted"
531 msgstr "Votato"
532 
533-#: html.c:2214
534+#: html.c:2308
535 msgid "Event"
536 msgstr "Evento"
537 
538-#: html.c:2246 html.c:2275
539+#: html.c:2340 html.c:2369
540 msgid "boosted"
541 msgstr "Annunciato"
542 
543-#: html.c:2289
544+#: html.c:2383
545 msgid "in reply to"
546 msgstr "in risposta a"
547 
548-#: html.c:2345
549+#: html.c:2439
550 msgid " [SENSITIVE CONTENT]"
551 msgstr " [CONTENUTO SENSIBILE]"
552 
553-#: html.c:2512
554+#: html.c:2796
555 msgid "Vote"
556 msgstr "Vota"
557 
558-#: html.c:2522
559+#: html.c:2806
560 msgid "Closed"
561 msgstr "Chiuso"
562 
563-#: html.c:2547
564+#: html.c:2831
565 msgid "Closes in"
566 msgstr "Chiude in"
567 
568-#: html.c:2627
569+#: html.c:2911
570 msgid "Video"
571 msgstr "Video"
572 
573-#: html.c:2642
574+#: html.c:2926
575 msgid "Audio"
576 msgstr "Audio"
577 
578-#: html.c:2670
579+#: html.c:2954
580 msgid "Attachment"
581 msgstr "Allegato"
582 
583-#: html.c:2684
584+#: html.c:2968
585 msgid "Alt..."
586 msgstr "Testo alternativo..."
587 
588-#: html.c:2697
589+#: html.c:2981
590 msgid "Source channel or community"
591 msgstr "Provenienza del canale o comunità"
592 
593-#: html.c:2791
594+#: html.c:3075
595 msgid "Time: "
596 msgstr "Orario:"
597 
598-#: html.c:2872
599+#: html.c:3156
600 msgid "Older..."
601 msgstr "Vecchi..."
602 
603-#: html.c:2974
604+#: html.c:3258
605 msgid "about this site"
606 msgstr "descrizione"
607 
608-#: html.c:2976
609+#: html.c:3260
610 msgid "powered by "
611 msgstr "gestito da "
612 
613-#: html.c:3041
614+#: html.c:3329
615 msgid "Dismiss"
616 msgstr "Congeda"
617 
618-#: html.c:3058
619+#: html.c:3346
620 #, c-format
621 msgid "Timeline for list '%s'"
622 msgstr "Timeline per la lista '%s'"
623 
624-#: html.c:3077 html.c:4169
625+#: html.c:3365 html.c:4589
626 msgid "Pinned posts"
627 msgstr "Post appuntati"
628 
629-#: html.c:3089 html.c:4184
630+#: html.c:3377 html.c:4604
631 msgid "Bookmarked posts"
632 msgstr "Post segnati"
633 
634-#: html.c:3101 html.c:4199
635+#: html.c:3389 html.c:4619
636 msgid "Post drafts"
637 msgstr "Bozze"
638 
639-#: html.c:3177
640+#: html.c:3465
641 msgid "No more unseen posts"
642 msgstr "Nessun ulteriore post"
643 
644-#: html.c:3181 html.c:3290
645+#: html.c:3469 html.c:3578
646 msgid "Back to top"
647 msgstr "Torna in cima"
648 
649-#: html.c:3243
650+#: html.c:3531
651 msgid "History"
652 msgstr "Storico"
653 
654-#: html.c:3295 html.c:3734
655+#: html.c:3583 html.c:4149
656 msgid "More..."
657 msgstr "Ancora..."
658 
659-#: html.c:3391 html.c:4813
660+#: html.c:3767 html.c:5257
661 msgid "Unlimit"
662 msgstr "Senza limite"
663 
664-#: html.c:3392
665+#: html.c:3768
666 msgid "Allow announces (boosts) from this user"
667 msgstr "Permetti annunci dall'utente"
668 
669-#: html.c:3395 html.c:4809
670+#: html.c:3771 html.c:5253
671 msgid "Limit"
672 msgstr "Limite"
673 
674-#: html.c:3396
675+#: html.c:3772
676 msgid "Block announces (boosts) from this user"
677 msgstr "Blocca annunci dall'utente"
678 
679-#: html.c:3405
680+#: html.c:3781
681 msgid "Delete this user"
682 msgstr "Elimina l'utente"
683 
684-#: html.c:3410 html.c:4927
685+#: html.c:3786 html.c:5371
686 msgid "Approve"
687 msgstr "Approva"
688 
689-#: html.c:3411
690+#: html.c:3787
691 msgid "Approve this follow request"
692 msgstr "Approva richiesta di seguirti"
693 
694-#: html.c:3414 html.c:4951
695+#: html.c:3790 html.c:5395
696 msgid "Discard"
697 msgstr "Scarta"
698 
699-#: html.c:3414
700+#: html.c:3790
701 msgid "Discard this follow request"
702 msgstr "Scarta richiesta di seguirti"
703 
704-#: html.c:3419 html.c:4795
705+#: html.c:3795 html.c:5239
706 msgid "Unmute"
707 msgstr "Rimuovi silenziamento"
708 
709-#: html.c:3420
710+#: html.c:3796
711 msgid "Stop blocking activities from this user"
712 msgstr "Sblocca l'utente"
713 
714-#: html.c:3424
715+#: html.c:3800
716 msgid "Block any activity from this user"
717 msgstr "Blocca l'utente completamente"
718 
719-#: html.c:3432
720+#: html.c:3808
721 msgid "Direct Message..."
722 msgstr "Messaggio diretto..."
723 
724-#: html.c:3467
725+#: html.c:3843
726 msgid "Pending follow confirmations"
727 msgstr "Conferme di seguirti in attesa"
728 
729-#: html.c:3471
730+#: html.c:3847
731 msgid "People you follow"
732 msgstr "Persone che segui"
733 
734-#: html.c:3472
735+#: html.c:3848
736 msgid "People that follow you"
737 msgstr "Persone che ti seguono"
738 
739-#: html.c:3511
740+#: html.c:3887
741 msgid "Clear all"
742 msgstr "Pulisci"
743 
744-#: html.c:3571
745+#: html.c:3951
746 msgid "Mention"
747 msgstr "Citazione"
748 
749-#: html.c:3574
750+#: html.c:3954
751 msgid "Finished poll"
752 msgstr "Sondaggio concluso"
753 
754-#: html.c:3590
755+#: html.c:3979
756 msgid "Follow Request"
757 msgstr "Richiesta di seguire"
758 
759-#: html.c:3674
760+#: html.c:4089
761 msgid "Context"
762 msgstr "Contesto"
763 
764-#: html.c:3692
765+#: html.c:4107
766 msgid "New"
767 msgstr "Nuovo"
768 
769-#: html.c:3707
770+#: html.c:4122
771 msgid "Already seen"
772 msgstr "Già visto"
773 
774-#: html.c:3722
775+#: html.c:4137
776 msgid "None"
777 msgstr "Niente"
778 
779-#: html.c:3994
780+#: html.c:4414
781 #, c-format
782 msgid "Search results for account %s"
783 msgstr "Risultati per account %s"
784 
785-#: html.c:4001
786+#: html.c:4421
787 #, c-format
788 msgid "Account %s not found"
789 msgstr "Account %s non trovato"
790 
791-#: html.c:4032
792+#: html.c:4452
793 #, c-format
794 msgid "Search results for tag %s"
795 msgstr "Risultati per tag %s"
796 
797-#: html.c:4032
798+#: html.c:4452
799 #, c-format
800 msgid "Nothing found for tag %s"
801 msgstr "Nessun risultato per il tag %S"
802 
803-#: html.c:4048
804+#: html.c:4468
805 #, c-format
806 msgid "Search results for '%s' (may be more)"
807 msgstr "Risultati per tag %s (ancora...)"
808 
809-#: html.c:4051
810+#: html.c:4471
811 #, c-format
812 msgid "Search results for '%s'"
813 msgstr "Risultati per %s"
814 
815-#: html.c:4054
816+#: html.c:4474
817 #, c-format
818 msgid "No more matches for '%s'"
819 msgstr "Nessuna corrispondenza per '%s'"
820 
821-#: html.c:4056
822+#: html.c:4476
823 #, c-format
824 msgid "Nothing found for '%s'"
825 msgstr "Non trovato per '%s'"
826 
827-#: html.c:4154
828+#: html.c:4574
829 msgid "Showing instance timeline"
830 msgstr "Mostra la timeline dell'istanza"
831 
832-#: html.c:4237
833+#: html.c:4657
834 #, c-format
835 msgid "Showing timeline for list '%s'"
836 msgstr "Mostra la timeline della lista '%s'"
837 
838-#: httpd.c:258
839+#: httpd.c:259
840 #, c-format
841 msgid "Search results for tag #%s"
842 msgstr "Risultati per tag #%s"
843 
844-#: httpd.c:267
845+#: httpd.c:268
846 msgid "Recent posts by users in this instance"
847 msgstr "Post recenti in questa istanza"
848 
849-#: html.c:1764
850+#: html.c:1842
851 msgid "Blocked hashtags..."
852 msgstr "Hashtag bloccati..."
853 
854-#: html.c:518
855+#: html.c:574
856 msgid "Optional URL to reply to"
857 msgstr "URL facoltativo di risposta"
858 
859-#: html.c:695
860+#: html.c:751
861 msgid ""
862 "Option 1...\n"
863 "Option 2...\n"
864@@ -707,94 +707,106 @@ msgstr ""
865 "Scelta 3...\n"
866 "..."
867 
868-#: html.c:1558
869+#: html.c:1636
870 msgid "Bot API key"
871 msgstr "Chiave per le API del bot"
872 
873-#: html.c:1564
874+#: html.c:1642
875 msgid "Chat id"
876 msgstr "Id della chat"
877 
878-#: html.c:1572
879+#: html.c:1650
880 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
881 msgstr "Server ntfy - URL completo (esempio: https://ntfy.sh/YourTopic)"
882 
883-#: html.c:1578
884+#: html.c:1656
885 msgid "ntfy token - if needed"
886 msgstr "Token ntfy - se richiesto"
887 
888-#: html.c:3078
889+#: html.c:3366
890 msgid "pinned"
891 msgstr "appuntati"
892 
893-#: html.c:3090
894+#: html.c:3378
895 msgid "bookmarks"
896 msgstr "segnalibri"
897 
898-#: html.c:3102
899+#: html.c:3390
900 msgid "drafts"
901 msgstr "bozze"
902 
903-#: html.c:584
904+#: html.c:640
905 msgid "Scheduled post..."
906 msgstr ""
907 
908 msgid "Post date and time:"
909 msgstr ""
910 
911-#: html.c:3113 html.c:4214
912+#: html.c:3401 html.c:4634
913 msgid "Scheduled posts"
914 msgstr ""
915 
916-#: html.c:3114
917+#: html.c:3402
918 msgid "scheduled posts"
919 msgstr ""
920 
921-#: html.c:578
922+#: html.c:634
923 #, c-format
924 msgid "Post date and time (timezone: %s):"
925 msgstr ""
926 
927-#: html.c:1689
928+#: html.c:1767
929 msgid "Time zone:"
930 msgstr ""
931 
932-#: html.c:559
933+#: html.c:615
934 msgid "Language:"
935 msgstr ""
936 
937-#: html.c:1580
938+#: html.c:1658
939 msgid "Notify webhook:"
940 msgstr ""
941 
942-#: html.c:1586
943+#: html.c:1664
944 msgid "http://example.com/webhook"
945 msgstr ""
946 
947-#: html.c:1694
948+#: html.c:1772
949 msgid "Languages you usually post in:"
950 msgstr ""
951 
952-#: html.c:1700
953+#: html.c:1778
954 msgid "en fr es de_AT"
955 msgstr ""
956 
957-#: html.c:460
958+#: html.c:428
959 msgid "Visibility: "
960 msgstr ""
961 
962-#: html.c:468
963 msgid "Public"
964 msgstr ""
965 
966-#: html.c:477
967 msgid "Unlisted"
968 msgstr ""
969 
970-#: html.c:486
971 msgid "Followers-only"
972 msgstr ""
973 
974-#: html.c:495
975 msgid "Direct Message"
976 msgstr ""
977+
978+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
979+msgid "EmojiUnreact"
980+msgstr ""
981+
982+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
983+msgid "EmojiReact"
984+msgstr ""
985+
986+#: html.c:2115
987+msgid "Emoji react..."
988+msgstr ""
989+
990+#: html.c:2609
991+msgid "Emoji reactions: "
992+msgstr ""
+202, -190
  1@@ -8,119 +8,119 @@ msgstr ""
  2 "Language: nl_NL\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Gevoelige inhoud: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Omschrijving van gevoelige inhoud"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Enkel voor genoemde personen: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Antwoord op (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Niet verzenden, maar opslaan als concept"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Concept:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Bijlagen..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Bestand:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Veld leegmaken om de bijlage te verwijderen"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Omschrijving van bijlage"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Peiling..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Peiling opties (één per regel, tot 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Eén keuze"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Meerdere keuzes"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Eindigt over 5 minuten"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Eindigt over 1 uur"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Eindigt over 1 dag"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Bericht"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Omschrijving van de site"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Admin e-mail"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Admin account"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d volgend, %d volgers"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "privé"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "publiek"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "notificaties"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "mensen"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "instantie"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -128,574 +128,574 @@ msgstr ""
150 "Zoek berichten op URL of inhoud (reguliere expressie), @user@host accounts, "
151 "of #tag"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Inhoud zoeken"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "verifieerde link"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Locatie: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Nieuw bericht..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Wat wil je delen?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Handelingen..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Volg"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(via URL of gebruiker@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Boost"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(via URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Leuk"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Gebruikersinstellingen..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Weergavenaam:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Jouw naam"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Profielafbeelding: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Verwijder huidige profielafbeelding"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Header afbeelding (banner): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Verwijder huidige header afbeelding"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Bio:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Schrijf hier iets over jezelf..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Altijd gevoelige inhoud tonen"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "E-mailadres voor notificaties:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Telegram notificaties (bot sleutel en chat id):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "ntfy notificaties (ntfy server en token):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Maximaal aantal dagen om berichten te bewaren (0: serverinstellingen):"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Verwijder directe berichten van mensen die je niet volgt"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Dit account is een bot"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Automatisch boosten van alle vermeldingen van dit account"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr "Dit account is privé (berichten worden niet getoond via het web)"
297 
298-#: html.c:1639
299+#: html.c:1717
300 msgid "Collapse top threads by default"
301 msgstr "Klap standaard top threads in"
302 
303-#: html.c:1648
304+#: html.c:1726
305 msgid "Follow requests must be approved"
306 msgstr "Volgverzoeken moeten worden goedgekeurd"
307 
308-#: html.c:1657
309+#: html.c:1735
310 msgid "Publish follower and following metrics"
311 msgstr "Publiceer volger- en volgstatistieken"
312 
313-#: html.c:1659
314+#: html.c:1737
315 msgid "Current location:"
316 msgstr "Huidige locatie:"
317 
318-#: html.c:1673
319+#: html.c:1751
320 msgid "Profile metadata (key=value pairs in each line):"
321 msgstr "Profiel metadata (sleutel=waarde paren in elke regel):"
322 
323-#: html.c:1684
324+#: html.c:1762
325 msgid "Web interface language:"
326 msgstr "Webinterface taal:"
327 
328-#: html.c:1703
329+#: html.c:1781
330 msgid "New password:"
331 msgstr "Nieuw wachtwoord:"
332 
333-#: html.c:1710
334+#: html.c:1788
335 msgid "Repeat new password:"
336 msgstr "Herhaal nieuw wachtwoord:"
337 
338-#: html.c:1720
339+#: html.c:1798
340 msgid "Update user info"
341 msgstr "Werk gebruikersinformatie bij"
342 
343-#: html.c:1731
344+#: html.c:1809
345 msgid "Followed hashtags..."
346 msgstr "Gevolgde hashtags..."
347 
348-#: html.c:1733 html.c:1766
349+#: html.c:1811 html.c:1844
350 msgid "One hashtag per line"
351 msgstr "Eén hashtag per regel"
352 
353-#: html.c:1755 html.c:1787
354+#: html.c:1833 html.c:1865
355 msgid "Update hashtags"
356 msgstr "Werk hashtags bij"
357 
358-#: html.c:1904
359+#: html.c:1982
360 msgid "Say you like this post"
361 msgstr "Zeg dat je dit bericht leuk vindt"
362 
363-#: html.c:1909 html.c:4775
364+#: html.c:1987 html.c:5219
365 msgid "Unlike"
366 msgstr "Niet leuk vinden"
367 
368-#: html.c:1909
369+#: html.c:1987
370 msgid "Nah don't like it that much"
371 msgstr "Nee, ik vind het niet zo leuk"
372 
373-#: html.c:1915 html.c:4912
374+#: html.c:1993 html.c:5356
375 msgid "Unpin"
376 msgstr "Niet vastzetten"
377 
378-#: html.c:1915
379+#: html.c:1993
380 msgid "Unpin this post from your timeline"
381 msgstr "Zet dit bericht niet meer vast op je tijdlijn"
382 
383-#: html.c:1918 html.c:4907
384+#: html.c:1996 html.c:5351
385 msgid "Pin"
386 msgstr "Vastzetten"
387 
388-#: html.c:1918
389+#: html.c:1996
390 msgid "Pin this post to the top of your timeline"
391 msgstr "Zet dit bericht vast bovenaan je tijdlijn"
392 
393-#: html.c:1925
394+#: html.c:2003
395 msgid "Announce this post to your followers"
396 msgstr "Kondig dit bericht aan bij je volgers"
397 
398-#: html.c:1930 html.c:4783
399+#: html.c:2008 html.c:5227
400 msgid "Unboost"
401 msgstr "Ontboosten"
402 
403-#: html.c:1930
404+#: html.c:2008
405 msgid "I regret I boosted this"
406 msgstr "Ik betreur dat ik dit heb geboost"
407 
408-#: html.c:1936 html.c:4922
409+#: html.c:2014 html.c:5366
410 msgid "Unbookmark"
411 msgstr "Uit favorieten verwijderen"
412 
413-#: html.c:1936
414+#: html.c:2014
415 msgid "Delete this post from your bookmarks"
416 msgstr "Verwijder dit bericht uit je favorieten"
417 
418-#: html.c:1939 html.c:4917
419+#: html.c:2017 html.c:5361
420 msgid "Bookmark"
421 msgstr "Favoriet"
422 
423-#: html.c:1939
424+#: html.c:2017
425 msgid "Add this post to your bookmarks"
426 msgstr "Voeg dit bericht toe aan je favorieten"
427 
428-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
429+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
430 msgid "Unfollow"
431 msgstr "Ontvolgen"
432 
433-#: html.c:1945 html.c:3387
434+#: html.c:2023 html.c:3763 html.c:4042
435 msgid "Stop following this user's activity"
436 msgstr "Stop met het volgen van de activiteit van deze gebruiker"
437 
438-#: html.c:1949 html.c:3401
439+#: html.c:2027 html.c:3777 html.c:4044
440 msgid "Start following this user's activity"
441 msgstr "Start met het volgen van de activiteit van deze gebruiker"
442 
443-#: html.c:1955 html.c:4860
444+#: html.c:2033 html.c:5304
445 msgid "Unfollow Group"
446 msgstr "Ontvolg groep"
447 
448-#: html.c:1956
449+#: html.c:2034
450 msgid "Stop following this group or channel"
451 msgstr "Stop met het volgen van deze groep of kanaal"
452 
453-#: html.c:1960 html.c:4847
454+#: html.c:2038 html.c:5291
455 msgid "Follow Group"
456 msgstr "Volg groep"
457 
458-#: html.c:1961
459+#: html.c:2039
460 msgid "Start following this group or channel"
461 msgstr "Start met het volgen van deze groep of kanaal"
462 
463-#: html.c:1966 html.c:3423 html.c:4791
464+#: html.c:2044 html.c:3799 html.c:5235
465 msgid "MUTE"
466 msgstr "DEMP"
467 
468-#: html.c:1967
469+#: html.c:2045
470 msgid "Block any activity from this user forever"
471 msgstr "Blokkeer alle activiteit van deze gebruiker voor altijd"
472 
473-#: html.c:1972 html.c:3405 html.c:4877
474+#: html.c:2050 html.c:3781 html.c:5321
475 msgid "Delete"
476 msgstr "Verwijderen"
477 
478-#: html.c:1972
479+#: html.c:2050
480 msgid "Delete this post"
481 msgstr "Verwijder dit bericht"
482 
483-#: html.c:1975 html.c:4799
484+#: html.c:2053 html.c:5243
485 msgid "Hide"
486 msgstr "Verberg"
487 
488-#: html.c:1975
489+#: html.c:2053
490 msgid "Hide this post and its children"
491 msgstr "Verberg dit bericht en zijn kinderen"
492 
493-#: html.c:2017
494+#: html.c:2095
495 msgid "Edit..."
496 msgstr "Bewerken..."
497 
498-#: html.c:2039
499+#: html.c:2133
500 msgid "Reply..."
501 msgstr "Antwoord..."
502 
503-#: html.c:2090
504+#: html.c:2184
505 msgid "Truncated (too deep)"
506 msgstr "Afgekapt (te diep)"
507 
508-#: html.c:2108
509+#: html.c:2202
510 msgid "follows you"
511 msgstr "volgt jou"
512 
513-#: html.c:2182
514+#: html.c:2276
515 msgid "Pinned"
516 msgstr "Vastgezet"
517 
518-#: html.c:2190
519+#: html.c:2284
520 msgid "Bookmarked"
521 msgstr "Favoriet"
522 
523-#: html.c:2198
524+#: html.c:2292
525 msgid "Poll"
526 msgstr "Peiling"
527 
528-#: html.c:2205
529+#: html.c:2299
530 msgid "Voted"
531 msgstr "Gestemd"
532 
533-#: html.c:2214
534+#: html.c:2308
535 msgid "Event"
536 msgstr "Evenement"
537 
538-#: html.c:2246 html.c:2275
539+#: html.c:2340 html.c:2369
540 msgid "boosted"
541 msgstr "geboost"
542 
543-#: html.c:2289
544+#: html.c:2383
545 msgid "in reply to"
546 msgstr "als antwoord op"
547 
548-#: html.c:2345
549+#: html.c:2439
550 msgid " [SENSITIVE CONTENT]"
551 msgstr " [GEVOELIGE INHOUD]"
552 
553-#: html.c:2512
554+#: html.c:2796
555 msgid "Vote"
556 msgstr "Stem"
557 
558-#: html.c:2522
559+#: html.c:2806
560 msgid "Closed"
561 msgstr "Gesloten"
562 
563-#: html.c:2547
564+#: html.c:2831
565 msgid "Closes in"
566 msgstr "Sluit over"
567 
568-#: html.c:2627
569+#: html.c:2911
570 msgid "Video"
571 msgstr "Video"
572 
573-#: html.c:2642
574+#: html.c:2926
575 msgid "Audio"
576 msgstr "Audio"
577 
578-#: html.c:2670
579+#: html.c:2954
580 msgid "Attachment"
581 msgstr "Bijlage"
582 
583-#: html.c:2684
584+#: html.c:2968
585 msgid "Alt..."
586 msgstr "Alt..."
587 
588-#: html.c:2697
589+#: html.c:2981
590 msgid "Source channel or community"
591 msgstr "Bron kanaal of gemeenschap"
592 
593-#: html.c:2791
594+#: html.c:3075
595 msgid "Time: "
596 msgstr "Tijd: "
597 
598-#: html.c:2872
599+#: html.c:3156
600 msgid "Older..."
601 msgstr "Ouder..."
602 
603-#: html.c:2974
604+#: html.c:3258
605 msgid "about this site"
606 msgstr "over deze site"
607 
608-#: html.c:2976
609+#: html.c:3260
610 msgid "powered by "
611 msgstr "aangedreven door "
612 
613-#: html.c:3041
614+#: html.c:3329
615 msgid "Dismiss"
616 msgstr "Verwerp"
617 
618-#: html.c:3058
619+#: html.c:3346
620 #, c-format
621 msgid "Timeline for list '%s'"
622 msgstr "Tijdlijn voor lijst '%s'"
623 
624-#: html.c:3077 html.c:4169
625+#: html.c:3365 html.c:4589
626 msgid "Pinned posts"
627 msgstr "Vastgezette berichten"
628 
629-#: html.c:3089 html.c:4184
630+#: html.c:3377 html.c:4604
631 msgid "Bookmarked posts"
632 msgstr "Favoriete berichten"
633 
634-#: html.c:3101 html.c:4199
635+#: html.c:3389 html.c:4619
636 msgid "Post drafts"
637 msgstr "Berichtenconcepten"
638 
639-#: html.c:3177
640+#: html.c:3465
641 msgid "No more unseen posts"
642 msgstr "Geen ongelezen berichten meer"
643 
644-#: html.c:3181 html.c:3290
645+#: html.c:3469 html.c:3578
646 msgid "Back to top"
647 msgstr "Terug naar boven"
648 
649-#: html.c:3243
650+#: html.c:3531
651 msgid "History"
652 msgstr "Geschiedenis"
653 
654-#: html.c:3295 html.c:3734
655+#: html.c:3583 html.c:4149
656 msgid "More..."
657 msgstr "Meer..."
658 
659-#: html.c:3391 html.c:4813
660+#: html.c:3767 html.c:5257
661 msgid "Unlimit"
662 msgstr "Ongelimiteerd"
663 
664-#: html.c:3392
665+#: html.c:3768
666 msgid "Allow announces (boosts) from this user"
667 msgstr "Sta aankondigingen (boosts) van deze gebruiker toe"
668 
669-#: html.c:3395 html.c:4809
670+#: html.c:3771 html.c:5253
671 msgid "Limit"
672 msgstr "Limiteer"
673 
674-#: html.c:3396
675+#: html.c:3772
676 msgid "Block announces (boosts) from this user"
677 msgstr "Blokkeer aankondigingen (boosts) van deze gebruiker"
678 
679-#: html.c:3405
680+#: html.c:3781
681 msgid "Delete this user"
682 msgstr "Verwijder deze gebruiker"
683 
684-#: html.c:3410 html.c:4927
685+#: html.c:3786 html.c:5371
686 msgid "Approve"
687 msgstr "Goedkeuren"
688 
689-#: html.c:3411
690+#: html.c:3787
691 msgid "Approve this follow request"
692 msgstr "Keurt dit volgverzoek goed"
693 
694-#: html.c:3414 html.c:4951
695+#: html.c:3790 html.c:5395
696 msgid "Discard"
697 msgstr "Afwijzen"
698 
699-#: html.c:3414
700+#: html.c:3790
701 msgid "Discard this follow request"
702 msgstr "Wijs dit volgverzoek af"
703 
704-#: html.c:3419 html.c:4795
705+#: html.c:3795 html.c:5239
706 msgid "Unmute"
707 msgstr "Niet meer dempen"
708 
709-#: html.c:3420
710+#: html.c:3796
711 msgid "Stop blocking activities from this user"
712 msgstr "Stop met het blokkeren van activiteiten van deze gebruiker"
713 
714-#: html.c:3424
715+#: html.c:3800
716 msgid "Block any activity from this user"
717 msgstr "Blokkeer alle activiteit van deze gebruiker"
718 
719-#: html.c:3432
720+#: html.c:3808
721 msgid "Direct Message..."
722 msgstr "Persoonlijk bericht..."
723 
724-#: html.c:3467
725+#: html.c:3843
726 msgid "Pending follow confirmations"
727 msgstr "Openstaande volgbevestigingen"
728 
729-#: html.c:3471
730+#: html.c:3847
731 msgid "People you follow"
732 msgstr "Mensen die je volgt"
733 
734-#: html.c:3472
735+#: html.c:3848
736 msgid "People that follow you"
737 msgstr "Mensen die jou volgen"
738 
739-#: html.c:3511
740+#: html.c:3887
741 msgid "Clear all"
742 msgstr "Alle wissen"
743 
744-#: html.c:3571
745+#: html.c:3951
746 msgid "Mention"
747 msgstr "Benoemen"
748 
749-#: html.c:3574
750+#: html.c:3954
751 msgid "Finished poll"
752 msgstr "Afgeronde peiling"
753 
754-#: html.c:3590
755+#: html.c:3979
756 msgid "Follow Request"
757 msgstr "Volgverzoek"
758 
759-#: html.c:3674
760+#: html.c:4089
761 msgid "Context"
762 msgstr "Context"
763 
764-#: html.c:3692
765+#: html.c:4107
766 msgid "New"
767 msgstr "Nieuw"
768 
769-#: html.c:3707
770+#: html.c:4122
771 msgid "Already seen"
772 msgstr "Al gezien"
773 
774-#: html.c:3722
775+#: html.c:4137
776 msgid "None"
777 msgstr "Geen"
778 
779-#: html.c:3994
780+#: html.c:4414
781 #, c-format
782 msgid "Search results for account %s"
783 msgstr "Zoekresultaten voor account %s"
784 
785-#: html.c:4001
786+#: html.c:4421
787 #, c-format
788 msgid "Account %s not found"
789 msgstr "Account %s niet gevonden"
790 
791-#: html.c:4032
792+#: html.c:4452
793 #, c-format
794 msgid "Search results for tag %s"
795 msgstr "Zoekresultaten voor tag %s"
796 
797-#: html.c:4032
798+#: html.c:4452
799 #, c-format
800 msgid "Nothing found for tag %s"
801 msgstr "Niets gevonden voor tag %s"
802 
803-#: html.c:4048
804+#: html.c:4468
805 #, c-format
806 msgid "Search results for '%s' (may be more)"
807 msgstr "Zoekresultaten voor '%s' (mogelijk meer)"
808 
809-#: html.c:4051
810+#: html.c:4471
811 #, c-format
812 msgid "Search results for '%s'"
813 msgstr "Zoekresultaten voor '%s'"
814 
815-#: html.c:4054
816+#: html.c:4474
817 #, c-format
818 msgid "No more matches for '%s'"
819 msgstr "Geen verdere overeenkomsten voor '%s'"
820 
821-#: html.c:4056
822+#: html.c:4476
823 #, c-format
824 msgid "Nothing found for '%s'"
825 msgstr "Niets gevonden voor '%s'"
826 
827-#: html.c:4154
828+#: html.c:4574
829 msgid "Showing instance timeline"
830 msgstr "Toond tijdlijn van instantie"
831 
832-#: html.c:4237
833+#: html.c:4657
834 #, c-format
835 msgid "Showing timeline for list '%s'"
836 msgstr "Toond tijdlijn voor lijst '%s'"
837 
838-#: httpd.c:258
839+#: httpd.c:259
840 #, c-format
841 msgid "Search results for tag #%s"
842 msgstr "Zoekresultaten voor tag #%s"
843 
844-#: httpd.c:267
845+#: httpd.c:268
846 msgid "Recent posts by users in this instance"
847 msgstr "Recente berichten van gebruikers in deze instantie"
848 
849-#: html.c:1764
850+#: html.c:1842
851 msgid "Blocked hashtags..."
852 msgstr "Geblokkeerde hashtags..."
853 
854-#: html.c:518
855+#: html.c:574
856 msgid "Optional URL to reply to"
857 msgstr "Optionele URL om op te antwoorden"
858 
859-#: html.c:695
860+#: html.c:751
861 msgid ""
862 "Option 1...\n"
863 "Option 2...\n"
864@@ -707,94 +707,106 @@ msgstr ""
865 "Optie 3...\n"
866 "..."
867 
868-#: html.c:1558
869+#: html.c:1636
870 msgid "Bot API key"
871 msgstr "Bot API sleutel"
872 
873-#: html.c:1564
874+#: html.c:1642
875 msgid "Chat id"
876 msgstr "Chat id"
877 
878-#: html.c:1572
879+#: html.c:1650
880 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
881 msgstr "ntfy server - volledige URL (voorbeeld: https://ntfy.sh/YourTopic)"
882 
883-#: html.c:1578
884+#: html.c:1656
885 msgid "ntfy token - if needed"
886 msgstr "ntfy token - indien nodig"
887 
888-#: html.c:3078
889+#: html.c:3366
890 msgid "pinned"
891 msgstr "vastgezet"
892 
893-#: html.c:3090
894+#: html.c:3378
895 msgid "bookmarks"
896 msgstr "favorieten"
897 
898-#: html.c:3102
899+#: html.c:3390
900 msgid "drafts"
901 msgstr "concepten"
902 
903-#: html.c:584
904+#: html.c:640
905 msgid "Scheduled post..."
906 msgstr "Gepland bericht..."
907 
908 msgid "Post date and time:"
909 msgstr "Bericht datum en tijd:"
910 
911-#: html.c:3113 html.c:4214
912+#: html.c:3401 html.c:4634
913 msgid "Scheduled posts"
914 msgstr "Geplande berichten"
915 
916-#: html.c:3114
917+#: html.c:3402
918 msgid "scheduled posts"
919 msgstr "geplande berichten"
920 
921-#: html.c:578
922+#: html.c:634
923 #, c-format
924 msgid "Post date and time (timezone: %s):"
925 msgstr "Bericht datum en tijd (tijdzone: %s):"
926 
927-#: html.c:1689
928+#: html.c:1767
929 msgid "Time zone:"
930 msgstr "Tijdzone:"
931 
932-#: html.c:559
933+#: html.c:615
934 msgid "Language:"
935 msgstr ""
936 
937-#: html.c:1580
938+#: html.c:1658
939 msgid "Notify webhook:"
940 msgstr ""
941 
942-#: html.c:1586
943+#: html.c:1664
944 msgid "http://example.com/webhook"
945 msgstr ""
946 
947-#: html.c:1694
948+#: html.c:1772
949 msgid "Languages you usually post in:"
950 msgstr ""
951 
952-#: html.c:1700
953+#: html.c:1778
954 msgid "en fr es de_AT"
955 msgstr ""
956 
957-#: html.c:460
958+#: html.c:428
959 msgid "Visibility: "
960 msgstr ""
961 
962-#: html.c:468
963 msgid "Public"
964 msgstr ""
965 
966-#: html.c:477
967 msgid "Unlisted"
968 msgstr ""
969 
970-#: html.c:486
971 msgid "Followers-only"
972 msgstr ""
973 
974-#: html.c:495
975 msgid "Direct Message"
976 msgstr ""
977+
978+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
979+msgid "EmojiUnreact"
980+msgstr ""
981+
982+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
983+msgid "EmojiReact"
984+msgstr ""
985+
986+#: html.c:2115
987+msgid "Emoji react..."
988+msgstr ""
989+
990+#: html.c:2609
991+msgid "Emoji reactions: "
992+msgstr ""
+204, -192
   1@@ -4,127 +4,127 @@
   2 msgid ""
   3 msgstr ""
   4 "Project-Id-Version: snac\n"
   5-"PO-Revision-Date: 2025-10-11 16:48-0300\n"
   6+"PO-Revision-Date: 2025-12-22 07:55-0300\n"
   7 "Last-Translator: Daltux <@daltux@snac.daltux.net>\n"
   8 "Language: pt_BR\n"
   9 "MIME-Version: 1.0\n"
  10 "Content-Type: text/plain; charset=UTF-8\n"
  11 "Content-Transfer-Encoding: 8bit\n"
  12-"X-Generator: Poedit 3.7\n"
  13+"X-Generator: Geany / PoHelper 2.0\n"
  14 
  15-#: html.c:440
  16+#: html.c:534
  17 msgid "Sensitive content: "
  18 msgstr "Conteúdo sensível: "
  19 
  20-#: html.c:448
  21+#: html.c:542
  22 msgid "Sensitive content description"
  23 msgstr "Descrição do conteúdo sensível"
  24 
  25 msgid "Only for mentioned people: "
  26 msgstr "Apenas para pessoas mencionadas: "
  27 
  28-#: html.c:514
  29+#: html.c:570
  30 msgid "Reply to (URL): "
  31 msgstr "Resposta para (URL): "
  32 
  33-#: html.c:523
  34+#: html.c:579
  35 msgid "Don't send, but store as a draft"
  36 msgstr "Não enviar, mas guardar como rascunho"
  37 
  38-#: html.c:524
  39+#: html.c:580
  40 msgid "Draft:"
  41 msgstr "Rascunho:"
  42 
  43-#: html.c:614
  44+#: html.c:670
  45 msgid "Attachments..."
  46 msgstr "Anexos..."
  47 
  48-#: html.c:637
  49+#: html.c:693
  50 msgid "File:"
  51 msgstr "Arquivo:"
  52 
  53-#: html.c:641
  54+#: html.c:697
  55 msgid "Clear this field to delete the attachment"
  56 msgstr "Limpe este campo para remover o anexo"
  57 
  58-#: html.c:650 html.c:675
  59+#: html.c:706 html.c:731
  60 msgid "Attachment description"
  61 msgstr "Descrição do anexo"
  62 
  63-#: html.c:686
  64+#: html.c:742
  65 msgid "Poll..."
  66 msgstr "Enquete..."
  67 
  68-#: html.c:688
  69+#: html.c:744
  70 msgid "Poll options (one per line, up to 8):"
  71 msgstr "Alternativas da enquete (uma por linha, até 8):"
  72 
  73-#: html.c:700
  74+#: html.c:756
  75 msgid "One choice"
  76 msgstr "Escolha única"
  77 
  78-#: html.c:703
  79+#: html.c:759
  80 msgid "Multiple choices"
  81 msgstr "Escolhas múltiplas"
  82 
  83-#: html.c:709
  84+#: html.c:765
  85 msgid "End in 5 minutes"
  86 msgstr "Encerrar em 5 minutos"
  87 
  88-#: html.c:713
  89+#: html.c:769
  90 msgid "End in 1 hour"
  91 msgstr "Encerrar em 1 hora"
  92 
  93-#: html.c:716
  94+#: html.c:772
  95 msgid "End in 1 day"
  96 msgstr "Encerrar em 1 dia"
  97 
  98-#: html.c:724
  99+#: html.c:780
 100 msgid "Post"
 101 msgstr "Publicar"
 102 
 103-#: html.c:826 html.c:833
 104+#: html.c:882 html.c:889
 105 msgid "Site description"
 106 msgstr "Descrição do sítio eletrônico"
 107 
 108-#: html.c:844
 109+#: html.c:900
 110 msgid "Admin email"
 111 msgstr "E-mail da administração"
 112 
 113-#: html.c:857
 114+#: html.c:913
 115 msgid "Admin account"
 116 msgstr "Conta de quem administra"
 117 
 118-#: html.c:922 html.c:1278
 119+#: html.c:978 html.c:1334
 120 #, c-format
 121 msgid "%d following, %d followers"
 122 msgstr "%d seguidos, %d seguidores"
 123 
 124-#: html.c:1019
 125+#: html.c:1075
 126 msgid "RSS"
 127 msgstr "RSS"
 128 
 129-#: html.c:1024 html.c:1063
 130+#: html.c:1080 html.c:1119
 131 msgid "private"
 132 msgstr "privado"
 133 
 134-#: html.c:1059
 135+#: html.c:1115
 136 msgid "public"
 137 msgstr "público"
 138 
 139-#: html.c:1067
 140+#: html.c:1123
 141 msgid "notifications"
 142 msgstr "notificações"
 143 
 144-#: html.c:1072
 145+#: html.c:1128
 146 msgid "people"
 147 msgstr "pessoas"
 148 
 149-#: html.c:1077
 150+#: html.c:1133
 151 msgid "instance"
 152 msgstr "instância"
 153 
 154-#: html.c:1086
 155+#: html.c:1142
 156 msgid ""
 157 "Search posts by URL or content (regular expression), @user@host accounts, or "
 158 "#tag"
 159@@ -132,574 +132,574 @@ msgstr ""
 160 "Procurar publicações por URL ou conteúdo (expressão regular), contas "
 161 "(@perfil@servidor) ou #tag"
 162 
 163-#: html.c:1087
 164+#: html.c:1143
 165 msgid "Content search"
 166 msgstr "Buscar conteúdo"
 167 
 168-#: html.c:1213
 169+#: html.c:1269
 170 msgid "verified link"
 171 msgstr "ligação verificada"
 172 
 173-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
 174+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
 175 msgid "Location: "
 176 msgstr "Localização: "
 177 
 178-#: html.c:1302
 179+#: html.c:1358
 180 msgid "New Post..."
 181 msgstr "Nova publicação..."
 182 
 183-#: html.c:1304
 184+#: html.c:1360
 185 msgid "What's on your mind?"
 186 msgstr "O que tem em mente?"
 187 
 188-#: html.c:1313
 189+#: html.c:1369
 190 msgid "Operations..."
 191 msgstr "Operações..."
 192 
 193-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
 194+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
 195 msgid "Follow"
 196 msgstr "Seguir"
 197 
 198-#: html.c:1330
 199+#: html.c:1386
 200 msgid "(by URL or user@host)"
 201 msgstr "(por URL ou conta@servidor)"
 202 
 203-#: html.c:1345 html.c:1925 html.c:4766
 204+#: html.c:1401 html.c:2003 html.c:5210
 205 msgid "Boost"
 206 msgstr "Impulsionar"
 207 
 208-#: html.c:1347 html.c:1364
 209+#: html.c:1403 html.c:1420 html.c:1442
 210 msgid "(by URL)"
 211 msgstr "(por URL)"
 212 
 213-#: html.c:1362 html.c:1904 html.c:4757
 214+#: html.c:1418 html.c:1982 html.c:5201
 215 msgid "Like"
 216 msgstr "Curtir"
 217 
 218-#: html.c:1490
 219+#: html.c:1568
 220 msgid "User Settings..."
 221 msgstr "Definições da conta..."
 222 
 223-#: html.c:1499
 224+#: html.c:1577
 225 msgid "Display name:"
 226 msgstr "Nome a ser exibido:"
 227 
 228-#: html.c:1505
 229+#: html.c:1583
 230 msgid "Your name"
 231 msgstr "Seu nome"
 232 
 233-#: html.c:1507
 234+#: html.c:1585
 235 msgid "Avatar: "
 236 msgstr "Avatar: "
 237 
 238-#: html.c:1515
 239+#: html.c:1593
 240 msgid "Delete current avatar"
 241 msgstr "Remover avatar atual"
 242 
 243-#: html.c:1517
 244+#: html.c:1595
 245 msgid "Header image (banner): "
 246 msgstr "Imagem de cabeçalho (capa): "
 247 
 248-#: html.c:1525
 249+#: html.c:1603
 250 msgid "Delete current header image"
 251 msgstr "Remover imagem de cabeçalho atual"
 252 
 253-#: html.c:1527
 254+#: html.c:1605
 255 msgid "Bio:"
 256 msgstr "Biografia:"
 257 
 258-#: html.c:1533
 259+#: html.c:1611
 260 msgid "Write about yourself here..."
 261 msgstr "Escreva aqui sobre você..."
 262 
 263-#: html.c:1542
 264+#: html.c:1620
 265 msgid "Always show sensitive content"
 266 msgstr "Sempre exibir conteúdo sensível"
 267 
 268-#: html.c:1544
 269+#: html.c:1622
 270 msgid "Email address for notifications:"
 271 msgstr "Endereço de e-mail para notificações:"
 272 
 273-#: html.c:1552
 274+#: html.c:1630
 275 msgid "Telegram notifications (bot key and chat id):"
 276 msgstr "Notificações Telegram (chave do robô e ID da conversa):"
 277 
 278-#: html.c:1566
 279+#: html.c:1644
 280 msgid "ntfy notifications (ntfy server and token):"
 281 msgstr "ntfy - notificações (servidor ntfy e token):"
 282 
 283-#: html.c:1588
 284+#: html.c:1666
 285 msgid "Maximum days to keep posts (0: server settings):"
 286 msgstr "Máximo de dias a preservar publicações (0: definições do servidor):"
 287 
 288-#: html.c:1602
 289+#: html.c:1680
 290 msgid "Drop direct messages from people you don't follow"
 291 msgstr "Descartar mensagens diretas de quem você não segue"
 292 
 293-#: html.c:1611
 294+#: html.c:1689
 295 msgid "This account is a bot"
 296 msgstr "Esta conta é robotizada"
 297 
 298-#: html.c:1620
 299+#: html.c:1698
 300 msgid "Auto-boost all mentions to this account"
 301 msgstr "Impulsionar automaticamente todas as menções a esta conta"
 302 
 303-#: html.c:1629
 304+#: html.c:1707
 305 msgid "This account is private (posts are not shown through the web)"
 306 msgstr "Esta conta é privada (as publicações não são exibidas na Web)"
 307 
 308-#: html.c:1639
 309+#: html.c:1717
 310 msgid "Collapse top threads by default"
 311 msgstr "Recolher por padrão as sequências de publicações"
 312 
 313-#: html.c:1648
 314+#: html.c:1726
 315 msgid "Follow requests must be approved"
 316 msgstr "Solicitações de seguimento precisam ser aprovadas"
 317 
 318-#: html.c:1657
 319+#: html.c:1735
 320 msgid "Publish follower and following metrics"
 321 msgstr "Publicar métricas de seguidores e seguidos"
 322 
 323-#: html.c:1659
 324+#: html.c:1737
 325 msgid "Current location:"
 326 msgstr "Localização atual:"
 327 
 328-#: html.c:1673
 329+#: html.c:1751
 330 msgid "Profile metadata (key=value pairs in each line):"
 331 msgstr "Metadados do perfil (par de chave=valor em cada linha):"
 332 
 333-#: html.c:1684
 334+#: html.c:1762
 335 msgid "Web interface language:"
 336 msgstr "Idioma da interface Web:"
 337 
 338-#: html.c:1703
 339+#: html.c:1781
 340 msgid "New password:"
 341 msgstr "Nova senha:"
 342 
 343-#: html.c:1710
 344+#: html.c:1788
 345 msgid "Repeat new password:"
 346 msgstr "Repita a nova senha:"
 347 
 348-#: html.c:1720
 349+#: html.c:1798
 350 msgid "Update user info"
 351 msgstr "Atualizar informações da conta"
 352 
 353-#: html.c:1731
 354+#: html.c:1809
 355 msgid "Followed hashtags..."
 356 msgstr "Hashtags seguidas..."
 357 
 358-#: html.c:1733 html.c:1766
 359+#: html.c:1811 html.c:1844
 360 msgid "One hashtag per line"
 361 msgstr "Uma hashtag por linha"
 362 
 363-#: html.c:1755 html.c:1787
 364+#: html.c:1833 html.c:1865
 365 msgid "Update hashtags"
 366 msgstr "Atualizar hashtags"
 367 
 368-#: html.c:1904
 369+#: html.c:1982
 370 msgid "Say you like this post"
 371 msgstr "Declarar que gosta desta publicação"
 372 
 373-#: html.c:1909 html.c:4775
 374+#: html.c:1987 html.c:5219
 375 msgid "Unlike"
 376 msgstr "Descurtir"
 377 
 378-#: html.c:1909
 379+#: html.c:1987
 380 msgid "Nah don't like it that much"
 381 msgstr "Não gosto tanto assim disso"
 382 
 383-#: html.c:1915 html.c:4912
 384+#: html.c:1993 html.c:5356
 385 msgid "Unpin"
 386 msgstr "Desafixar"
 387 
 388-#: html.c:1915
 389+#: html.c:1993
 390 msgid "Unpin this post from your timeline"
 391 msgstr "Desafixar esta publicação da sua linha do tempo"
 392 
 393-#: html.c:1918 html.c:4907
 394+#: html.c:1996 html.c:5351
 395 msgid "Pin"
 396 msgstr "Afixar"
 397 
 398-#: html.c:1918
 399+#: html.c:1996
 400 msgid "Pin this post to the top of your timeline"
 401 msgstr "Afixar esta publicação no topo de sua linha do tempo"
 402 
 403-#: html.c:1925
 404+#: html.c:2003
 405 msgid "Announce this post to your followers"
 406 msgstr "Anunciar esta publicação para seus seguidores"
 407 
 408-#: html.c:1930 html.c:4783
 409+#: html.c:2008 html.c:5227
 410 msgid "Unboost"
 411 msgstr "Desimpulsionar"
 412 
 413-#: html.c:1930
 414+#: html.c:2008
 415 msgid "I regret I boosted this"
 416 msgstr "Arrependo-me de ter impulsionado isso"
 417 
 418-#: html.c:1936 html.c:4922
 419+#: html.c:2014 html.c:5366
 420 msgid "Unbookmark"
 421 msgstr "Desmarcar"
 422 
 423-#: html.c:1936
 424+#: html.c:2014
 425 msgid "Delete this post from your bookmarks"
 426 msgstr "Remover esta publicação dos seus marcadores"
 427 
 428-#: html.c:1939 html.c:4917
 429+#: html.c:2017 html.c:5361
 430 msgid "Bookmark"
 431 msgstr "Marcar"
 432 
 433-#: html.c:1939
 434+#: html.c:2017
 435 msgid "Add this post to your bookmarks"
 436 msgstr "Adicionar esta publicação aos seus marcadores"
 437 
 438-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
 439+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
 440 msgid "Unfollow"
 441 msgstr "Deixar de seguir"
 442 
 443-#: html.c:1945 html.c:3387
 444+#: html.c:2023 html.c:3763 html.c:4042
 445 msgid "Stop following this user's activity"
 446 msgstr "Parar de acompanhar a atividade deste perfil"
 447 
 448-#: html.c:1949 html.c:3401
 449+#: html.c:2027 html.c:3777 html.c:4044
 450 msgid "Start following this user's activity"
 451 msgstr "Começar a acompanhar a atividade deste perfil"
 452 
 453-#: html.c:1955 html.c:4860
 454+#: html.c:2033 html.c:5304
 455 msgid "Unfollow Group"
 456 msgstr "Deixar de seguir grupo"
 457 
 458-#: html.c:1956
 459+#: html.c:2034
 460 msgid "Stop following this group or channel"
 461 msgstr "Parar de acompanhar este grupo ou canal"
 462 
 463-#: html.c:1960 html.c:4847
 464+#: html.c:2038 html.c:5291
 465 msgid "Follow Group"
 466 msgstr "Seguir grupo"
 467 
 468-#: html.c:1961
 469+#: html.c:2039
 470 msgid "Start following this group or channel"
 471 msgstr "Começar a acompanhar este grupo ou canal"
 472 
 473-#: html.c:1966 html.c:3423 html.c:4791
 474+#: html.c:2044 html.c:3799 html.c:5235
 475 msgid "MUTE"
 476 msgstr "MUDO"
 477 
 478-#: html.c:1967
 479+#: html.c:2045
 480 msgid "Block any activity from this user forever"
 481 msgstr "Bloquear toda atividade deste perfil para sempre"
 482 
 483-#: html.c:1972 html.c:3405 html.c:4877
 484+#: html.c:2050 html.c:3781 html.c:5321
 485 msgid "Delete"
 486 msgstr "Eliminar"
 487 
 488-#: html.c:1972
 489+#: html.c:2050
 490 msgid "Delete this post"
 491 msgstr "Apagar esta publicação"
 492 
 493-#: html.c:1975 html.c:4799
 494+#: html.c:2053 html.c:5243
 495 msgid "Hide"
 496 msgstr "Ocultar"
 497 
 498-#: html.c:1975
 499+#: html.c:2053
 500 msgid "Hide this post and its children"
 501 msgstr "Ocultar esta publicação e suas respostas"
 502 
 503-#: html.c:2017
 504+#: html.c:2095
 505 msgid "Edit..."
 506 msgstr "Editar..."
 507 
 508-#: html.c:2039
 509+#: html.c:2133
 510 msgid "Reply..."
 511 msgstr "Responder..."
 512 
 513-#: html.c:2090
 514+#: html.c:2184
 515 msgid "Truncated (too deep)"
 516 msgstr "Truncada (muito extensa)"
 517 
 518-#: html.c:2108
 519+#: html.c:2202
 520 msgid "follows you"
 521 msgstr "segue você"
 522 
 523-#: html.c:2182
 524+#: html.c:2276
 525 msgid "Pinned"
 526 msgstr "Afixada"
 527 
 528-#: html.c:2190
 529+#: html.c:2284
 530 msgid "Bookmarked"
 531 msgstr "Marcada"
 532 
 533-#: html.c:2198
 534+#: html.c:2292
 535 msgid "Poll"
 536 msgstr "Enquete"
 537 
 538-#: html.c:2205
 539+#: html.c:2299
 540 msgid "Voted"
 541 msgstr "Votou"
 542 
 543-#: html.c:2214
 544+#: html.c:2308
 545 msgid "Event"
 546 msgstr "Evento"
 547 
 548-#: html.c:2246 html.c:2275
 549+#: html.c:2340 html.c:2369
 550 msgid "boosted"
 551 msgstr "impulsionou"
 552 
 553-#: html.c:2289
 554+#: html.c:2383
 555 msgid "in reply to"
 556 msgstr "em resposta a"
 557 
 558-#: html.c:2345
 559+#: html.c:2439
 560 msgid " [SENSITIVE CONTENT]"
 561 msgstr " [CONTEÚDO SENSÍVEL]"
 562 
 563-#: html.c:2512
 564+#: html.c:2796
 565 msgid "Vote"
 566 msgstr "Votar"
 567 
 568-#: html.c:2522
 569+#: html.c:2806
 570 msgid "Closed"
 571 msgstr "Encerrada"
 572 
 573-#: html.c:2547
 574+#: html.c:2831
 575 msgid "Closes in"
 576 msgstr "Encerra em"
 577 
 578-#: html.c:2627
 579+#: html.c:2911
 580 msgid "Video"
 581 msgstr "Vídeo"
 582 
 583-#: html.c:2642
 584+#: html.c:2926
 585 msgid "Audio"
 586 msgstr "Áudio"
 587 
 588-#: html.c:2670
 589+#: html.c:2954
 590 msgid "Attachment"
 591 msgstr "Anexo"
 592 
 593-#: html.c:2684
 594+#: html.c:2968
 595 msgid "Alt..."
 596 msgstr "Texto alternativo..."
 597 
 598-#: html.c:2697
 599+#: html.c:2981
 600 msgid "Source channel or community"
 601 msgstr "Canal ou comunidade de origem"
 602 
 603-#: html.c:2791
 604+#: html.c:3075
 605 msgid "Time: "
 606 msgstr "Horário: "
 607 
 608-#: html.c:2872
 609+#: html.c:3156
 610 msgid "Older..."
 611 msgstr "Anteriores..."
 612 
 613-#: html.c:2974
 614+#: html.c:3258
 615 msgid "about this site"
 616 msgstr "sobre este sítio eletrônico"
 617 
 618-#: html.c:2976
 619+#: html.c:3260
 620 msgid "powered by "
 621 msgstr "movido por "
 622 
 623-#: html.c:3041
 624+#: html.c:3329
 625 msgid "Dismiss"
 626 msgstr "Dispensar"
 627 
 628-#: html.c:3058
 629+#: html.c:3346
 630 #, c-format
 631 msgid "Timeline for list '%s'"
 632 msgstr "Linha do tempo da lista '%s'"
 633 
 634-#: html.c:3077 html.c:4169
 635+#: html.c:3365 html.c:4589
 636 msgid "Pinned posts"
 637 msgstr "Publicações afixadas"
 638 
 639-#: html.c:3089 html.c:4184
 640+#: html.c:3377 html.c:4604
 641 msgid "Bookmarked posts"
 642 msgstr "Publicações marcadas"
 643 
 644-#: html.c:3101 html.c:4199
 645+#: html.c:3389 html.c:4619
 646 msgid "Post drafts"
 647 msgstr "Publicações em rascunho"
 648 
 649-#: html.c:3177
 650+#: html.c:3465
 651 msgid "No more unseen posts"
 652 msgstr "Sem mais publicações não vistas"
 653 
 654-#: html.c:3181 html.c:3290
 655+#: html.c:3469 html.c:3578
 656 msgid "Back to top"
 657 msgstr "Voltar ao topo"
 658 
 659-#: html.c:3243
 660+#: html.c:3531
 661 msgid "History"
 662 msgstr "Histórico"
 663 
 664-#: html.c:3295 html.c:3734
 665+#: html.c:3583 html.c:4149
 666 msgid "More..."
 667 msgstr "Mais..."
 668 
 669-#: html.c:3391 html.c:4813
 670+#: html.c:3767 html.c:5257
 671 msgid "Unlimit"
 672 msgstr "Retirar restrição"
 673 
 674-#: html.c:3392
 675+#: html.c:3768
 676 msgid "Allow announces (boosts) from this user"
 677 msgstr "Permitir anúncios (impulsionamentos) deste perfil"
 678 
 679-#: html.c:3395 html.c:4809
 680+#: html.c:3771 html.c:5253
 681 msgid "Limit"
 682 msgstr "Restringir"
 683 
 684-#: html.c:3396
 685+#: html.c:3772
 686 msgid "Block announces (boosts) from this user"
 687 msgstr "Bloquear anúncios (impulsionamentos) deste perfil"
 688 
 689-#: html.c:3405
 690+#: html.c:3781
 691 msgid "Delete this user"
 692 msgstr "Apagar este perfil"
 693 
 694-#: html.c:3410 html.c:4927
 695+#: html.c:3786 html.c:5371
 696 msgid "Approve"
 697 msgstr "Aprovar"
 698 
 699-#: html.c:3411
 700+#: html.c:3787
 701 msgid "Approve this follow request"
 702 msgstr "Aprovar esta solicitação de seguimento"
 703 
 704-#: html.c:3414 html.c:4951
 705+#: html.c:3790 html.c:5395
 706 msgid "Discard"
 707 msgstr "Descartar"
 708 
 709-#: html.c:3414
 710+#: html.c:3790
 711 msgid "Discard this follow request"
 712 msgstr "Descartar esta solicitação de seguimento"
 713 
 714-#: html.c:3419 html.c:4795
 715+#: html.c:3795 html.c:5239
 716 msgid "Unmute"
 717 msgstr "Desbloquear"
 718 
 719-#: html.c:3420
 720+#: html.c:3796
 721 msgid "Stop blocking activities from this user"
 722 msgstr "Parar de bloquear as atividades deste perfil"
 723 
 724-#: html.c:3424
 725+#: html.c:3800
 726 msgid "Block any activity from this user"
 727 msgstr "Bloquear toda atividade deste perfil"
 728 
 729-#: html.c:3432
 730+#: html.c:3808
 731 msgid "Direct Message..."
 732 msgstr "Mensagem direta..."
 733 
 734-#: html.c:3467
 735+#: html.c:3843
 736 msgid "Pending follow confirmations"
 737 msgstr "Confirmações de seguimento pendentes"
 738 
 739-#: html.c:3471
 740+#: html.c:3847
 741 msgid "People you follow"
 742 msgstr "Pessoas que você segue"
 743 
 744-#: html.c:3472
 745+#: html.c:3848
 746 msgid "People that follow you"
 747 msgstr "Pessoas que seguem você"
 748 
 749-#: html.c:3511
 750+#: html.c:3887
 751 msgid "Clear all"
 752 msgstr "Limpar tudo"
 753 
 754-#: html.c:3571
 755+#: html.c:3951
 756 msgid "Mention"
 757 msgstr "Menção"
 758 
 759-#: html.c:3574
 760+#: html.c:3954
 761 msgid "Finished poll"
 762 msgstr "Enquete encerrada"
 763 
 764-#: html.c:3590
 765+#: html.c:3979
 766 msgid "Follow Request"
 767 msgstr "Solicitação de seguimento"
 768 
 769-#: html.c:3674
 770+#: html.c:4089
 771 msgid "Context"
 772 msgstr "Contexto"
 773 
 774-#: html.c:3692
 775+#: html.c:4107
 776 msgid "New"
 777 msgstr "Novas"
 778 
 779-#: html.c:3707
 780+#: html.c:4122
 781 msgid "Already seen"
 782 msgstr "Já vistas"
 783 
 784-#: html.c:3722
 785+#: html.c:4137
 786 msgid "None"
 787 msgstr "Nenhuma"
 788 
 789-#: html.c:3994
 790+#: html.c:4414
 791 #, c-format
 792 msgid "Search results for account %s"
 793 msgstr "Resultados da busca pela conta %s"
 794 
 795-#: html.c:4001
 796+#: html.c:4421
 797 #, c-format
 798 msgid "Account %s not found"
 799 msgstr "Conta %s não encontrada"
 800 
 801-#: html.c:4032
 802+#: html.c:4452
 803 #, c-format
 804 msgid "Search results for tag %s"
 805 msgstr "Resultados da busca pela hashtag %s"
 806 
 807-#: html.c:4032
 808+#: html.c:4452
 809 #, c-format
 810 msgid "Nothing found for tag %s"
 811 msgstr "Nada consta com hashtag %s"
 812 
 813-#: html.c:4048
 814+#: html.c:4468
 815 #, c-format
 816 msgid "Search results for '%s' (may be more)"
 817 msgstr "Resultados da busca por '%s' (pode haver mais)"
 818 
 819-#: html.c:4051
 820+#: html.c:4471
 821 #, c-format
 822 msgid "Search results for '%s'"
 823 msgstr "Resultados da busca por '%s'"
 824 
 825-#: html.c:4054
 826+#: html.c:4474
 827 #, c-format
 828 msgid "No more matches for '%s'"
 829 msgstr "Sem mais combinações para '%s'"
 830 
 831-#: html.c:4056
 832+#: html.c:4476
 833 #, c-format
 834 msgid "Nothing found for '%s'"
 835 msgstr "Nada consta com '%s'"
 836 
 837-#: html.c:4154
 838+#: html.c:4574
 839 msgid "Showing instance timeline"
 840 msgstr "Exibindo linha do tempo da instância"
 841 
 842-#: html.c:4237
 843+#: html.c:4657
 844 #, c-format
 845 msgid "Showing timeline for list '%s'"
 846 msgstr "Exibindo linha do tempo da lista '%s'"
 847 
 848-#: httpd.c:258
 849+#: httpd.c:259
 850 #, c-format
 851 msgid "Search results for tag #%s"
 852 msgstr "Resultados da busca pela hashtag #%s"
 853 
 854-#: httpd.c:267
 855+#: httpd.c:268
 856 msgid "Recent posts by users in this instance"
 857 msgstr "Publicações recentes de perfis desta instância"
 858 
 859-#: html.c:1764
 860+#: html.c:1842
 861 msgid "Blocked hashtags..."
 862 msgstr "Hashtags bloqueadas..."
 863 
 864-#: html.c:518
 865+#: html.c:574
 866 msgid "Optional URL to reply to"
 867 msgstr "URL opcional para a qual responder"
 868 
 869-#: html.c:695
 870+#: html.c:751
 871 msgid ""
 872 "Option 1...\n"
 873 "Option 2...\n"
 874@@ -711,94 +711,106 @@ msgstr ""
 875 "Opção 3...\n"
 876 "..."
 877 
 878-#: html.c:1558
 879+#: html.c:1636
 880 msgid "Bot API key"
 881 msgstr "Chave de API do robô"
 882 
 883-#: html.c:1564
 884+#: html.c:1642
 885 msgid "Chat id"
 886 msgstr "ID da conversa"
 887 
 888-#: html.c:1572
 889+#: html.c:1650
 890 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
 891 msgstr "ntfy - servidor - URL completa (exemplo: https://ntfy.sh/SeuTópico)"
 892 
 893-#: html.c:1578
 894+#: html.c:1656
 895 msgid "ntfy token - if needed"
 896 msgstr "ntfy - token (se necessário)"
 897 
 898-#: html.c:3078
 899+#: html.c:3366
 900 msgid "pinned"
 901 msgstr "afixadas"
 902 
 903-#: html.c:3090
 904+#: html.c:3378
 905 msgid "bookmarks"
 906 msgstr "marcadores"
 907 
 908-#: html.c:3102
 909+#: html.c:3390
 910 msgid "drafts"
 911 msgstr "rascunhos"
 912 
 913-#: html.c:584
 914+#: html.c:640
 915 msgid "Scheduled post..."
 916 msgstr "Publicação agendada..."
 917 
 918 msgid "Post date and time:"
 919 msgstr "Data e horário da publicação:"
 920 
 921-#: html.c:3113 html.c:4214
 922+#: html.c:3401 html.c:4634
 923 msgid "Scheduled posts"
 924 msgstr "Publicações agendadas"
 925 
 926-#: html.c:3114
 927+#: html.c:3402
 928 msgid "scheduled posts"
 929 msgstr "publicações agendadas"
 930 
 931-#: html.c:578
 932+#: html.c:634
 933 #, c-format
 934 msgid "Post date and time (timezone: %s):"
 935 msgstr "Data e hora da publicação (fuso horário: %s):"
 936 
 937-#: html.c:1689
 938+#: html.c:1767
 939 msgid "Time zone:"
 940 msgstr "Fuso horário:"
 941 
 942-#: html.c:559
 943+#: html.c:615
 944 msgid "Language:"
 945 msgstr "Idioma:"
 946 
 947-#: html.c:1580
 948+#: html.c:1658
 949 msgid "Notify webhook:"
 950 msgstr "Webhook para notificar:"
 951 
 952-#: html.c:1586
 953+#: html.c:1664
 954 msgid "http://example.com/webhook"
 955 msgstr "http://exemplo.com.br/webhook"
 956 
 957-#: html.c:1694
 958+#: html.c:1772
 959 msgid "Languages you usually post in:"
 960 msgstr "Idiomas em que costuma postar:"
 961 
 962-#: html.c:1700
 963+#: html.c:1778
 964 msgid "en fr es de_AT"
 965 msgstr "pt en fr es de_AT"
 966 
 967-#: html.c:460
 968+#: html.c:428
 969 msgid "Visibility: "
 970 msgstr "Visibilidade: "
 971 
 972-#: html.c:468
 973 msgid "Public"
 974 msgstr "Pública"
 975 
 976-#: html.c:477
 977 msgid "Unlisted"
 978 msgstr "Não listada"
 979 
 980-#: html.c:486
 981 msgid "Followers-only"
 982 msgstr "Seguidores apenas"
 983 
 984-#: html.c:495
 985 msgid "Direct Message"
 986 msgstr "Mensagem direta"
 987+
 988+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
 989+msgid "Desfazer EmojiReação"
 990+msgstr ""
 991+
 992+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
 993+msgid "EmojiReact"
 994+msgstr "EmojiReação"
 995+
 996+#: html.c:2115
 997+msgid "Emoji react..."
 998+msgstr "EmojiReagir..."
 999+
1000+#: html.c:2609
1001+msgid "Emoji reactions: "
1002+msgstr "EmojiReações: "
+202, -190
  1@@ -15,119 +15,119 @@ msgstr ""
  2 "Content-Transfer-Encoding: 8bit\n"
  3 "X-Generator: Poedit 3.0\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Чувствительное содержимое: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Описание чувствительного содержимого"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Только для упомянутых людей: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Ответ на (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Не отправлять, сохранить черновик"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Черновик:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Вложения..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Файл:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Очистите это поле, чтоб удалить вложение"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Описание вложения"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Опрос..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Варианты ответа (один на строку, до 8 шт):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Один выбор"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Множественный выбор"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Заканчивается через 5 минут"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Заканчивается через 1 час"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Заканчивается через 1 день"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Отправить"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Описание сайта"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Почта админа"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Учётная запись админа"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d подписан, %d подписчиков"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "личное"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "публичное"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "уведомления"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "люди"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "сервер"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -135,574 +135,574 @@ msgstr ""
150 "Поиск сообщений по URL или содержимому (регулярное выражение), учетной "
151 "записи вида @user@host, или #тегу"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Поиск содержимого"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "проверенная ссылка"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Местоположение: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Новое сообщение..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Что у вас на уме?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Действия..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Подписаться"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(по URL или user@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Продвинуть"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(по URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Лайкнуть"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Пользовательские настройки..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Отображаемое имя:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Ваше имя"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Аватар: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Удалить текущий аватар"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Заглавное изображение (баннер): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Удалить текущее заглавное изображение"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "О себе:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Напишите что-нибудь про себя..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Всегда показывать чувствительное содержимое"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Почтовый адрес для уведомлений:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Уведомления в Telegram (ключ бота и id чата):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "уведомления в ntfy (сервер и токен ntfy):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Максимальное время хранения сообщений (0: настройки сервера):"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Отклонять личные сообщения от незнакомцев"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Это аккаунт бота"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Автоматически продвигать все упоминания этого аккаунта"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr "Это закрытый аккаунт (сообщения не показываются в сети)"
297 
298-#: html.c:1639
299+#: html.c:1717
300 msgid "Collapse top threads by default"
301 msgstr "Сворачивать обсуждения по умолчанию"
302 
303-#: html.c:1648
304+#: html.c:1726
305 msgid "Follow requests must be approved"
306 msgstr "Запросы подписки требуют подтверждения"
307 
308-#: html.c:1657
309+#: html.c:1735
310 msgid "Publish follower and following metrics"
311 msgstr "Публиковать статистику подписок и подписчиков"
312 
313-#: html.c:1659
314+#: html.c:1737
315 msgid "Current location:"
316 msgstr "Текущее метоположение:"
317 
318-#: html.c:1673
319+#: html.c:1751
320 msgid "Profile metadata (key=value pairs in each line):"
321 msgstr "Метаданные профиля (пары ключ=значение, по одной на строку)"
322 
323-#: html.c:1684
324+#: html.c:1762
325 msgid "Web interface language:"
326 msgstr "Язык интерфейса:"
327 
328-#: html.c:1703
329+#: html.c:1781
330 msgid "New password:"
331 msgstr "Новый пароль:"
332 
333-#: html.c:1710
334+#: html.c:1788
335 msgid "Repeat new password:"
336 msgstr "Повторите новый пароль:"
337 
338-#: html.c:1720
339+#: html.c:1798
340 msgid "Update user info"
341 msgstr "Обновить данные пользователя"
342 
343-#: html.c:1731
344+#: html.c:1809
345 msgid "Followed hashtags..."
346 msgstr "Отслеживаемые хештеги..."
347 
348-#: html.c:1733 html.c:1766
349+#: html.c:1811 html.c:1844
350 msgid "One hashtag per line"
351 msgstr "По одному на строку"
352 
353-#: html.c:1755 html.c:1787
354+#: html.c:1833 html.c:1865
355 msgid "Update hashtags"
356 msgstr "Обновить хештеги"
357 
358-#: html.c:1904
359+#: html.c:1982
360 msgid "Say you like this post"
361 msgstr "Отметить сообщение понравившимся"
362 
363-#: html.c:1909 html.c:4775
364+#: html.c:1987 html.c:5219
365 msgid "Unlike"
366 msgstr "Больше не нравится"
367 
368-#: html.c:1909
369+#: html.c:1987
370 msgid "Nah don't like it that much"
371 msgstr "Не так уж и понравилось"
372 
373-#: html.c:1915 html.c:4912
374+#: html.c:1993 html.c:5356
375 msgid "Unpin"
376 msgstr "Открепить"
377 
378-#: html.c:1915
379+#: html.c:1993
380 msgid "Unpin this post from your timeline"
381 msgstr "Открепить это сообщение из своей ленты"
382 
383-#: html.c:1918 html.c:4907
384+#: html.c:1996 html.c:5351
385 msgid "Pin"
386 msgstr "Закрепить"
387 
388-#: html.c:1918
389+#: html.c:1996
390 msgid "Pin this post to the top of your timeline"
391 msgstr "Закрепить это сообщение в своей ленте"
392 
393-#: html.c:1925
394+#: html.c:2003
395 msgid "Announce this post to your followers"
396 msgstr "Поделиться этим сообщением со своими подписчиками"
397 
398-#: html.c:1930 html.c:4783
399+#: html.c:2008 html.c:5227
400 msgid "Unboost"
401 msgstr "Отменить продвижение"
402 
403-#: html.c:1930
404+#: html.c:2008
405 msgid "I regret I boosted this"
406 msgstr "Не буду продвигать, пожалуй"
407 
408-#: html.c:1936 html.c:4922
409+#: html.c:2014 html.c:5366
410 msgid "Unbookmark"
411 msgstr "Удалить из закладок"
412 
413-#: html.c:1936
414+#: html.c:2014
415 msgid "Delete this post from your bookmarks"
416 msgstr "Удалить это сообщение из закладок"
417 
418-#: html.c:1939 html.c:4917
419+#: html.c:2017 html.c:5361
420 msgid "Bookmark"
421 msgstr "Добавить в закладки"
422 
423-#: html.c:1939
424+#: html.c:2017
425 msgid "Add this post to your bookmarks"
426 msgstr "Добавить сообщение в закладки"
427 
428-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
429+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
430 msgid "Unfollow"
431 msgstr "Отписаться"
432 
433-#: html.c:1945 html.c:3387
434+#: html.c:2023 html.c:3763 html.c:4042
435 msgid "Stop following this user's activity"
436 msgstr "Отменить подписку на этого пользователя"
437 
438-#: html.c:1949 html.c:3401
439+#: html.c:2027 html.c:3777 html.c:4044
440 msgid "Start following this user's activity"
441 msgstr "Начать следовать за этим пользователем"
442 
443-#: html.c:1955 html.c:4860
444+#: html.c:2033 html.c:5304
445 msgid "Unfollow Group"
446 msgstr "Отписаться от группы"
447 
448-#: html.c:1956
449+#: html.c:2034
450 msgid "Stop following this group or channel"
451 msgstr "Отписаться от группы или канала"
452 
453-#: html.c:1960 html.c:4847
454+#: html.c:2038 html.c:5291
455 msgid "Follow Group"
456 msgstr "Подписаться на группу"
457 
458-#: html.c:1961
459+#: html.c:2039
460 msgid "Start following this group or channel"
461 msgstr "Подписаться на группу или канал"
462 
463-#: html.c:1966 html.c:3423 html.c:4791
464+#: html.c:2044 html.c:3799 html.c:5235
465 msgid "MUTE"
466 msgstr "Заглушить"
467 
468-#: html.c:1967
469+#: html.c:2045
470 msgid "Block any activity from this user forever"
471 msgstr "Заглушить всю активность от этого пользователя, навсегда"
472 
473-#: html.c:1972 html.c:3405 html.c:4877
474+#: html.c:2050 html.c:3781 html.c:5321
475 msgid "Delete"
476 msgstr "Удалить"
477 
478-#: html.c:1972
479+#: html.c:2050
480 msgid "Delete this post"
481 msgstr "Удалить это сообщение"
482 
483-#: html.c:1975 html.c:4799
484+#: html.c:2053 html.c:5243
485 msgid "Hide"
486 msgstr "Скрыть"
487 
488-#: html.c:1975
489+#: html.c:2053
490 msgid "Hide this post and its children"
491 msgstr "Скрыть это сообщение вместе с обсуждением"
492 
493-#: html.c:2017
494+#: html.c:2095
495 msgid "Edit..."
496 msgstr "Редактировать..."
497 
498-#: html.c:2039
499+#: html.c:2133
500 msgid "Reply..."
501 msgstr "Ответить..."
502 
503-#: html.c:2090
504+#: html.c:2184
505 msgid "Truncated (too deep)"
506 msgstr "Обрезано (слишком много)"
507 
508-#: html.c:2108
509+#: html.c:2202
510 msgid "follows you"
511 msgstr "подписан на вас"
512 
513-#: html.c:2182
514+#: html.c:2276
515 msgid "Pinned"
516 msgstr "Закреплено"
517 
518-#: html.c:2190
519+#: html.c:2284
520 msgid "Bookmarked"
521 msgstr "Добавлено в закладки"
522 
523-#: html.c:2198
524+#: html.c:2292
525 msgid "Poll"
526 msgstr "Опрос"
527 
528-#: html.c:2205
529+#: html.c:2299
530 msgid "Voted"
531 msgstr "Проголосовано"
532 
533-#: html.c:2214
534+#: html.c:2308
535 msgid "Event"
536 msgstr "Событие"
537 
538-#: html.c:2246 html.c:2275
539+#: html.c:2340 html.c:2369
540 msgid "boosted"
541 msgstr "поделился"
542 
543-#: html.c:2289
544+#: html.c:2383
545 msgid "in reply to"
546 msgstr "в ответ на"
547 
548-#: html.c:2345
549+#: html.c:2439
550 msgid " [SENSITIVE CONTENT]"
551 msgstr " [ЧУВСТВИТЕЛЬНО СОДЕРЖИМОЕ]"
552 
553-#: html.c:2512
554+#: html.c:2796
555 msgid "Vote"
556 msgstr "Голос"
557 
558-#: html.c:2522
559+#: html.c:2806
560 msgid "Closed"
561 msgstr "Закрыт"
562 
563-#: html.c:2547
564+#: html.c:2831
565 msgid "Closes in"
566 msgstr "Закрывается через"
567 
568-#: html.c:2627
569+#: html.c:2911
570 msgid "Video"
571 msgstr "Видео"
572 
573-#: html.c:2642
574+#: html.c:2926
575 msgid "Audio"
576 msgstr "Аудио"
577 
578-#: html.c:2670
579+#: html.c:2954
580 msgid "Attachment"
581 msgstr "Вложение"
582 
583-#: html.c:2684
584+#: html.c:2968
585 msgid "Alt..."
586 msgstr "Описание..."
587 
588-#: html.c:2697
589+#: html.c:2981
590 msgid "Source channel or community"
591 msgstr "Исходный канал или сообщество"
592 
593-#: html.c:2791
594+#: html.c:3075
595 msgid "Time: "
596 msgstr "Время: "
597 
598-#: html.c:2872
599+#: html.c:3156
600 msgid "Older..."
601 msgstr "Ранее..."
602 
603-#: html.c:2974
604+#: html.c:3258
605 msgid "about this site"
606 msgstr "про этот сайт"
607 
608-#: html.c:2976
609+#: html.c:3260
610 msgid "powered by "
611 msgstr "на основе "
612 
613-#: html.c:3041
614+#: html.c:3329
615 msgid "Dismiss"
616 msgstr "Скрыть"
617 
618-#: html.c:3058
619+#: html.c:3346
620 #, c-format
621 msgid "Timeline for list '%s'"
622 msgstr "Ленты для списка '%s'"
623 
624-#: html.c:3077 html.c:4169
625+#: html.c:3365 html.c:4589
626 msgid "Pinned posts"
627 msgstr "Закреплённые сообщения"
628 
629-#: html.c:3089 html.c:4184
630+#: html.c:3377 html.c:4604
631 msgid "Bookmarked posts"
632 msgstr "Сообщения в закладках"
633 
634-#: html.c:3101 html.c:4199
635+#: html.c:3389 html.c:4619
636 msgid "Post drafts"
637 msgstr "Черновики сообщений"
638 
639-#: html.c:3177
640+#: html.c:3465
641 msgid "No more unseen posts"
642 msgstr "Всё просмотрено"
643 
644-#: html.c:3181 html.c:3290
645+#: html.c:3469 html.c:3578
646 msgid "Back to top"
647 msgstr "Вернуться наверх"
648 
649-#: html.c:3243
650+#: html.c:3531
651 msgid "History"
652 msgstr "История"
653 
654-#: html.c:3295 html.c:3734
655+#: html.c:3583 html.c:4149
656 msgid "More..."
657 msgstr "Ещё..."
658 
659-#: html.c:3391 html.c:4813
660+#: html.c:3767 html.c:5257
661 msgid "Unlimit"
662 msgstr "Без ограничения"
663 
664-#: html.c:3392
665+#: html.c:3768
666 msgid "Allow announces (boosts) from this user"
667 msgstr "Разрешить продвижения от этого пользователя"
668 
669-#: html.c:3395 html.c:4809
670+#: html.c:3771 html.c:5253
671 msgid "Limit"
672 msgstr "Лимит"
673 
674-#: html.c:3396
675+#: html.c:3772
676 msgid "Block announces (boosts) from this user"
677 msgstr "Запретить продвижения от этого пользователя"
678 
679-#: html.c:3405
680+#: html.c:3781
681 msgid "Delete this user"
682 msgstr "Удалить пользователя"
683 
684-#: html.c:3410 html.c:4927
685+#: html.c:3786 html.c:5371
686 msgid "Approve"
687 msgstr "Подтвердить"
688 
689-#: html.c:3411
690+#: html.c:3787
691 msgid "Approve this follow request"
692 msgstr "Подтвердить запрос на подписку"
693 
694-#: html.c:3414 html.c:4951
695+#: html.c:3790 html.c:5395
696 msgid "Discard"
697 msgstr "Отклонить"
698 
699-#: html.c:3414
700+#: html.c:3790
701 msgid "Discard this follow request"
702 msgstr "Отклонить этот запрос на подписку"
703 
704-#: html.c:3419 html.c:4795
705+#: html.c:3795 html.c:5239
706 msgid "Unmute"
707 msgstr "Отменить глушение"
708 
709-#: html.c:3420
710+#: html.c:3796
711 msgid "Stop blocking activities from this user"
712 msgstr "Прекратить глушение действий этого пользователя"
713 
714-#: html.c:3424
715+#: html.c:3800
716 msgid "Block any activity from this user"
717 msgstr "Заглушить все действия этого пользователя"
718 
719-#: html.c:3432
720+#: html.c:3808
721 msgid "Direct Message..."
722 msgstr "Личное сообщение..."
723 
724-#: html.c:3467
725+#: html.c:3843
726 msgid "Pending follow confirmations"
727 msgstr "Ожидающие запросы на подписку"
728 
729-#: html.c:3471
730+#: html.c:3847
731 msgid "People you follow"
732 msgstr "Ваши подписки"
733 
734-#: html.c:3472
735+#: html.c:3848
736 msgid "People that follow you"
737 msgstr "Ваши подписчики"
738 
739-#: html.c:3511
740+#: html.c:3887
741 msgid "Clear all"
742 msgstr "Очистить всё"
743 
744-#: html.c:3571
745+#: html.c:3951
746 msgid "Mention"
747 msgstr "Упоминание"
748 
749-#: html.c:3574
750+#: html.c:3954
751 msgid "Finished poll"
752 msgstr "Завершённый опрос"
753 
754-#: html.c:3590
755+#: html.c:3979
756 msgid "Follow Request"
757 msgstr "Запрос на подписку"
758 
759-#: html.c:3674
760+#: html.c:4089
761 msgid "Context"
762 msgstr "Контекст"
763 
764-#: html.c:3692
765+#: html.c:4107
766 msgid "New"
767 msgstr "Новое"
768 
769-#: html.c:3707
770+#: html.c:4122
771 msgid "Already seen"
772 msgstr "Уже просмотрено"
773 
774-#: html.c:3722
775+#: html.c:4137
776 msgid "None"
777 msgstr "Нет"
778 
779-#: html.c:3994
780+#: html.c:4414
781 #, c-format
782 msgid "Search results for account %s"
783 msgstr "Результаты поиска для учётной записи %s"
784 
785-#: html.c:4001
786+#: html.c:4421
787 #, c-format
788 msgid "Account %s not found"
789 msgstr "Учётная запись %s не найдена"
790 
791-#: html.c:4032
792+#: html.c:4452
793 #, c-format
794 msgid "Search results for tag %s"
795 msgstr "Результаты поиска тега %s"
796 
797-#: html.c:4032
798+#: html.c:4452
799 #, c-format
800 msgid "Nothing found for tag %s"
801 msgstr "Ничего не найдено по тегу %s"
802 
803-#: html.c:4048
804+#: html.c:4468
805 #, c-format
806 msgid "Search results for '%s' (may be more)"
807 msgstr "Результаты поиска для '%s' (возможно, есть ещё)"
808 
809-#: html.c:4051
810+#: html.c:4471
811 #, c-format
812 msgid "Search results for '%s'"
813 msgstr "Результаты поиска для '%s'"
814 
815-#: html.c:4054
816+#: html.c:4474
817 #, c-format
818 msgid "No more matches for '%s'"
819 msgstr "Больше нет совпадений для '%s'"
820 
821-#: html.c:4056
822+#: html.c:4476
823 #, c-format
824 msgid "Nothing found for '%s'"
825 msgstr "Ничего не найдено для '%s'"
826 
827-#: html.c:4154
828+#: html.c:4574
829 msgid "Showing instance timeline"
830 msgstr "Показываем ленту сервера"
831 
832-#: html.c:4237
833+#: html.c:4657
834 #, c-format
835 msgid "Showing timeline for list '%s'"
836 msgstr "Показываем ленту для списка '%s'"
837 
838-#: httpd.c:258
839+#: httpd.c:259
840 #, c-format
841 msgid "Search results for tag #%s"
842 msgstr "Результаты поиска для тега #%s"
843 
844-#: httpd.c:267
845+#: httpd.c:268
846 msgid "Recent posts by users in this instance"
847 msgstr "Последние сообщения на этом сервере"
848 
849-#: html.c:1764
850+#: html.c:1842
851 msgid "Blocked hashtags..."
852 msgstr "Заблокированные теги..."
853 
854-#: html.c:518
855+#: html.c:574
856 msgid "Optional URL to reply to"
857 msgstr "Необязательный URL для ответа"
858 
859-#: html.c:695
860+#: html.c:751
861 msgid ""
862 "Option 1...\n"
863 "Option 2...\n"
864@@ -714,94 +714,106 @@ msgstr ""
865 "Вариант 3...\n"
866 "..."
867 
868-#: html.c:1558
869+#: html.c:1636
870 msgid "Bot API key"
871 msgstr "Ключ API для бота"
872 
873-#: html.c:1564
874+#: html.c:1642
875 msgid "Chat id"
876 msgstr "Id чата"
877 
878-#: html.c:1572
879+#: html.c:1650
880 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
881 msgstr "полный URL сервера ntfy (например https://ntfy.sh/YourTopic)"
882 
883-#: html.c:1578
884+#: html.c:1656
885 msgid "ntfy token - if needed"
886 msgstr "токен ntfy - если нужен"
887 
888-#: html.c:3078
889+#: html.c:3366
890 msgid "pinned"
891 msgstr "закреплено"
892 
893-#: html.c:3090
894+#: html.c:3378
895 msgid "bookmarks"
896 msgstr "закладки"
897 
898-#: html.c:3102
899+#: html.c:3390
900 msgid "drafts"
901 msgstr "черновики"
902 
903-#: html.c:584
904+#: html.c:640
905 msgid "Scheduled post..."
906 msgstr "Запланировать..."
907 
908 msgid "Post date and time:"
909 msgstr "Время поста:"
910 
911-#: html.c:3113 html.c:4214
912+#: html.c:3401 html.c:4634
913 msgid "Scheduled posts"
914 msgstr "Запланированные посты"
915 
916-#: html.c:3114
917+#: html.c:3402
918 msgid "scheduled posts"
919 msgstr "запланированные посты"
920 
921-#: html.c:578
922+#: html.c:634
923 #, c-format
924 msgid "Post date and time (timezone: %s):"
925 msgstr "Время поста (Часовой пояс: %s):"
926 
927-#: html.c:1689
928+#: html.c:1767
929 msgid "Time zone:"
930 msgstr "Часовой пояс:"
931 
932-#: html.c:559
933+#: html.c:615
934 msgid "Language:"
935 msgstr ""
936 
937-#: html.c:1580
938+#: html.c:1658
939 msgid "Notify webhook:"
940 msgstr ""
941 
942-#: html.c:1586
943+#: html.c:1664
944 msgid "http://example.com/webhook"
945 msgstr ""
946 
947-#: html.c:1694
948+#: html.c:1772
949 msgid "Languages you usually post in:"
950 msgstr ""
951 
952-#: html.c:1700
953+#: html.c:1778
954 msgid "en fr es de_AT"
955 msgstr ""
956 
957-#: html.c:460
958+#: html.c:428
959 msgid "Visibility: "
960 msgstr ""
961 
962-#: html.c:468
963 msgid "Public"
964 msgstr ""
965 
966-#: html.c:477
967 msgid "Unlisted"
968 msgstr ""
969 
970-#: html.c:486
971 msgid "Followers-only"
972 msgstr ""
973 
974-#: html.c:495
975 msgid "Direct Message"
976 msgstr ""
977+
978+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
979+msgid "EmojiUnreact"
980+msgstr ""
981+
982+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
983+msgid "EmojiReact"
984+msgstr ""
985+
986+#: html.c:2115
987+msgid "Emoji react..."
988+msgstr ""
989+
990+#: html.c:2609
991+msgid "Emoji reactions: "
992+msgstr ""
+202, -190
  1@@ -15,119 +15,119 @@ msgstr ""
  2 "Content-Transfer-Encoding: 8bit\n"
  3 "X-Generator: Poedit 3.0\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "Делікатний вміст: "
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "Опис делікатного вмісту"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "Тільки для зазначених осіб: "
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "Відповісти до (URL): "
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "Не надсилати, але зберігти як чернетку"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "Чернетка:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "Вкладення..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "Файл:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "Очистіть це поле, щоб видалити вкладення"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "Опис вкладення"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "Опитування..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "Варіанти відповідей (по одному в рядку, до 8):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "Єдиний вибір"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "Декілька варіантів вибору"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "Закінчення через 5 хвилин"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "Закінчення через 1 годину"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "Закінчення через 1 день"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "Надіслати"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "Опис сайту"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "Пошта админа"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "Обліковий запис адміна"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d підписок, %d підписників"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "особисте"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "публічне"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "повідомлення"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "люди"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "сервер"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149@@ -135,574 +135,574 @@ msgstr ""
150 "Шукати дописи за URL або вмістом (регулярний вираз), акаунтами @user@host "
151 "або #тегом"
152 
153-#: html.c:1087
154+#: html.c:1143
155 msgid "Content search"
156 msgstr "Пошук за вмістом"
157 
158-#: html.c:1213
159+#: html.c:1269
160 msgid "verified link"
161 msgstr "перевірене посилання"
162 
163-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
164+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
165 msgid "Location: "
166 msgstr "Місце знаходження: "
167 
168-#: html.c:1302
169+#: html.c:1358
170 msgid "New Post..."
171 msgstr "Новий допис..."
172 
173-#: html.c:1304
174+#: html.c:1360
175 msgid "What's on your mind?"
176 msgstr "Що у вас на думці?"
177 
178-#: html.c:1313
179+#: html.c:1369
180 msgid "Operations..."
181 msgstr "Дії..."
182 
183-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
184+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
185 msgid "Follow"
186 msgstr "Підписатися"
187 
188-#: html.c:1330
189+#: html.c:1386
190 msgid "(by URL or user@host)"
191 msgstr "(за URL або user@host)"
192 
193-#: html.c:1345 html.c:1925 html.c:4766
194+#: html.c:1401 html.c:2003 html.c:5210
195 msgid "Boost"
196 msgstr "Просувати"
197 
198-#: html.c:1347 html.c:1364
199+#: html.c:1403 html.c:1420 html.c:1442
200 msgid "(by URL)"
201 msgstr "(за URL)"
202 
203-#: html.c:1362 html.c:1904 html.c:4757
204+#: html.c:1418 html.c:1982 html.c:5201
205 msgid "Like"
206 msgstr "Вподобайка"
207 
208-#: html.c:1490
209+#: html.c:1568
210 msgid "User Settings..."
211 msgstr "Налаштування користувача..."
212 
213-#: html.c:1499
214+#: html.c:1577
215 msgid "Display name:"
216 msgstr "Видиме ім'я:"
217 
218-#: html.c:1505
219+#: html.c:1583
220 msgid "Your name"
221 msgstr "Ваше ім'я"
222 
223-#: html.c:1507
224+#: html.c:1585
225 msgid "Avatar: "
226 msgstr "Аватар: "
227 
228-#: html.c:1515
229+#: html.c:1593
230 msgid "Delete current avatar"
231 msgstr "Видалити поточний аватар"
232 
233-#: html.c:1517
234+#: html.c:1595
235 msgid "Header image (banner): "
236 msgstr "Зображення заголовка (банер): "
237 
238-#: html.c:1525
239+#: html.c:1603
240 msgid "Delete current header image"
241 msgstr "Видалити поточне зображення заголовка"
242 
243-#: html.c:1527
244+#: html.c:1605
245 msgid "Bio:"
246 msgstr "Про себе:"
247 
248-#: html.c:1533
249+#: html.c:1611
250 msgid "Write about yourself here..."
251 msgstr "Напишіть про себе тут..."
252 
253-#: html.c:1542
254+#: html.c:1620
255 msgid "Always show sensitive content"
256 msgstr "Завжди показувати делікатний вміст"
257 
258-#: html.c:1544
259+#: html.c:1622
260 msgid "Email address for notifications:"
261 msgstr "Поштова адреса для повідомлень:"
262 
263-#: html.c:1552
264+#: html.c:1630
265 msgid "Telegram notifications (bot key and chat id):"
266 msgstr "Повідомлення в Telegram (ключ бота та id чату):"
267 
268-#: html.c:1566
269+#: html.c:1644
270 msgid "ntfy notifications (ntfy server and token):"
271 msgstr "Повідомлення в ntfy (сервер та токен ntfy):"
272 
273-#: html.c:1588
274+#: html.c:1666
275 msgid "Maximum days to keep posts (0: server settings):"
276 msgstr "Максимальний час для зберігання дописів (0: налаштування сервера):"
277 
278-#: html.c:1602
279+#: html.c:1680
280 msgid "Drop direct messages from people you don't follow"
281 msgstr "Відхиляти особисті повідомлення від незнайомців"
282 
283-#: html.c:1611
284+#: html.c:1689
285 msgid "This account is a bot"
286 msgstr "Цей акаунт є ботом"
287 
288-#: html.c:1620
289+#: html.c:1698
290 msgid "Auto-boost all mentions to this account"
291 msgstr "Автоматично просувати всі згадки цього акаунта"
292 
293-#: html.c:1629
294+#: html.c:1707
295 msgid "This account is private (posts are not shown through the web)"
296 msgstr "Це закритий акаунт (дописи не показуються в мережі)"
297 
298-#: html.c:1639
299+#: html.c:1717
300 msgid "Collapse top threads by default"
301 msgstr "Згорнути потоки за замовчуванням"
302 
303-#: html.c:1648
304+#: html.c:1726
305 msgid "Follow requests must be approved"
306 msgstr "Запити на підписку мають бути схвалені"
307 
308-#: html.c:1657
309+#: html.c:1735
310 msgid "Publish follower and following metrics"
311 msgstr "Публікувати метрики підписок та підписників"
312 
313-#: html.c:1659
314+#: html.c:1737
315 msgid "Current location:"
316 msgstr "Поточне місцезнаходження:"
317 
318-#: html.c:1673
319+#: html.c:1751
320 msgid "Profile metadata (key=value pairs in each line):"
321 msgstr "Метадані профілю (пари ключ=значення в кожному рядку):"
322 
323-#: html.c:1684
324+#: html.c:1762
325 msgid "Web interface language:"
326 msgstr "Мова інтерфейсу:"
327 
328-#: html.c:1703
329+#: html.c:1781
330 msgid "New password:"
331 msgstr "Новий пароль:"
332 
333-#: html.c:1710
334+#: html.c:1788
335 msgid "Repeat new password:"
336 msgstr "Повторити новий пароль:"
337 
338-#: html.c:1720
339+#: html.c:1798
340 msgid "Update user info"
341 msgstr "Оновлення даних користувача"
342 
343-#: html.c:1731
344+#: html.c:1809
345 msgid "Followed hashtags..."
346 msgstr "Підписані хештеги..."
347 
348-#: html.c:1733 html.c:1766
349+#: html.c:1811 html.c:1844
350 msgid "One hashtag per line"
351 msgstr "Один хештег на рядок"
352 
353-#: html.c:1755 html.c:1787
354+#: html.c:1833 html.c:1865
355 msgid "Update hashtags"
356 msgstr "Оновити хештеги"
357 
358-#: html.c:1904
359+#: html.c:1982
360 msgid "Say you like this post"
361 msgstr "Позначте допис як вподобаний"
362 
363-#: html.c:1909 html.c:4775
364+#: html.c:1987 html.c:5219
365 msgid "Unlike"
366 msgstr "Більше не подобається"
367 
368-#: html.c:1909
369+#: html.c:1987
370 msgid "Nah don't like it that much"
371 msgstr "Мені це не дуже подобається"
372 
373-#: html.c:1915 html.c:4912
374+#: html.c:1993 html.c:5356
375 msgid "Unpin"
376 msgstr "Відкріпити"
377 
378-#: html.c:1915
379+#: html.c:1993
380 msgid "Unpin this post from your timeline"
381 msgstr "Відкріпити цей допис зі власної стрічки"
382 
383-#: html.c:1918 html.c:4907
384+#: html.c:1996 html.c:5351
385 msgid "Pin"
386 msgstr "Закріпити"
387 
388-#: html.c:1918
389+#: html.c:1996
390 msgid "Pin this post to the top of your timeline"
391 msgstr "Закріпити цей допис до власної стрічки"
392 
393-#: html.c:1925
394+#: html.c:2003
395 msgid "Announce this post to your followers"
396 msgstr "Поділитися цим дописом зі своїми підписниками"
397 
398-#: html.c:1930 html.c:4783
399+#: html.c:2008 html.c:5227
400 msgid "Unboost"
401 msgstr "Скасувати просування"
402 
403-#: html.c:1930
404+#: html.c:2008
405 msgid "I regret I boosted this"
406 msgstr "Я шкодую, що просував це"
407 
408-#: html.c:1936 html.c:4922
409+#: html.c:2014 html.c:5366
410 msgid "Unbookmark"
411 msgstr "Видалити з закладок"
412 
413-#: html.c:1936
414+#: html.c:2014
415 msgid "Delete this post from your bookmarks"
416 msgstr "Видалити цей допис з закладок"
417 
418-#: html.c:1939 html.c:4917
419+#: html.c:2017 html.c:5361
420 msgid "Bookmark"
421 msgstr "Додати в закладки"
422 
423-#: html.c:1939
424+#: html.c:2017
425 msgid "Add this post to your bookmarks"
426 msgstr "Додайте цей допис в закладки"
427 
428-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
429+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
430 msgid "Unfollow"
431 msgstr "Відписатися"
432 
433-#: html.c:1945 html.c:3387
434+#: html.c:2023 html.c:3763 html.c:4042
435 msgid "Stop following this user's activity"
436 msgstr "Відписатися від цього користувача"
437 
438-#: html.c:1949 html.c:3401
439+#: html.c:2027 html.c:3777 html.c:4044
440 msgid "Start following this user's activity"
441 msgstr "Підписатися до цього користувача"
442 
443-#: html.c:1955 html.c:4860
444+#: html.c:2033 html.c:5304
445 msgid "Unfollow Group"
446 msgstr "Відписатися від групи"
447 
448-#: html.c:1956
449+#: html.c:2034
450 msgid "Stop following this group or channel"
451 msgstr "Відписатися від групи чи канала"
452 
453-#: html.c:1960 html.c:4847
454+#: html.c:2038 html.c:5291
455 msgid "Follow Group"
456 msgstr "Підписатися на групу"
457 
458-#: html.c:1961
459+#: html.c:2039
460 msgid "Start following this group or channel"
461 msgstr "Підписатися на групу чи канал"
462 
463-#: html.c:1966 html.c:3423 html.c:4791
464+#: html.c:2044 html.c:3799 html.c:5235
465 msgid "MUTE"
466 msgstr "Заглушити"
467 
468-#: html.c:1967
469+#: html.c:2045
470 msgid "Block any activity from this user forever"
471 msgstr "Назавжди заблокувати активність цього користувача"
472 
473-#: html.c:1972 html.c:3405 html.c:4877
474+#: html.c:2050 html.c:3781 html.c:5321
475 msgid "Delete"
476 msgstr "Видалити"
477 
478-#: html.c:1972
479+#: html.c:2050
480 msgid "Delete this post"
481 msgstr "Видалити цей допис"
482 
483-#: html.c:1975 html.c:4799
484+#: html.c:2053 html.c:5243
485 msgid "Hide"
486 msgstr "Приховати"
487 
488-#: html.c:1975
489+#: html.c:2053
490 msgid "Hide this post and its children"
491 msgstr "Приховати цей допис разом з обговоренням"
492 
493-#: html.c:2017
494+#: html.c:2095
495 msgid "Edit..."
496 msgstr "Редагувати..."
497 
498-#: html.c:2039
499+#: html.c:2133
500 msgid "Reply..."
501 msgstr "Відповісти..."
502 
503-#: html.c:2090
504+#: html.c:2184
505 msgid "Truncated (too deep)"
506 msgstr "Обрізано (занадто багато)"
507 
508-#: html.c:2108
509+#: html.c:2202
510 msgid "follows you"
511 msgstr "підписан на вас"
512 
513-#: html.c:2182
514+#: html.c:2276
515 msgid "Pinned"
516 msgstr "Закріплено"
517 
518-#: html.c:2190
519+#: html.c:2284
520 msgid "Bookmarked"
521 msgstr "Додано до закладок"
522 
523-#: html.c:2198
524+#: html.c:2292
525 msgid "Poll"
526 msgstr "Опитування"
527 
528-#: html.c:2205
529+#: html.c:2299
530 msgid "Voted"
531 msgstr "Проголосовано"
532 
533-#: html.c:2214
534+#: html.c:2308
535 msgid "Event"
536 msgstr "Подія"
537 
538-#: html.c:2246 html.c:2275
539+#: html.c:2340 html.c:2369
540 msgid "boosted"
541 msgstr "просунуто"
542 
543-#: html.c:2289
544+#: html.c:2383
545 msgid "in reply to"
546 msgstr "у відповідь на"
547 
548-#: html.c:2345
549+#: html.c:2439
550 msgid " [SENSITIVE CONTENT]"
551 msgstr " [ДЕЛІКАТНИЙ ВМІСТ]"
552 
553-#: html.c:2512
554+#: html.c:2796
555 msgid "Vote"
556 msgstr "Голос"
557 
558-#: html.c:2522
559+#: html.c:2806
560 msgid "Closed"
561 msgstr "Завершено"
562 
563-#: html.c:2547
564+#: html.c:2831
565 msgid "Closes in"
566 msgstr "Завершується через"
567 
568-#: html.c:2627
569+#: html.c:2911
570 msgid "Video"
571 msgstr "Відео"
572 
573-#: html.c:2642
574+#: html.c:2926
575 msgid "Audio"
576 msgstr "Аудіо"
577 
578-#: html.c:2670
579+#: html.c:2954
580 msgid "Attachment"
581 msgstr "Вкладення"
582 
583-#: html.c:2684
584+#: html.c:2968
585 msgid "Alt..."
586 msgstr "Опис..."
587 
588-#: html.c:2697
589+#: html.c:2981
590 msgid "Source channel or community"
591 msgstr "Вихідний канал або спільнота"
592 
593-#: html.c:2791
594+#: html.c:3075
595 msgid "Time: "
596 msgstr "Час: "
597 
598-#: html.c:2872
599+#: html.c:3156
600 msgid "Older..."
601 msgstr "Раніше..."
602 
603-#: html.c:2974
604+#: html.c:3258
605 msgid "about this site"
606 msgstr "про цей сайт"
607 
608-#: html.c:2976
609+#: html.c:3260
610 msgid "powered by "
611 msgstr "на базі "
612 
613-#: html.c:3041
614+#: html.c:3329
615 msgid "Dismiss"
616 msgstr "Відхилити"
617 
618-#: html.c:3058
619+#: html.c:3346
620 #, c-format
621 msgid "Timeline for list '%s'"
622 msgstr "Стрічки для списку '%s'"
623 
624-#: html.c:3077 html.c:4169
625+#: html.c:3365 html.c:4589
626 msgid "Pinned posts"
627 msgstr "Закріплені дописи"
628 
629-#: html.c:3089 html.c:4184
630+#: html.c:3377 html.c:4604
631 msgid "Bookmarked posts"
632 msgstr "Дописи у закладках"
633 
634-#: html.c:3101 html.c:4199
635+#: html.c:3389 html.c:4619
636 msgid "Post drafts"
637 msgstr "Чернетки дописів"
638 
639-#: html.c:3177
640+#: html.c:3465
641 msgid "No more unseen posts"
642 msgstr "Усе переглянуто"
643 
644-#: html.c:3181 html.c:3290
645+#: html.c:3469 html.c:3578
646 msgid "Back to top"
647 msgstr "Повернутися до початку"
648 
649-#: html.c:3243
650+#: html.c:3531
651 msgid "History"
652 msgstr "Історія"
653 
654-#: html.c:3295 html.c:3734
655+#: html.c:3583 html.c:4149
656 msgid "More..."
657 msgstr "Більше..."
658 
659-#: html.c:3391 html.c:4813
660+#: html.c:3767 html.c:5257
661 msgid "Unlimit"
662 msgstr "Без обмеження"
663 
664-#: html.c:3392
665+#: html.c:3768
666 msgid "Allow announces (boosts) from this user"
667 msgstr "Дозволити просування від цього користувача"
668 
669-#: html.c:3395 html.c:4809
670+#: html.c:3771 html.c:5253
671 msgid "Limit"
672 msgstr "Обмежити"
673 
674-#: html.c:3396
675+#: html.c:3772
676 msgid "Block announces (boosts) from this user"
677 msgstr "Заборонити просування від цього користувача"
678 
679-#: html.c:3405
680+#: html.c:3781
681 msgid "Delete this user"
682 msgstr "Видалити користувача"
683 
684-#: html.c:3410 html.c:4927
685+#: html.c:3786 html.c:5371
686 msgid "Approve"
687 msgstr "Підтвердити"
688 
689-#: html.c:3411
690+#: html.c:3787
691 msgid "Approve this follow request"
692 msgstr "Підтвердити цей запит на підписку"
693 
694-#: html.c:3414 html.c:4951
695+#: html.c:3790 html.c:5395
696 msgid "Discard"
697 msgstr "Відхилити"
698 
699-#: html.c:3414
700+#: html.c:3790
701 msgid "Discard this follow request"
702 msgstr "Відхилити цей запит на підписку"
703 
704-#: html.c:3419 html.c:4795
705+#: html.c:3795 html.c:5239
706 msgid "Unmute"
707 msgstr "Скасувати глушіння"
708 
709-#: html.c:3420
710+#: html.c:3796
711 msgid "Stop blocking activities from this user"
712 msgstr "Припинити глушіння дій цього користувача"
713 
714-#: html.c:3424
715+#: html.c:3800
716 msgid "Block any activity from this user"
717 msgstr "Заглушити всі дії цього користувача"
718 
719-#: html.c:3432
720+#: html.c:3808
721 msgid "Direct Message..."
722 msgstr "Особисте повідомлення..."
723 
724-#: html.c:3467
725+#: html.c:3843
726 msgid "Pending follow confirmations"
727 msgstr "Запити на підписку очікують на розгляд"
728 
729-#: html.c:3471
730+#: html.c:3847
731 msgid "People you follow"
732 msgstr "Ваші підписки"
733 
734-#: html.c:3472
735+#: html.c:3848
736 msgid "People that follow you"
737 msgstr "Ваші підписники"
738 
739-#: html.c:3511
740+#: html.c:3887
741 msgid "Clear all"
742 msgstr "Очистити все"
743 
744-#: html.c:3571
745+#: html.c:3951
746 msgid "Mention"
747 msgstr "Згадка"
748 
749-#: html.c:3574
750+#: html.c:3954
751 msgid "Finished poll"
752 msgstr "Завершене опитування"
753 
754-#: html.c:3590
755+#: html.c:3979
756 msgid "Follow Request"
757 msgstr "Запит на підписку"
758 
759-#: html.c:3674
760+#: html.c:4089
761 msgid "Context"
762 msgstr "Контекст"
763 
764-#: html.c:3692
765+#: html.c:4107
766 msgid "New"
767 msgstr "Нове"
768 
769-#: html.c:3707
770+#: html.c:4122
771 msgid "Already seen"
772 msgstr "Вже переглянуто"
773 
774-#: html.c:3722
775+#: html.c:4137
776 msgid "None"
777 msgstr "Нема"
778 
779-#: html.c:3994
780+#: html.c:4414
781 #, c-format
782 msgid "Search results for account %s"
783 msgstr "Результати пошуку для облікового запису %s"
784 
785-#: html.c:4001
786+#: html.c:4421
787 #, c-format
788 msgid "Account %s not found"
789 msgstr "Обліковий запис %s не знайдений"
790 
791-#: html.c:4032
792+#: html.c:4452
793 #, c-format
794 msgid "Search results for tag %s"
795 msgstr "Результати пошуку тега %s"
796 
797-#: html.c:4032
798+#: html.c:4452
799 #, c-format
800 msgid "Nothing found for tag %s"
801 msgstr "Нічого не знайдено за тегом %s"
802 
803-#: html.c:4048
804+#: html.c:4468
805 #, c-format
806 msgid "Search results for '%s' (may be more)"
807 msgstr "Результати пошуку для '%s' (можливо є більше)"
808 
809-#: html.c:4051
810+#: html.c:4471
811 #, c-format
812 msgid "Search results for '%s'"
813 msgstr "Результати пошуку для '%s'"
814 
815-#: html.c:4054
816+#: html.c:4474
817 #, c-format
818 msgid "No more matches for '%s'"
819 msgstr "Немає більше збігів для '%s'"
820 
821-#: html.c:4056
822+#: html.c:4476
823 #, c-format
824 msgid "Nothing found for '%s'"
825 msgstr "Нічого не знайдено для '%s'"
826 
827-#: html.c:4154
828+#: html.c:4574
829 msgid "Showing instance timeline"
830 msgstr "Показуємо стрічку сервера"
831 
832-#: html.c:4237
833+#: html.c:4657
834 #, c-format
835 msgid "Showing timeline for list '%s'"
836 msgstr "Показуємо стрічку для списку '%s'"
837 
838-#: httpd.c:258
839+#: httpd.c:259
840 #, c-format
841 msgid "Search results for tag #%s"
842 msgstr "Результати пошуку для тега #%s"
843 
844-#: httpd.c:267
845+#: httpd.c:268
846 msgid "Recent posts by users in this instance"
847 msgstr "Останні повідомлення на цьому сервері"
848 
849-#: html.c:1764
850+#: html.c:1842
851 msgid "Blocked hashtags..."
852 msgstr "Заблоковані теги..."
853 
854-#: html.c:518
855+#: html.c:574
856 msgid "Optional URL to reply to"
857 msgstr "Необов'язковий URL для відповіді"
858 
859-#: html.c:695
860+#: html.c:751
861 msgid ""
862 "Option 1...\n"
863 "Option 2...\n"
864@@ -714,94 +714,106 @@ msgstr ""
865 "Варіант 3...\n"
866 "..."
867 
868-#: html.c:1558
869+#: html.c:1636
870 msgid "Bot API key"
871 msgstr "Ключ API для бота"
872 
873-#: html.c:1564
874+#: html.c:1642
875 msgid "Chat id"
876 msgstr "Id чату"
877 
878-#: html.c:1572
879+#: html.c:1650
880 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
881 msgstr "повна URL сервера ntfy (наприклад https://ntfy.sh/YourTopic)"
882 
883-#: html.c:1578
884+#: html.c:1656
885 msgid "ntfy token - if needed"
886 msgstr "токен ntfy - якщо потрібно"
887 
888-#: html.c:3078
889+#: html.c:3366
890 msgid "pinned"
891 msgstr "закріплено"
892 
893-#: html.c:3090
894+#: html.c:3378
895 msgid "bookmarks"
896 msgstr "закладки"
897 
898-#: html.c:3102
899+#: html.c:3390
900 msgid "drafts"
901 msgstr "чернетки"
902 
903-#: html.c:584
904+#: html.c:640
905 msgid "Scheduled post..."
906 msgstr "Запланувати..."
907 
908 msgid "Post date and time:"
909 msgstr "Час допису:"
910 
911-#: html.c:3113 html.c:4214
912+#: html.c:3401 html.c:4634
913 msgid "Scheduled posts"
914 msgstr "Заплановані дописи"
915 
916-#: html.c:3114
917+#: html.c:3402
918 msgid "scheduled posts"
919 msgstr "заплановані дописи"
920 
921-#: html.c:578
922+#: html.c:634
923 #, c-format
924 msgid "Post date and time (timezone: %s):"
925 msgstr "Дата та час допису (часовий пояс: %s):"
926 
927-#: html.c:1689
928+#: html.c:1767
929 msgid "Time zone:"
930 msgstr "Часовий пояс:"
931 
932-#: html.c:559
933+#: html.c:615
934 msgid "Language:"
935 msgstr ""
936 
937-#: html.c:1580
938+#: html.c:1658
939 msgid "Notify webhook:"
940 msgstr ""
941 
942-#: html.c:1586
943+#: html.c:1664
944 msgid "http://example.com/webhook"
945 msgstr ""
946 
947-#: html.c:1694
948+#: html.c:1772
949 msgid "Languages you usually post in:"
950 msgstr ""
951 
952-#: html.c:1700
953+#: html.c:1778
954 msgid "en fr es de_AT"
955 msgstr ""
956 
957-#: html.c:460
958+#: html.c:428
959 msgid "Visibility: "
960 msgstr ""
961 
962-#: html.c:468
963 msgid "Public"
964 msgstr ""
965 
966-#: html.c:477
967 msgid "Unlisted"
968 msgstr ""
969 
970-#: html.c:486
971 msgid "Followers-only"
972 msgstr ""
973 
974-#: html.c:495
975 msgid "Direct Message"
976 msgstr ""
977+
978+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
979+msgid "EmojiUnreact"
980+msgstr ""
981+
982+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
983+msgid "EmojiReact"
984+msgstr ""
985+
986+#: html.c:2115
987+msgid "Emoji react..."
988+msgstr ""
989+
990+#: html.c:2609
991+msgid "Emoji reactions: "
992+msgstr ""
+202, -190
  1@@ -8,693 +8,693 @@ msgstr ""
  2 "Language: zh\n"
  3 "Content-Type: text/plain; charset=UTF-8\n"
  4 
  5-#: html.c:440
  6+#: html.c:534
  7 msgid "Sensitive content: "
  8 msgstr "敏感内容:"
  9 
 10-#: html.c:448
 11+#: html.c:542
 12 msgid "Sensitive content description"
 13 msgstr "敏感内容描述"
 14 
 15 msgid "Only for mentioned people: "
 16 msgstr "只有提及到的人:"
 17 
 18-#: html.c:514
 19+#: html.c:570
 20 msgid "Reply to (URL): "
 21 msgstr "回复给(URL):"
 22 
 23-#: html.c:523
 24+#: html.c:579
 25 msgid "Don't send, but store as a draft"
 26 msgstr "不发送,但保存为草稿"
 27 
 28-#: html.c:524
 29+#: html.c:580
 30 msgid "Draft:"
 31 msgstr "草稿:"
 32 
 33-#: html.c:614
 34+#: html.c:670
 35 msgid "Attachments..."
 36 msgstr "附件..."
 37 
 38-#: html.c:637
 39+#: html.c:693
 40 msgid "File:"
 41 msgstr "文件:"
 42 
 43-#: html.c:641
 44+#: html.c:697
 45 msgid "Clear this field to delete the attachment"
 46 msgstr "清除此项以删除附件"
 47 
 48-#: html.c:650 html.c:675
 49+#: html.c:706 html.c:731
 50 msgid "Attachment description"
 51 msgstr "附件描述"
 52 
 53-#: html.c:686
 54+#: html.c:742
 55 msgid "Poll..."
 56 msgstr "投票..."
 57 
 58-#: html.c:688
 59+#: html.c:744
 60 msgid "Poll options (one per line, up to 8):"
 61 msgstr "投票选项(每行一项,最多八项):"
 62 
 63-#: html.c:700
 64+#: html.c:756
 65 msgid "One choice"
 66 msgstr "单选"
 67 
 68-#: html.c:703
 69+#: html.c:759
 70 msgid "Multiple choices"
 71 msgstr "多选"
 72 
 73-#: html.c:709
 74+#: html.c:765
 75 msgid "End in 5 minutes"
 76 msgstr "五分钟后结束"
 77 
 78-#: html.c:713
 79+#: html.c:769
 80 msgid "End in 1 hour"
 81 msgstr "一小时后结束"
 82 
 83-#: html.c:716
 84+#: html.c:772
 85 msgid "End in 1 day"
 86 msgstr "一天后结束"
 87 
 88-#: html.c:724
 89+#: html.c:780
 90 msgid "Post"
 91 msgstr "发布"
 92 
 93-#: html.c:826 html.c:833
 94+#: html.c:882 html.c:889
 95 msgid "Site description"
 96 msgstr "站点描述"
 97 
 98-#: html.c:844
 99+#: html.c:900
100 msgid "Admin email"
101 msgstr "管理员邮箱"
102 
103-#: html.c:857
104+#: html.c:913
105 msgid "Admin account"
106 msgstr "管理员帐号"
107 
108-#: html.c:922 html.c:1278
109+#: html.c:978 html.c:1334
110 #, c-format
111 msgid "%d following, %d followers"
112 msgstr "%d 个正在关注,%d 个关注者"
113 
114-#: html.c:1019
115+#: html.c:1075
116 msgid "RSS"
117 msgstr "RSS"
118 
119-#: html.c:1024 html.c:1063
120+#: html.c:1080 html.c:1119
121 msgid "private"
122 msgstr "私密"
123 
124-#: html.c:1059
125+#: html.c:1115
126 msgid "public"
127 msgstr "公开"
128 
129-#: html.c:1067
130+#: html.c:1123
131 msgid "notifications"
132 msgstr "通知"
133 
134-#: html.c:1072
135+#: html.c:1128
136 msgid "people"
137 msgstr "成员"
138 
139-#: html.c:1077
140+#: html.c:1133
141 msgid "instance"
142 msgstr "实例"
143 
144-#: html.c:1086
145+#: html.c:1142
146 msgid ""
147 "Search posts by URL or content (regular expression), @user@host accounts, or "
148 "#tag"
149 msgstr ""
150 "通过 URL、内容(正则表达式)、@<用户名>@<主机名>帐号,或者 #话题标签 搜索贴子"
151 
152-#: html.c:1087
153+#: html.c:1143
154 msgid "Content search"
155 msgstr "搜索内容"
156 
157-#: html.c:1213
158+#: html.c:1269
159 msgid "verified link"
160 msgstr "已验证的链接"
161 
162-#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680
163+#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
164 msgid "Location: "
165 msgstr "位置:"
166 
167-#: html.c:1302
168+#: html.c:1358
169 msgid "New Post..."
170 msgstr "新贴子..."
171 
172-#: html.c:1304
173+#: html.c:1360
174 msgid "What's on your mind?"
175 msgstr "你在想什么?"
176 
177-#: html.c:1313
178+#: html.c:1369
179 msgid "Operations..."
180 msgstr "操作..."
181 
182-#: html.c:1328 html.c:1949 html.c:3400 html.c:4817
183+#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
184 msgid "Follow"
185 msgstr "关注"
186 
187-#: html.c:1330
188+#: html.c:1386
189 msgid "(by URL or user@host)"
190 msgstr "(通过 URL 或者 <用户名>@<主机名>)"
191 
192-#: html.c:1345 html.c:1925 html.c:4766
193+#: html.c:1401 html.c:2003 html.c:5210
194 msgid "Boost"
195 msgstr "转发"
196 
197-#: html.c:1347 html.c:1364
198+#: html.c:1403 html.c:1420 html.c:1442
199 msgid "(by URL)"
200 msgstr "(通过 URL)"
201 
202-#: html.c:1362 html.c:1904 html.c:4757
203+#: html.c:1418 html.c:1982 html.c:5201
204 msgid "Like"
205 msgstr "点赞"
206 
207-#: html.c:1490
208+#: html.c:1568
209 msgid "User Settings..."
210 msgstr "用户设置..."
211 
212-#: html.c:1499
213+#: html.c:1577
214 msgid "Display name:"
215 msgstr "显示名字:"
216 
217-#: html.c:1505
218+#: html.c:1583
219 msgid "Your name"
220 msgstr "你的名字"
221 
222-#: html.c:1507
223+#: html.c:1585
224 msgid "Avatar: "
225 msgstr "头像:"
226 
227-#: html.c:1515
228+#: html.c:1593
229 msgid "Delete current avatar"
230 msgstr "删除当前头像"
231 
232-#: html.c:1517
233+#: html.c:1595
234 msgid "Header image (banner): "
235 msgstr "页眉图像(横幅)"
236 
237-#: html.c:1525
238+#: html.c:1603
239 msgid "Delete current header image"
240 msgstr "删除当前的页眉图像"
241 
242-#: html.c:1527
243+#: html.c:1605
244 msgid "Bio:"
245 msgstr "简介"
246 
247-#: html.c:1533
248+#: html.c:1611
249 msgid "Write about yourself here..."
250 msgstr "在这里介绍你自己..."
251 
252-#: html.c:1542
253+#: html.c:1620
254 msgid "Always show sensitive content"
255 msgstr "总是显示敏感内容"
256 
257-#: html.c:1544
258+#: html.c:1622
259 msgid "Email address for notifications:"
260 msgstr "用于通知的电子邮箱地址"
261 
262-#: html.c:1552
263+#: html.c:1630
264 msgid "Telegram notifications (bot key and chat id):"
265 msgstr "Telegram 通知(bot 密钥和聊天 ID)"
266 
267-#: html.c:1566
268+#: html.c:1644
269 msgid "ntfy notifications (ntfy server and token):"
270 msgstr "ntfy 通知(ntfy 服务器和令牌):"
271 
272-#: html.c:1588
273+#: html.c:1666
274 msgid "Maximum days to keep posts (0: server settings):"
275 msgstr "保存贴子的最大天数(0:服务器设置)"
276 
277-#: html.c:1602
278+#: html.c:1680
279 msgid "Drop direct messages from people you don't follow"
280 msgstr "丢弃你没有关注的人的私信"
281 
282-#: html.c:1611
283+#: html.c:1689
284 msgid "This account is a bot"
285 msgstr "此帐号是机器人"
286 
287-#: html.c:1620
288+#: html.c:1698
289 msgid "Auto-boost all mentions to this account"
290 msgstr "自动转发所有对此帐号的提及"
291 
292-#: html.c:1629
293+#: html.c:1707
294 msgid "This account is private (posts are not shown through the web)"
295 msgstr "这是一个私密帐号(贴子不会在网页中显示)"
296 
297-#: html.c:1639
298+#: html.c:1717
299 msgid "Collapse top threads by default"
300 msgstr "默认收起主题帖"
301 
302-#: html.c:1648
303+#: html.c:1726
304 msgid "Follow requests must be approved"
305 msgstr "关注请求必须经过审批"
306 
307-#: html.c:1657
308+#: html.c:1735
309 msgid "Publish follower and following metrics"
310 msgstr "展示关注者和正在关注的数量"
311 
312-#: html.c:1659
313+#: html.c:1737
314 msgid "Current location:"
315 msgstr "当前位置:"
316 
317-#: html.c:1673
318+#: html.c:1751
319 msgid "Profile metadata (key=value pairs in each line):"
320 msgstr "个人资料元数据(每行一条 键=值)"
321 
322-#: html.c:1684
323+#: html.c:1762
324 msgid "Web interface language:"
325 msgstr "网页界面语言:"
326 
327-#: html.c:1703
328+#: html.c:1781
329 msgid "New password:"
330 msgstr "新密码:"
331 
332-#: html.c:1710
333+#: html.c:1788
334 msgid "Repeat new password:"
335 msgstr "重复新密码:"
336 
337-#: html.c:1720
338+#: html.c:1798
339 msgid "Update user info"
340 msgstr "更新用户信息:"
341 
342-#: html.c:1731
343+#: html.c:1809
344 msgid "Followed hashtags..."
345 msgstr "关注的标签..."
346 
347-#: html.c:1733 html.c:1766
348+#: html.c:1811 html.c:1844
349 msgid "One hashtag per line"
350 msgstr "每行一个标签"
351 
352-#: html.c:1755 html.c:1787
353+#: html.c:1833 html.c:1865
354 msgid "Update hashtags"
355 msgstr "更新标签"
356 
357-#: html.c:1904
358+#: html.c:1982
359 msgid "Say you like this post"
360 msgstr "说你喜欢这个贴子"
361 
362-#: html.c:1909 html.c:4775
363+#: html.c:1987 html.c:5219
364 msgid "Unlike"
365 msgstr "不喜欢"
366 
367-#: html.c:1909
368+#: html.c:1987
369 msgid "Nah don't like it that much"
370 msgstr "啊,不怎么喜欢这个"
371 
372-#: html.c:1915 html.c:4912
373+#: html.c:1993 html.c:5356
374 msgid "Unpin"
375 msgstr "取消置顶"
376 
377-#: html.c:1915
378+#: html.c:1993
379 msgid "Unpin this post from your timeline"
380 msgstr "从你的时间线上取消置顶这个贴子"
381 
382-#: html.c:1918 html.c:4907
383+#: html.c:1996 html.c:5351
384 msgid "Pin"
385 msgstr "置顶"
386 
387-#: html.c:1918
388+#: html.c:1996
389 msgid "Pin this post to the top of your timeline"
390 msgstr "把这条贴子置顶在你的时间线上"
391 
392-#: html.c:1925
393+#: html.c:2003
394 msgid "Announce this post to your followers"
395 msgstr "向你的关注者宣布这条贴子"
396 
397-#: html.c:1930 html.c:4783
398+#: html.c:2008 html.c:5227
399 msgid "Unboost"
400 msgstr "取消转发"
401 
402-#: html.c:1930
403+#: html.c:2008
404 msgid "I regret I boosted this"
405 msgstr "我后悔转发这个了"
406 
407-#: html.c:1936 html.c:4922
408+#: html.c:2014 html.c:5366
409 msgid "Unbookmark"
410 msgstr "取消收藏"
411 
412-#: html.c:1936
413+#: html.c:2014
414 msgid "Delete this post from your bookmarks"
415 msgstr "从收藏夹中删除这个贴子"
416 
417-#: html.c:1939 html.c:4917
418+#: html.c:2017 html.c:5361
419 msgid "Bookmark"
420 msgstr "收藏"
421 
422-#: html.c:1939
423+#: html.c:2017
424 msgid "Add this post to your bookmarks"
425 msgstr "把这个贴子加入收藏夹"
426 
427-#: html.c:1945 html.c:3386 html.c:3577 html.c:4830
428+#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
429 msgid "Unfollow"
430 msgstr "取消关注"
431 
432-#: html.c:1945 html.c:3387
433+#: html.c:2023 html.c:3763 html.c:4042
434 msgid "Stop following this user's activity"
435 msgstr "停止关注此用户的动态"
436 
437-#: html.c:1949 html.c:3401
438+#: html.c:2027 html.c:3777 html.c:4044
439 msgid "Start following this user's activity"
440 msgstr "开始关注此用户的动态"
441 
442-#: html.c:1955 html.c:4860
443+#: html.c:2033 html.c:5304
444 msgid "Unfollow Group"
445 msgstr "取消关注群组"
446 
447-#: html.c:1956
448+#: html.c:2034
449 msgid "Stop following this group or channel"
450 msgstr "取消关注这个群组或频道"
451 
452-#: html.c:1960 html.c:4847
453+#: html.c:2038 html.c:5291
454 msgid "Follow Group"
455 msgstr "关注群组"
456 
457-#: html.c:1961
458+#: html.c:2039
459 msgid "Start following this group or channel"
460 msgstr "开始关注这个群组或频道"
461 
462-#: html.c:1966 html.c:3423 html.c:4791
463+#: html.c:2044 html.c:3799 html.c:5235
464 msgid "MUTE"
465 msgstr "静音"
466 
467-#: html.c:1967
468+#: html.c:2045
469 msgid "Block any activity from this user forever"
470 msgstr "永久屏蔽来自这个用户的任何动态"
471 
472-#: html.c:1972 html.c:3405 html.c:4877
473+#: html.c:2050 html.c:3781 html.c:5321
474 msgid "Delete"
475 msgstr "删除"
476 
477-#: html.c:1972
478+#: html.c:2050
479 msgid "Delete this post"
480 msgstr "删除这条贴子"
481 
482-#: html.c:1975 html.c:4799
483+#: html.c:2053 html.c:5243
484 msgid "Hide"
485 msgstr "隐藏"
486 
487-#: html.c:1975
488+#: html.c:2053
489 msgid "Hide this post and its children"
490 msgstr "删除这条贴子及其回复"
491 
492-#: html.c:2017
493+#: html.c:2095
494 msgid "Edit..."
495 msgstr "编辑..."
496 
497-#: html.c:2039
498+#: html.c:2133
499 msgid "Reply..."
500 msgstr "回复..."
501 
502-#: html.c:2090
503+#: html.c:2184
504 msgid "Truncated (too deep)"
505 msgstr "已被截断(太深了)"
506 
507-#: html.c:2108
508+#: html.c:2202
509 msgid "follows you"
510 msgstr "关注了你"
511 
512-#: html.c:2182
513+#: html.c:2276
514 msgid "Pinned"
515 msgstr "已置顶"
516 
517-#: html.c:2190
518+#: html.c:2284
519 msgid "Bookmarked"
520 msgstr "已收藏"
521 
522-#: html.c:2198
523+#: html.c:2292
524 msgid "Poll"
525 msgstr "投票"
526 
527-#: html.c:2205
528+#: html.c:2299
529 msgid "Voted"
530 msgstr "已投票"
531 
532-#: html.c:2214
533+#: html.c:2308
534 msgid "Event"
535 msgstr "事件"
536 
537-#: html.c:2246 html.c:2275
538+#: html.c:2340 html.c:2369
539 msgid "boosted"
540 msgstr "已转发"
541 
542-#: html.c:2289
543+#: html.c:2383
544 msgid "in reply to"
545 msgstr "回复给"
546 
547-#: html.c:2345
548+#: html.c:2439
549 msgid " [SENSITIVE CONTENT]"
550 msgstr "【敏感内容】"
551 
552-#: html.c:2512
553+#: html.c:2796
554 msgid "Vote"
555 msgstr "投票"
556 
557-#: html.c:2522
558+#: html.c:2806
559 msgid "Closed"
560 msgstr "已关闭"
561 
562-#: html.c:2547
563+#: html.c:2831
564 msgid "Closes in"
565 msgstr "距离关闭还有"
566 
567-#: html.c:2627
568+#: html.c:2911
569 msgid "Video"
570 msgstr "视频"
571 
572-#: html.c:2642
573+#: html.c:2926
574 msgid "Audio"
575 msgstr "音频"
576 
577-#: html.c:2670
578+#: html.c:2954
579 msgid "Attachment"
580 msgstr "附件"
581 
582-#: html.c:2684
583+#: html.c:2968
584 msgid "Alt..."
585 msgstr "描述..."
586 
587-#: html.c:2697
588+#: html.c:2981
589 msgid "Source channel or community"
590 msgstr "来源频道或者社群"
591 
592-#: html.c:2791
593+#: html.c:3075
594 msgid "Time: "
595 msgstr "时间:"
596 
597-#: html.c:2872
598+#: html.c:3156
599 msgid "Older..."
600 msgstr "更早的..."
601 
602-#: html.c:2974
603+#: html.c:3258
604 msgid "about this site"
605 msgstr "关于此站点"
606 
607-#: html.c:2976
608+#: html.c:3260
609 msgid "powered by "
610 msgstr "驱动自"
611 
612-#: html.c:3041
613+#: html.c:3329
614 msgid "Dismiss"
615 msgstr "忽略"
616 
617-#: html.c:3058
618+#: html.c:3346
619 #, c-format
620 msgid "Timeline for list '%s'"
621 msgstr "列表'%s'的时间线"
622 
623-#: html.c:3077 html.c:4169
624+#: html.c:3365 html.c:4589
625 msgid "Pinned posts"
626 msgstr "置顶的贴子"
627 
628-#: html.c:3089 html.c:4184
629+#: html.c:3377 html.c:4604
630 msgid "Bookmarked posts"
631 msgstr "收藏的贴子"
632 
633-#: html.c:3101 html.c:4199
634+#: html.c:3389 html.c:4619
635 msgid "Post drafts"
636 msgstr "贴子草稿"
637 
638-#: html.c:3177
639+#: html.c:3465
640 msgid "No more unseen posts"
641 msgstr "没有更多未读贴子了"
642 
643-#: html.c:3181 html.c:3290
644+#: html.c:3469 html.c:3578
645 msgid "Back to top"
646 msgstr "返回顶部"
647 
648-#: html.c:3243
649+#: html.c:3531
650 msgid "History"
651 msgstr "历史"
652 
653-#: html.c:3295 html.c:3734
654+#: html.c:3583 html.c:4149
655 msgid "More..."
656 msgstr "更多..."
657 
658-#: html.c:3391 html.c:4813
659+#: html.c:3767 html.c:5257
660 msgid "Unlimit"
661 msgstr "取消限制"
662 
663-#: html.c:3392
664+#: html.c:3768
665 msgid "Allow announces (boosts) from this user"
666 msgstr "允许来自这个用户的通知(转发)"
667 
668-#: html.c:3395 html.c:4809
669+#: html.c:3771 html.c:5253
670 msgid "Limit"
671 msgstr "限制"
672 
673-#: html.c:3396
674+#: html.c:3772
675 msgid "Block announces (boosts) from this user"
676 msgstr "屏蔽来自这个用户的通知(转发)"
677 
678-#: html.c:3405
679+#: html.c:3781
680 msgid "Delete this user"
681 msgstr "删除此用户"
682 
683-#: html.c:3410 html.c:4927
684+#: html.c:3786 html.c:5371
685 msgid "Approve"
686 msgstr "允许"
687 
688-#: html.c:3411
689+#: html.c:3787
690 msgid "Approve this follow request"
691 msgstr "允许这个关注请求"
692 
693-#: html.c:3414 html.c:4951
694+#: html.c:3790 html.c:5395
695 msgid "Discard"
696 msgstr "丢弃"
697 
698-#: html.c:3414
699+#: html.c:3790
700 msgid "Discard this follow request"
701 msgstr "丢弃这个关注请求"
702 
703-#: html.c:3419 html.c:4795
704+#: html.c:3795 html.c:5239
705 msgid "Unmute"
706 msgstr "取消静音"
707 
708-#: html.c:3420
709+#: html.c:3796
710 msgid "Stop blocking activities from this user"
711 msgstr "停止屏蔽来自此用户的动态"
712 
713-#: html.c:3424
714+#: html.c:3800
715 msgid "Block any activity from this user"
716 msgstr "屏蔽来自此用户的任何动态"
717 
718-#: html.c:3432
719+#: html.c:3808
720 msgid "Direct Message..."
721 msgstr "私信..."
722 
723-#: html.c:3467
724+#: html.c:3843
725 msgid "Pending follow confirmations"
726 msgstr "待处理的关注确认"
727 
728-#: html.c:3471
729+#: html.c:3847
730 msgid "People you follow"
731 msgstr "你关注的人"
732 
733-#: html.c:3472
734+#: html.c:3848
735 msgid "People that follow you"
736 msgstr "关注你的人"
737 
738-#: html.c:3511
739+#: html.c:3887
740 msgid "Clear all"
741 msgstr "清除全部"
742 
743-#: html.c:3571
744+#: html.c:3951
745 msgid "Mention"
746 msgstr "提及"
747 
748-#: html.c:3574
749+#: html.c:3954
750 msgid "Finished poll"
751 msgstr "结束投票"
752 
753-#: html.c:3590
754+#: html.c:3979
755 msgid "Follow Request"
756 msgstr "关注请求"
757 
758-#: html.c:3674
759+#: html.c:4089
760 msgid "Context"
761 msgstr "上下文"
762 
763-#: html.c:3692
764+#: html.c:4107
765 msgid "New"
766 msgstr "新建"
767 
768-#: html.c:3707
769+#: html.c:4122
770 msgid "Already seen"
771 msgstr "已经看过"
772 
773-#: html.c:3722
774+#: html.c:4137
775 msgid "None"
776 msgstr "没有"
777 
778-#: html.c:3994
779+#: html.c:4414
780 #, c-format
781 msgid "Search results for account %s"
782 msgstr "账户 %s 的搜索结果"
783 
784-#: html.c:4001
785+#: html.c:4421
786 #, c-format
787 msgid "Account %s not found"
788 msgstr "没有找到账户 %s"
789 
790-#: html.c:4032
791+#: html.c:4452
792 #, c-format
793 msgid "Search results for tag %s"
794 msgstr "标签 %s 的搜索结果"
795 
796-#: html.c:4032
797+#: html.c:4452
798 #, c-format
799 msgid "Nothing found for tag %s"
800 msgstr "没有找到标签'%s'的结果"
801 
802-#: html.c:4048
803+#: html.c:4468
804 #, c-format
805 msgid "Search results for '%s' (may be more)"
806 msgstr "'%s'的搜索结果(可能还有更多)"
807 
808-#: html.c:4051
809+#: html.c:4471
810 #, c-format
811 msgid "Search results for '%s'"
812 msgstr "'%s'的搜索结果"
813 
814-#: html.c:4054
815+#: html.c:4474
816 #, c-format
817 msgid "No more matches for '%s'"
818 msgstr "没有更多匹配'%s'的结果了"
819 
820-#: html.c:4056
821+#: html.c:4476
822 #, c-format
823 msgid "Nothing found for '%s'"
824 msgstr "没有找到'%s'的结果"
825 
826-#: html.c:4154
827+#: html.c:4574
828 msgid "Showing instance timeline"
829 msgstr "显示实例时间线"
830 
831-#: html.c:4237
832+#: html.c:4657
833 #, c-format
834 msgid "Showing timeline for list '%s'"
835 msgstr "显示列表'%s'的事件线"
836 
837-#: httpd.c:258
838+#: httpd.c:259
839 #, c-format
840 msgid "Search results for tag #%s"
841 msgstr "标签 #%s 的搜索结果"
842 
843-#: httpd.c:267
844+#: httpd.c:268
845 msgid "Recent posts by users in this instance"
846 msgstr "此实例上的用户最近的贴子"
847 
848-#: html.c:1764
849+#: html.c:1842
850 msgid "Blocked hashtags..."
851 msgstr "已屏蔽的话题标签"
852 
853-#: html.c:518
854+#: html.c:574
855 msgid "Optional URL to reply to"
856 msgstr "可选的回复的网址"
857 
858-#: html.c:695
859+#: html.c:751
860 msgid ""
861 "Option 1...\n"
862 "Option 2...\n"
863@@ -706,94 +706,106 @@ msgstr ""
864 "选项 3...\n"
865 "..."
866 
867-#: html.c:1558
868+#: html.c:1636
869 msgid "Bot API key"
870 msgstr "Bot API 密钥"
871 
872-#: html.c:1564
873+#: html.c:1642
874 msgid "Chat id"
875 msgstr "聊天 ID"
876 
877-#: html.c:1572
878+#: html.c:1650
879 msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
880 msgstr "ntfy 服务器 - 完整网址(例如:https://ntft.sh/YourTopic)"
881 
882-#: html.c:1578
883+#: html.c:1656
884 msgid "ntfy token - if needed"
885 msgstr "ntft 令牌 - 如果需要的话"
886 
887-#: html.c:3078
888+#: html.c:3366
889 msgid "pinned"
890 msgstr "置顶"
891 
892-#: html.c:3090
893+#: html.c:3378
894 msgid "bookmarks"
895 msgstr "收藏夹"
896 
897-#: html.c:3102
898+#: html.c:3390
899 msgid "drafts"
900 msgstr "草稿"
901 
902-#: html.c:584
903+#: html.c:640
904 msgid "Scheduled post..."
905 msgstr "计划发布定时贴文"
906 
907 msgid "Post date and time:"
908 msgstr "发布日期和时间"
909 
910-#: html.c:3113 html.c:4214
911+#: html.c:3401 html.c:4634
912 msgid "Scheduled posts"
913 msgstr "已发布的定时帖文"
914 
915-#: html.c:3114
916+#: html.c:3402
917 msgid "scheduled posts"
918 msgstr "计划发布定时贴文"
919 
920-#: html.c:578
921+#: html.c:634
922 #, c-format
923 msgid "Post date and time (timezone: %s):"
924 msgstr "发布日期和时间(时区: %s)"
925 
926-#: html.c:1689
927+#: html.c:1767
928 msgid "Time zone:"
929 msgstr "时区"
930 
931-#: html.c:559
932+#: html.c:615
933 msgid "Language:"
934 msgstr "语言"
935 
936-#: html.c:1580
937+#: html.c:1658
938 msgid "Notify webhook:"
939 msgstr ""
940 
941-#: html.c:1586
942+#: html.c:1664
943 msgid "http://example.com/webhook"
944 msgstr ""
945 
946-#: html.c:1694
947+#: html.c:1772
948 msgid "Languages you usually post in:"
949 msgstr "您通常使用的语言:"
950 
951-#: html.c:1700
952+#: html.c:1778
953 msgid "en fr es de_AT"
954 msgstr ""
955 
956-#: html.c:460
957+#: html.c:428
958 msgid "Visibility: "
959 msgstr ""
960 
961-#: html.c:468
962 msgid "Public"
963 msgstr ""
964 
965-#: html.c:477
966 msgid "Unlisted"
967 msgstr ""
968 
969-#: html.c:486
970 msgid "Followers-only"
971 msgstr ""
972 
973-#: html.c:495
974 msgid "Direct Message"
975 msgstr ""
976+
977+#: html.c:488 html.c:2534 html.c:2559 html.c:5177
978+msgid "EmojiUnreact"
979+msgstr ""
980+
981+#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
982+msgid "EmojiReact"
983+msgstr ""
984+
985+#: html.c:2115
986+msgid "Emoji react..."
987+msgstr ""
988+
989+#: html.c:2609
990+msgid "Emoji reactions: "
991+msgstr ""
M rss.c
+11, -3
 1@@ -1,5 +1,5 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
 5 
 6 #include "xs.h"
 7 #include "xs_html.h"
 8@@ -10,6 +10,7 @@
 9 #include "xs_openssl.h"
10 #include "xs_json.h"
11 #include "xs_http.h"
12+#include "xs_unicode.h"
13 
14 #include "snac.h"
15 
16@@ -59,7 +60,7 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
17         const char *content = xs_dict_get(msg, "content");
18         const char *published = xs_dict_get(msg, "published");
19 
20-        if (user && !xs_startswith(id, user->actor))
21+        if (user && !is_msg_mine(user, id))
22             continue;
23 
24         if (!id || !content || !published)
25@@ -74,7 +75,14 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
26         title = xs_regex_replace_i(title, "&[^;]+;", " ");
27         int i;
28 
29-        for (i = 0; title[i] && title[i] != '\n' && i < 50; i++);
30+        for (i = 0; title[i] && title[i] != '\n' && i < 50; ) {
31+            const char *p = &title[i];
32+            unsigned int cp = xs_utf8_dec(&p);
33+            int n = p - title;
34+            if (cp == 0xfffd || n > 50)
35+                break;
36+            i = n;
37+        }
38 
39         if (title[i] != '\0') {
40             title[i] = '\0';
M snac.c
+152, -1
  1@@ -1,5 +1,5 @@
  2 /* snac - A simple, minimalistic ActivityPub instance */
  3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
  4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  5 
  6 #define XS_IMPLEMENTATION
  7 
  8@@ -27,11 +27,15 @@
  9 #include "xs_html.h"
 10 #include "xs_po.h"
 11 #include "xs_webmention.h"
 12+#include "xs_list_tools.h"
 13 
 14 #include "snac.h"
 15 
 16 #include <sys/time.h>
 17 #include <sys/stat.h>
 18+#include <sys/wait.h>
 19+#include <limits.h>
 20+#include <stdlib.h>
 21 
 22 xs_str *srv_basedir = NULL;
 23 xs_dict *srv_config = NULL;
 24@@ -170,3 +174,150 @@ int check_password(const char *uid, const char *passwd, const char *hash)
 25 
 26     return ret;
 27 }
 28+
 29+
 30+int strip_media(const char *fn)
 31+/* strips EXIF data from a file */
 32+{
 33+    int ret = 0;
 34+
 35+    const xs_val *v = xs_dict_get(srv_config, "strip_exif");
 36+
 37+    if (xs_type(v) == XSTYPE_TRUE) {
 38+        /* Heuristic: find 'user/' in the path to make it relative */
 39+        /* This works for ~/user/..., /var/snac/user/..., etc. */
 40+        const char *r_fn = strstr(fn, "user/");
 41+        
 42+        if (r_fn == NULL) {
 43+            /* Fallback: try to strip ~/ if present */
 44+            if (strncmp(fn, "~/", 2) == 0)
 45+                r_fn = fn + 2;
 46+            else
 47+                r_fn = fn;
 48+        }
 49+
 50+        xs *l_fn = xs_tolower_i(xs_dup(r_fn));
 51+
 52+        /* check image extensions */
 53+        if (xs_endswith(l_fn, ".jpg") || xs_endswith(l_fn, ".jpeg") ||
 54+            xs_endswith(l_fn, ".png") || xs_endswith(l_fn, ".webp") ||
 55+            xs_endswith(l_fn, ".heic") || xs_endswith(l_fn, ".heif") ||
 56+            xs_endswith(l_fn, ".avif") || xs_endswith(l_fn, ".tiff") ||
 57+            xs_endswith(l_fn, ".gif")  || xs_endswith(l_fn, ".bmp")) {
 58+
 59+            const char *mp = xs_dict_get(srv_config, "mogrify_path");
 60+            if (mp == NULL)
 61+                mp = "mogrify";
 62+
 63+            xs *cmd = xs_fmt("cd \"%s\" && %s -auto-orient -strip \"%s\" 2>/dev/null", srv_basedir, mp, r_fn);
 64+
 65+            ret = system(cmd);
 66+
 67+            if (ret != 0) {
 68+                int code = 0;
 69+                if (WIFEXITED(ret))
 70+                    code = WEXITSTATUS(ret);
 71+                
 72+                if (code == 127)
 73+                    srv_log(xs_fmt("strip_media: error stripping %s. '%s' not found (exit 127). Set 'mogrify_path' in server.json.", r_fn, mp));
 74+                else
 75+                    srv_log(xs_fmt("strip_media: error stripping %s %d", r_fn, ret));
 76+            }
 77+            else
 78+                srv_debug(1, xs_fmt("strip_media: stripped %s", r_fn));
 79+        }
 80+        else
 81+        /* check video extensions */
 82+        if (xs_endswith(l_fn, ".mp4") || xs_endswith(l_fn, ".m4v") ||
 83+            xs_endswith(l_fn, ".mov") || xs_endswith(l_fn, ".webm") ||
 84+            xs_endswith(l_fn, ".mkv") || xs_endswith(l_fn, ".avi")) {
 85+
 86+            const char *fp = xs_dict_get(srv_config, "ffmpeg_path");
 87+            if (fp == NULL)
 88+                fp = "ffmpeg";
 89+
 90+            /* ffmpeg cannot modify in-place, so we need a temp file */
 91+            /* we must preserve valid extension for ffmpeg to guess the format */
 92+            const char *ext = strrchr(r_fn, '.');
 93+            if (ext == NULL) ext = "";
 94+            xs *tmp_fn = xs_fmt("%s.tmp%s", r_fn, ext);
 95+            
 96+            /* -map_metadata -1 strips all global metadata */
 97+            /* -c copy copies input streams without re-encoding */
 98+            /* we don't silence stderr so we can debug issues */
 99+            /* we explicitly cd to srv_basedir to ensure relative paths work */
100+            xs *cmd = xs_fmt("cd \"%s\" && %s -y -i \"%s\" -map_metadata -1 -c copy \"%s\"", srv_basedir, fp, r_fn, tmp_fn);
101+
102+            ret = system(cmd);
103+
104+            if (ret != 0) {
105+                int code = 0;
106+                if (WIFEXITED(ret))
107+                    code = WEXITSTATUS(ret);
108+                
109+                if (code == 127)
110+                    srv_log(xs_fmt("strip_media: error stripping %s. '%s' not found (exit 127). Set 'ffmpeg_path' in server.json.", r_fn, fp));
111+                else {
112+                    srv_log(xs_fmt("strip_media: error stripping %s %d", r_fn, ret));
113+                    srv_log(xs_fmt("strip_media: command was: %s", cmd));
114+                }
115+                
116+                /* try to cleanup, just in case */
117+                /* unlink needs full path too if we are not in basedir */
118+                xs *full_tmp_fn = xs_fmt("%s/%s", srv_basedir, tmp_fn);
119+                unlink(full_tmp_fn);
120+            }
121+            else {
122+                /* rename tmp file to original */
123+                /* use full path for source because it was created relative to basedir */
124+                xs *full_tmp_fn = xs_fmt("%s/%s", srv_basedir, tmp_fn);
125+                
126+                if (rename(full_tmp_fn, fn) == 0)
127+                    srv_debug(1, xs_fmt("strip_media: stripped %s", fn));
128+                else
129+                    srv_log(xs_fmt("strip_media: error renaming %s to %s", full_tmp_fn, fn));
130+            }
131+        }
132+    }
133+
134+    return ret;
135+}
136+
137+
138+int check_strip_tool(void)
139+{
140+    const xs_val *v = xs_dict_get(srv_config, "strip_exif");
141+    int ret = 1;
142+
143+    if (xs_type(v) == XSTYPE_TRUE) {
144+        /* check mogrify */
145+        {
146+            const char *mp = xs_dict_get(srv_config, "mogrify_path");
147+            if (mp == NULL)
148+                mp = "mogrify";
149+
150+            xs *cmd = xs_fmt("%s -version 2>/dev/null >/dev/null", mp);
151+            
152+            if (system(cmd) != 0) {
153+                srv_log(xs_fmt("check_strip_tool: '%s' not working", mp));
154+                ret = 0;
155+            }
156+        }
157+
158+        /* check ffmpeg */
159+        if (ret) {
160+            const char *fp = xs_dict_get(srv_config, "ffmpeg_path");
161+            if (fp == NULL)
162+                fp = "ffmpeg";
163+
164+            xs *cmd = xs_fmt("%s -version 2>/dev/null >/dev/null", fp);
165+            
166+            if (system(cmd) != 0) {
167+                srv_log(xs_fmt("check_strip_tool: '%s' not working", fp));
168+                ret = 0;
169+            }
170+        }
171+    }
172+
173+    return ret;
174+}
M snac.h
+19, -4
 1@@ -1,7 +1,7 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 5 
 6-#define VERSION "2.85-dev"
 7+#define VERSION "2.89"
 8 
 9 #define USER_AGENT "snac/" VERSION
10 
11@@ -105,6 +105,9 @@ int validate_uid(const char *uid);
12 xs_str *hash_password(const char *uid, const char *passwd, const char *nonce);
13 int check_password(const char *uid, const char *passwd, const char *hash);
14 
15+int strip_media(const char *fn);
16+int check_strip_tool(void);
17+
18 void srv_archive(const char *direction, const char *url, xs_dict *req,
19                  const char *payload, int p_size,
20                  int status, xs_dict *headers,
21@@ -146,12 +149,15 @@ void object_touch(const char *id);
22 int object_admire(const char *id, const char *actor, int like);
23 int object_unadmire(const char *id, const char *actor, int like);
24 
25+int object_emoji_react(const char *mid, const char *eid);
26+int object_rm_emoji_react(const char *mid, const char *eid);
27 int object_likes_len(const char *id);
28 int object_announces_len(const char *id);
29 
30 xs_list *object_children(const char *id);
31 xs_list *object_likes(const char *id);
32 xs_list *object_announces(const char *id);
33+xs_list *object_get_emoji_reacts(const char *id);
34 int object_parent(const char *md5, char parent[MD5_HEX_SIZE]);
35 
36 int object_user_cache_add(snac *snac, const char *id, const char *cachedir);
37@@ -180,7 +186,8 @@ xs_str *user_index_fn(snac *user, const char *idx_name);
38 xs_list *timeline_simple_list(snac *user, const char *idx_name, int skip, int show, int *more);
39 xs_list *timeline_list(snac *snac, const char *idx_name, int skip, int show, int *more);
40 int timeline_add(snac *snac, const char *id, const xs_dict *o_msg);
41-int timeline_admire(snac *snac, const char *id, const char *admirer, int like);
42+int timeline_admire(snac *snac, const char *id, const char *admirer, int like, const xs_dict *msg);
43+int timeline_emoji_react(const char *atto, const char *id, const xs_dict *o_msg);
44 
45 xs_list *timeline_top_level(snac *snac, const xs_list *list);
46 void timeline_add_mark(snac *user);
47@@ -201,6 +208,8 @@ void unmute(snac *snac, const char *actor);
48 int is_muted(snac *snac, const char *actor);
49 xs_list *muted_list(snac *user);
50 
51+xs_str *emoji_reacted(snac *user, const char *id);
52+
53 int is_bookmarked(snac *user, const char *id);
54 int bookmark(snac *user, const char *id);
55 int unbookmark(snac *user, const char *id);
56@@ -358,6 +367,8 @@ xs_list *get_attachments(const xs_dict *msg);
57 
58 xs_dict *msg_admiration(snac *snac, const char *object, const char *type);
59 xs_dict *msg_repulsion(snac *user, const char *id, const char *type);
60+xs_dict *msg_emoji_init(snac *user, const char *mid, const char *eid);
61+xs_dict *msg_emoji_unreact(snac *user, const char *id, const char *type);
62 xs_dict *msg_create(snac *snac, const xs_dict *object);
63 xs_dict *msg_follow(snac *snac, const char *actor);
64 
65@@ -388,6 +399,7 @@ int send_to_inbox(snac *snac, const xs_str *inbox, const xs_dict *msg,
66 xs_str *get_actor_inbox(const char *actor, int shared);
67 int send_to_actor(snac *snac, const char *actor, const xs_dict *msg,
68                   xs_val **payload, int *p_size, int timeout);
69+int is_msg_mine(snac *user, const char *id);
70 int is_msg_public(const xs_dict *msg);
71 int is_msg_from_private_user(const xs_dict *msg);
72 int is_msg_for_me(snac *snac, const xs_dict *msg);
73@@ -403,6 +415,7 @@ int activitypub_post_handler(const xs_dict *req, const char *q_path,
74                              char **body, int *b_size, char **ctype);
75 
76 xs_dict *emojis(void);
77+xs_dict *emojis_rm_categories(void);
78 xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy);
79 xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag);
80 xs_str *sanitize(const char *content);
81@@ -410,7 +423,7 @@ xs_str *encode_html(const char *str);
82 
83 xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
84                       int skip, int show, int show_more,
85-                      const char *title, const char *page, int utl, const char *error);
86+                      const char *title, const char *page, int utl, const char *error, int terse);
87 
88 int html_get_handler(const xs_dict *req, const char *q_path,
89                      char **body, int *b_size, char **ctype,
90@@ -485,3 +498,5 @@ void rss_to_timeline(snac *user, const char *url);
91 void rss_poll_hashtags(void);
92 
93 void data_fsck(void);
94+
95+xs_list *user_top_ten(snac *user, int count);
+2, -2
 1@@ -1,5 +1,5 @@
 2 /* snac - A simple, minimalistic ActivityPub instance */
 3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 5 
 6 #include "xs.h"
 7 #include "xs_io.h"
 8@@ -213,7 +213,7 @@ int snac_upgrade(xs_str **error)
 9                             object_add_ow(id, o);
10 
11                             /* if it's from us, add to public */
12-                            if (xs_startswith(id, snac.actor)) {
13+                            if (is_msg_mine(&snac, id)) {
14                                 const xs_list *p;
15                                 const char *v;
16                                 int c;
+77, -1
  1@@ -1,5 +1,5 @@
  2 /* snac - A simple, minimalistic ActivityPub instance */
  3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
  4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  5 
  6 #include "xs.h"
  7 #include "xs_io.h"
  8@@ -11,6 +11,8 @@
  9 #include "xs_curl.h"
 10 #include "xs_regex.h"
 11 #include "xs_http.h"
 12+#include "xs_list_tools.h"
 13+#include "xs_set.h"
 14 
 15 #include "snac.h"
 16 
 17@@ -78,11 +80,15 @@ static const char * const default_css =
 18     ".snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px;\n"
 19     "  margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; }\n"
 20     ".snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; }\n"
 21+    ".snac-reaction { padding:5px; padding-left: 10px; padding-right: 10px; display: inline-flex; margin-right: 5px; font-family: inherit; font-size: medium; height: 2.5rem; vertical-align:middle; align-items:center;}\n"
 22+    ".snac-reaction-image { max-width: 100%; max-height: 100%; }\n"
 23+    ".snac-reaction-div { border-left: darkgray; border-left-style: solid; margin-bottom: .3em; padding-left: .3em; border-left-width: 2px; }\n"
 24     "@media (prefers-color-scheme: dark) { \n"
 25     "  body, input, textarea { background-color: #000; color: #fff; }\n"
 26     "  a { color: #7799dd }\n"
 27     "  a:visited { color: #aa99dd }\n"
 28     "}\n"
 29+    "select { max-width: 40%; }\n"
 30 ;
 31 
 32 const char *snac_blurb =
 33@@ -999,6 +1005,76 @@ void import_csv(snac *user)
 34         snac_log(user, xs_fmt("Cannot open file %s", fn));
 35 }
 36 
 37+
 38+static int top_ten_sort(const void *v1, const void *v2)
 39+{
 40+    const xs_list *l1 = *(const xs_list **)v1;
 41+    const xs_list *l2 = *(const xs_list **)v2;
 42+
 43+    const char *c1 = xs_list_get(l1, 3);
 44+    const char *c2 = xs_list_get(l2, 3);
 45+
 46+    return xs_cmp(c2, c1);
 47+}
 48+
 49+
 50+xs_list *user_top_ten(snac *user, int count)
 51+/* returns the top ten more popular posts by a user */
 52+{
 53+    xs *idx  = xs_fmt("%s/private.idx", user->basedir);
 54+    xs *list = index_list(idx, XS_ALL);
 55+    xs *u_list = xs_list_new();
 56+    xs_set u;
 57+
 58+    xs_set_init(&u);
 59+
 60+    const char *md5;
 61+
 62+    xs_list_foreach(list, md5) {
 63+        xs *obj = NULL;
 64+
 65+        if (!valid_status(object_get_by_md5(md5, &obj)))
 66+            continue;
 67+
 68+        const char *id = xs_dict_get_def(obj, "id", "-");
 69+
 70+        if (!is_msg_mine(user, id))
 71+            continue;
 72+
 73+        if (xs_set_add(&u, id) != 1)
 74+            continue;
 75+
 76+        /* get metrics */
 77+        int ls = object_likes_len(id);
 78+        int as = object_announces_len(id);
 79+
 80+        /* build the entry and convert to list */
 81+        xs *s = xs_fmt("%s\t%d\t%d\t%010d", id, ls, as, ls + as);
 82+        xs *l = xs_split(s, "\t");
 83+
 84+        u_list = xs_list_append(u_list, l);
 85+    }
 86+
 87+    /* sort by the sum of likes and boosts */
 88+    xs *s_list = xs_list_sort(u_list, top_ten_sort);
 89+
 90+    xs_list *r = xs_list_new();
 91+    const xs_list *i;
 92+
 93+    xs_list_foreach(s_list, i) {
 94+        r = xs_list_append(r, i);
 95+
 96+        if (--count <= 0)
 97+            break;
 98+    }
 99+
100+    xs_set_free(&u);
101+
102+    return r;
103+}
104+
105+
106+
107 static const struct {
108     const char *proto;
109     unsigned short default_port;
+1, -1
1@@ -1,5 +1,5 @@
2 /* snac - A simple, minimalistic ActivityPub instance */
3-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
4+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
5 
6 #include "xs.h"
7 #include "xs_json.h"
M xs.h
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_CURL_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 /*
6     This is an intentionally-dead-simple FastCGI implementation;
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_GLOB_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_HEX_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_HTML_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_HTTP_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_HTTPD_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_IO_H
6 
+3, -1
 1@@ -1,4 +1,4 @@
 2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 4 
 5 #ifndef _XS_JSON_H
 6 
 7@@ -28,6 +28,8 @@ int xs_json_load_object(FILE *f, int maxdepth, xs_dict **d);
 8 
 9 /** IMPLEMENTATION **/
10 
11+#include "xs_unicode.h"
12+
13 /** JSON dumps **/
14 
15 static void _xs_json_dump_str(const char *data, FILE *f)
+169, -0
  1@@ -0,0 +1,169 @@
  2+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
  3+
  4+#ifndef _XS_LIST_TOOLS_H
  5+
  6+#define _XS_LIST_TOOLS_H
  7+
  8+ xs_list *xs_list_insert_sorted(xs_list *list, const xs_val *nv);
  9+ xs_list *xs_list_reverse(const xs_list *l);
 10+ xs_val **xs_list_to_array(const xs_list *l, int *len);
 11+ int xs_list_sort_cmp(const void *p1, const void *p2);
 12+ int xs_list_sort_inv_cmp(const void *p1, const void *p2);
 13+ int xs_list_sort_dict_cmp(const char *field, const void *p1, const void *p2);
 14+ xs_list *xs_list_sort(const xs_list *l, int (*cmp)(const void *, const void *));
 15+ xs_list *xs_list_shuffle(const xs_list *l);
 16+
 17+#ifdef XS_IMPLEMENTATION
 18+
 19+#include "xs_random.h"
 20+
 21+xs_list *xs_list_insert_sorted(xs_list *list, const xs_val *nv)
 22+/* inserts a string in the list in its ordered position */
 23+{
 24+    XS_ASSERT_TYPE(list, XSTYPE_LIST);
 25+
 26+    int offset = xs_size(list);
 27+
 28+    const xs_val *v;
 29+    xs_list_foreach(list, v) {
 30+        /* if this element is greater or equal, insert here */
 31+        if (xs_cmp(v, nv) >= 0) {
 32+            offset = v - list;
 33+            break;
 34+        }
 35+    }
 36+
 37+    return _xs_list_write_litem(list, offset - 1, nv, xs_size(nv));
 38+}
 39+
 40+
 41+xs_list *xs_list_reverse(const xs_list *l)
 42+/* creates a new list as a reverse version of l */
 43+{
 44+    xs_list *n = xs_dup(l);
 45+    const xs_val *v;
 46+
 47+    /* move to one byte before the EOM */
 48+    char *p = n + xs_size(n) - 1;
 49+
 50+    xs_list_foreach(l, v) {
 51+        /* size of v, plus the LITEM */
 52+        int z = xs_size(v) + 1;
 53+
 54+        p -= z;
 55+
 56+        /* copy v, including its LITEM */
 57+        memcpy(p, v - 1, z);
 58+    }
 59+
 60+    return n;
 61+}
 62+
 63+
 64+xs_val **xs_list_to_array(const xs_list *l, int *len)
 65+/* converts a list to an array of values */
 66+/* must be freed after use */
 67+{
 68+    *len = xs_list_len(l);
 69+    xs_val **a = xs_realloc(NULL, *len * sizeof(xs_val *));
 70+    const xs_val *v;
 71+    int n = 0;
 72+
 73+    xs_list_foreach(l, v)
 74+        a[n++] = (xs_val *)v;
 75+
 76+    return a;
 77+}
 78+
 79+
 80+int xs_list_sort_cmp(const void *p1, const void *p2)
 81+/* default list sorting function */
 82+{
 83+    const xs_val *v1 = *(xs_val **)p1;
 84+    const xs_val *v2 = *(xs_val **)p2;
 85+
 86+    return xs_cmp(v1, v2);
 87+}
 88+
 89+
 90+int xs_list_sort_inv_cmp(const void *p1, const void *p2)
 91+/* default list inverse sorting function */
 92+{
 93+    const xs_val *v1 = *(xs_val **)p1;
 94+    const xs_val *v2 = *(xs_val **)p2;
 95+
 96+    return xs_cmp(v2, v1);
 97+}
 98+
 99+
100+int xs_list_sort_dict_cmp(const char *field, const void *p1, const void *p2)
101+/* compare sorting function for a field an array of dicts */
102+{
103+    const xs_dict *d1 = *(xs_val **)p1;
104+    const xs_dict *d2 = *(xs_val **)p2;
105+
106+    if (xs_type(d1) != XSTYPE_DICT || xs_type(d2) != XSTYPE_DICT)
107+        return 0;
108+
109+    return xs_cmp(xs_dict_get_def(d1, field, ""),
110+                  xs_dict_get_def(d2, field, ""));
111+}
112+
113+
114+xs_list *xs_list_sort(const xs_list *l, int (*cmp)(const void *, const void *))
115+/* returns a sorted copy of l. cmp can be null for standard sorting */
116+{
117+    int sz;
118+    xs_val **a = xs_list_to_array(l, &sz);
119+    xs_list *nl = xs_dup(l);
120+    char *p = nl + 1 + _XS_TYPE_SIZE;
121+
122+    /* sort the array */
123+    qsort(a, sz, sizeof(xs_val *), cmp ? cmp : xs_list_sort_cmp);
124+
125+    /* transfer the sorted list over the copy */
126+    for (int n = 0; n < sz; n++) {
127+        /* get the litem */
128+        const char *e = a[n] - 1;
129+        int z = xs_size(e);
130+
131+        memcpy(p, e, z);
132+        p += z;
133+    }
134+
135+    xs_free(a);
136+
137+    return nl;
138+}
139+
140+
141+xs_list *xs_list_shuffle(const xs_list *l)
142+/* returns a shuffled list */
143+{
144+    int sz;
145+    xs_val **a = xs_list_to_array(l, &sz);
146+    xs_list *nl = xs_list_new();
147+    unsigned int seed = 0;
148+
149+    xs_rnd_buf(&seed, sizeof(seed));
150+
151+    /* shuffle */
152+    for (int n = sz - 1; n > 0; n--) {
153+        int m = xs_rnd_int32_d(&seed) % n;
154+        void *p = a[n];
155+        a[n] = a[m];
156+        a[m] = p;
157+    }
158+
159+    for (int n = 0; n < sz; n++)
160+        nl = xs_list_append(nl, a[n]);
161+
162+    xs_free(a);
163+
164+    return nl;
165+}
166+
167+
168+#endif /* XS_IMPLEMENTATION */
169+
170+#endif /* XS_LIST_TOOLS_H */
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_MATCH_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_MIME_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_OPENSSL_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_PO_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_RANDOM_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_REGEX_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_SET_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_SOCKET_H
6 
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_TIME_H
6 
+8, -1
 1@@ -1,4 +1,4 @@
 2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 4 
 5 #ifndef _XS_UNICODE_H
 6 
 7@@ -22,6 +22,7 @@
 8  int xs_unicode_nfc(unsigned int base, unsigned int diac, unsigned int *cpoint);
 9  int xs_unicode_is_alpha(unsigned int cpoint);
10  int xs_unicode_is_right_to_left(unsigned int cpoint);
11+ int xs_is_emoji(unsigned int cpoint);
12 
13 #ifdef _XS_H
14  xs_str *xs_utf8_insert(xs_str *str, unsigned int cpoint, int *offset);
15@@ -134,6 +135,12 @@ static unsigned int xs_unicode_width_table[] = {
16     0x20000,    0x2fffd,    2       /* more CJK */
17 };
18 
19+/* magic number from https://en.wikipedia.org/wiki/Emoji#Unicode_blocks */
20+int xs_is_emoji(unsigned int cpoint) {
21+/* returns wether the input is an utf8 emoji */
22+    return cpoint > 0x00A9 && cpoint < 0x1ffff;
23+}
24+
25 int xs_unicode_width(unsigned int cpoint)
26 /* returns the width in columns of a Unicode codepoint (somewhat simplified) */
27 {
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_UNIX_SOCKET_H
6 
+34, -1
 1@@ -1,4 +1,4 @@
 2-/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
 3+/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
 4 
 5 #ifndef _XS_URL_H
 6 
 7@@ -6,6 +6,7 @@
 8 
 9 xs_str *xs_url_dec(const char *str);
10 xs_str *xs_url_enc(const char *str);
11+xs_str *xs_url_dec_emoji(const char *str);
12 xs_dict *xs_url_vars(const char *str);
13 xs_dict *xs_multipart_form_data(const char *payload, int p_size, const char *header);
14 
15@@ -79,6 +80,38 @@ xs_str *xs_url_dec(const char *str)
16 }
17 
18 
19+xs_str *xs_url_dec_emoji(const char *str)
20+/* decodes an URL, returns NULL if not every char is an encoded hex */
21+{
22+    xs_str *s = xs_str_new(NULL);
23+
24+    while (*str) {
25+        if (!xs_is_string(str))
26+            break;
27+
28+        if (*str == '%') {
29+            unsigned int i;
30+
31+            if (sscanf(str + 1, "%02x", &i) == 1) {
32+                unsigned char uc = i;
33+
34+                if (!xs_is_string((char *)&uc))
35+                    break;
36+
37+                s = xs_append_m(s, (char *)&uc, 1);
38+                str += 2;
39+            }
40+        }
41+        else
42+            return NULL;
43+
44+        str++;
45+    }
46+
47+    return s;
48+}
49+
50+
51 xs_str *xs_url_enc(const char *str)
52 /* URL-encodes a string (RFC 3986) */
53 {
+1, -1
1@@ -1 +1 @@
2-/* 0a8b987d7bb945fe7844411727d03ac73f417455 2025-10-14T05:21:05+02:00 */
3+/* 270f9376eabd4f8e0ed3ae22a1f8eb6e06ea8b8b 2026-01-10T20:39:12+01:00 */
+1, -1
1@@ -1,4 +1,4 @@
2-/* copyright (c) 2025 grunfink et al. / MIT license */
3+/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
4 
5 #ifndef _XS_WEBMENTION_H
6