summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar byte2026-01-24 21:33:30 +0100
committerGravatar byte2026-01-24 21:33:30 +0100
commitbfd071c63826f4d13d48614cedebfb2f8ea20cf6 (patch)
tree8cc9b766b88fa66d051e55d65d6694570553a17b
parentAdded a Follow/Unfollow button next to a new follow notification. (diff)
parentMerge pull request 'add susie-q (qr) to artwork' (#528) from pmjv/snac2:maste... (diff)
downloadsnac2-bfd071c63826f4d13d48614cedebfb2f8ea20cf6.tar.gz
snac2-bfd071c63826f4d13d48614cedebfb2f8ea20cf6.tar.xz
snac2-bfd071c63826f4d13d48614cedebfb2f8ea20cf6.zip
Merge pull request 'master' (#7) from grunfink/snac2:master into main
Reviewed-on: https://codeberg.org/byte/snac2/pulls/7
-rw-r--r--FEDERATION.md2
-rw-r--r--LICENSE2
-rw-r--r--Makefile8
-rw-r--r--Makefile.NetBSD8
-rw-r--r--RELEASE_NOTES.md52
-rw-r--r--TODO.md16
-rw-r--r--activitypub.c209
-rw-r--r--artwork/susie-q.pngbin0 -> 1305 bytes
-rw-r--r--data.c162
-rw-r--r--doc/snac.115
-rw-r--r--doc/snac.818
-rw-r--r--doc/style.css6
-rw-r--r--format.c25
-rw-r--r--html.c781
-rw-r--r--http.c2
-rw-r--r--httpd.c6
-rw-r--r--main.c42
-rw-r--r--mastoapi.c342
-rw-r--r--po/cs.po426
-rw-r--r--po/de_DE.po392
-rw-r--r--po/el_GR.po392
-rw-r--r--po/en.po392
-rw-r--r--po/es.po392
-rw-r--r--po/es_AR.po392
-rw-r--r--po/es_UY.po392
-rw-r--r--po/fi.po392
-rw-r--r--po/fr.po392
-rw-r--r--po/fy_NL.po392
-rw-r--r--po/it.po392
-rw-r--r--po/nl_NL.po392
-rw-r--r--po/pt_BR.po396
-rw-r--r--po/ru.po392
-rw-r--r--po/uk.po392
-rw-r--r--po/zh.po392
-rw-r--r--rss.c14
-rw-r--r--snac.c153
-rw-r--r--snac.h23
-rw-r--r--upgrade.c4
-rw-r--r--utils.c78
-rw-r--r--webfinger.c2
-rw-r--r--xs.h2
-rw-r--r--xs_curl.h2
-rw-r--r--xs_fcgi.h2
-rw-r--r--xs_glob.h2
-rw-r--r--xs_hex.h2
-rw-r--r--xs_html.h2
-rw-r--r--xs_http.h2
-rw-r--r--xs_httpd.h2
-rw-r--r--xs_io.h2
-rw-r--r--xs_json.h4
-rw-r--r--xs_list_tools.h169
-rw-r--r--xs_match.h2
-rw-r--r--xs_mime.h2
-rw-r--r--xs_openssl.h2
-rw-r--r--xs_po.h2
-rw-r--r--xs_random.h2
-rw-r--r--xs_regex.h2
-rw-r--r--xs_set.h2
-rw-r--r--xs_socket.h2
-rw-r--r--xs_time.h2
-rw-r--r--xs_unicode.h9
-rw-r--r--xs_unix_socket.h2
-rw-r--r--xs_url.h35
-rw-r--r--xs_version.h2
-rw-r--r--xs_webmention.h2
65 files changed, 5223 insertions, 3316 deletions
diff --git a/FEDERATION.md b/FEDERATION.md
index 3e7ea31..02c97c1 100644
--- a/FEDERATION.md
+++ b/FEDERATION.md
@@ -37,7 +37,7 @@
37### Supported activities and objects 37### Supported activities and objects
38 38
39- **Inbound**: `Follow`, `Accept`, `Create`, `Update`, `Delete`, `Announce`, `Like`, `EmojiReact`, `Undo` (for Follow/Like/Announce), and `Move` covering `Note`, `Question`, `Page`, `Article`, `Event`, and `Video`. 39- **Inbound**: `Follow`, `Accept`, `Create`, `Update`, `Delete`, `Announce`, `Like`, `EmojiReact`, `Undo` (for Follow/Like/Announce), and `Move` covering `Note`, `Question`, `Page`, `Article`, `Event`, and `Video`.
40- **Outbound**: the same set, except for `EmojiReact` (normalised into `Like` internally) and `Create` currently emits `Note` and `Question` objects. 40- **Outbound**: the same set. `Create` currently emits `Note` and `Question` objects.
41- Ordered collections: outboxes present the latest entries; follower/following collections hide membership by default. 41- Ordered collections: outboxes present the latest entries; follower/following collections hide membership by default.
42 42
43### Delivery and moderation 43### Delivery and moderation
diff --git a/LICENSE b/LICENSE
index 702b487..3fa58d1 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
1MIT License 1MIT License
2 2
3Copyright (c) 2022 - 2025 grunfink et al. (Fediverse: @grunfink@comam.es) 3Copyright (c) 2022 - 2026 grunfink et al. (Fediverse: @grunfink@comam.es)
4 4
5Permission 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: 5Permission 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:
6 6
diff --git a/Makefile b/Makefile
index ffeac1a..5614388 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ update-po:
46 xgettext --omit-header -j -o $$a --language=C --keyword=L --from-code=utf-8 *.c ; \ 46 xgettext --omit-header -j -o $$a --language=C --keyword=L --from-code=utf-8 *.c ; \
47 done 47 done
48 48
49activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \ 49activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_url.h xs_mime.h \
50 xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \ 50 xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \
51 xs_webmention.h xs_http.h xs_http_codes.h snac.h 51 xs_webmention.h xs_http.h xs_http_codes.h snac.h
52data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \ 52data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \
@@ -68,16 +68,16 @@ mastoapi.o: mastoapi.c xs.h xs_hex.h xs_openssl.h xs_json.h xs_io.h \
68 xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \ 68 xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \
69 xs_unicode.h xs_http.h xs_http_codes.h snac.h 69 xs_unicode.h xs_http.h xs_http_codes.h snac.h
70rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \ 70rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \
71 xs_openssl.h xs_json.h xs_http.h xs_http_codes.h snac.h 71 xs_openssl.h xs_json.h xs_http.h xs_http_codes.h xs_unicode.h snac.h
72sandbox.o: sandbox.c xs.h snac.h 72sandbox.o: sandbox.c xs.h snac.h
73snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \ 73snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \
74 xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \ 74 xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \
75 xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \ 75 xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \
76 xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \ 76 xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \
77 xs_webmention.h snac.h 77 xs_webmention.h xs_list_tools.h snac.h
78upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h 78upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
79utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \ 79utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \
80 xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \ 80 xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \
81 snac.h 81 xs_list_tools.h xs_set.h snac.h
82webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \ 82webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \
83 xs_http_codes.h snac.h 83 xs_http_codes.h snac.h
diff --git a/Makefile.NetBSD b/Makefile.NetBSD
index b5005ee..e752910 100644
--- a/Makefile.NetBSD
+++ b/Makefile.NetBSD
@@ -35,7 +35,7 @@ uninstall:
35 rm $(PREFIX_MAN)/man5/snac.5 35 rm $(PREFIX_MAN)/man5/snac.5
36 rm $(PREFIX_MAN)/man8/snac.8 36 rm $(PREFIX_MAN)/man8/snac.8
37 37
38activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \ 38activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_url.h xs_mime.h \
39 xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \ 39 xs_openssl.h xs_regex.h xs_time.h xs_set.h xs_match.h xs_unicode.h \
40 xs_webmention.h xs_http.h xs_http_codes.h snac.h 40 xs_webmention.h xs_http.h xs_http_codes.h snac.h
41data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \ 41data.o: data.c xs.h xs_hex.h xs_io.h xs_json.h xs_openssl.h xs_glob.h \
@@ -57,16 +57,16 @@ mastoapi.o: mastoapi.c xs.h xs_hex.h xs_openssl.h xs_json.h xs_io.h \
57 xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \ 57 xs_time.h xs_glob.h xs_set.h xs_random.h xs_url.h xs_mime.h xs_match.h \
58 xs_unicode.h xs_http.h xs_http_codes.h snac.h 58 xs_unicode.h xs_http.h xs_http_codes.h snac.h
59rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \ 59rss.o: rss.c xs.h xs_html.h xs_regex.h xs_time.h xs_match.h xs_curl.h \
60 xs_openssl.h xs_json.h xs_http.h xs_http_codes.h snac.h 60 xs_openssl.h xs_json.h xs_http.h xs_http_codes.h xs_unicode.h snac.h
61sandbox.o: sandbox.c xs.h snac.h 61sandbox.o: sandbox.c xs.h snac.h
62snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \ 62snac.o: snac.c xs.h xs_hex.h xs_io.h xs_unicode_tbl.h xs_unicode.h \
63 xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \ 63 xs_json.h xs_curl.h xs_openssl.h xs_socket.h xs_unix_socket.h xs_url.h \
64 xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \ 64 xs_http.h xs_http_codes.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h \
65 xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \ 65 xs_time.h xs_glob.h xs_random.h xs_match.h xs_fcgi.h xs_html.h xs_po.h \
66 xs_webmention.h snac.h 66 xs_webmention.h xs_list_tools.h snac.h
67upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h 67upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
68utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \ 68utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h \
69 xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \ 69 xs_random.h xs_glob.h xs_curl.h xs_regex.h xs_http.h xs_http_codes.h \
70 snac.h 70 xs_list_tools.h xs_set.h snac.h
71webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \ 71webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h xs_mime.h xs_http.h \
72 xs_http_codes.h snac.h 72 xs_http_codes.h snac.h
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index ba86212..9f2ffd6 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,13 +1,63 @@
1# Release Notes 1# Release Notes
2 2
3## UNRELEASED 3## 2.89
4
5Fixed crash in pronouns processing (contributed by byte).
6
7Added counters in the people page (contributed by byte).
8
9New command-line option `refresh`, to refresh all follower and following `Actor` objects, marking them as broken if they are.
10
11## 2.88
12
13If `disable_emojireact` is set to `true` in `server.json`, EmojiReacts (incoming and outgoing) are totally disabled.
14
15New 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).
16
17Added a new set of per-user muted words; if a post contains any of them, it's hidden behind a dropdown (contributed by byte).
18
19If an account has a metadata named `pronouns`, it's shown by the name (contributed by violette).
20
21Mastodon API: children of a post are returned recursively, not just the first level (contributed by violette).
22
23Implemented optional metadata stripping for images and videos using external tools (contributed by Stefano Marinelli).
24
25## 2.87
26
27Hide EmojiReacts from muted actors and blocked instances.
28
29## 2.86
30
31Truncate RSS titles at UTF-8 character boundaries (contributed by lxo).
32
33Link contacts to single-user people pages. Also, user's posts are shown (contributed by lxo).
34
35Added emoji reactions (contributed by violette).
36
37Mastodon API: Fix for some client notifications (contributed by violette), fix for a status visibility error (contributed by fruye).
38
39If the query variable `terse` of a public post page is set to anything, no header is shown.
40
41Fixed search failures when the query string has any leading blank.
42
43## 2.85
4 44
5Quoted posts are now shown. 45Quoted posts are now shown.
6 46
47Added metadata to remote users in the people page (contributed by dandelions).
48
7Fixed memory leak (contributed by dandelions). 49Fixed memory leak (contributed by dandelions).
8 50
51Fixed user matching (contributed by rakoo).
52
53Rendering visibility conditionally, with lesser reach if needed (contributed by byte).
54
55Added a button next to a follow notification to follow back.
56
9Fixed typo in man page (contributed by spky). 57Fixed typo in man page (contributed by spky).
10 58
59Updated Czech and German translations (contributed by pmjv and zen).
60
11## 2.84 61## 2.84
12 62
13Implemented more scopes to match other ActivityPub implementations (public, unlisted, followers-only and direct message) (contributed by byte). 63Implemented more scopes to match other ActivityPub implementations (public, unlisted, followers-only and direct message) (contributed by byte).
diff --git a/TODO.md b/TODO.md
index 1f13c6b..799988b 100644
--- a/TODO.md
+++ b/TODO.md
@@ -6,10 +6,6 @@ It seems that Microsoft is planning to laminate Basic HTTP Auth, so make a plan,
6 6
7Investigate the problem with boosts inside the same instance (see https://codeberg.org/grunfink/snac2/issues/214). 7Investigate the problem with boosts inside the same instance (see https://codeberg.org/grunfink/snac2/issues/214).
8 8
9Editing / Updating a post does not index newly added hashtags.
10
11Unfollowing guppe groups seems to work (http status of 200), but messages continue to arrive as if it didn't.
12
13Important: deleting a follower should do more that just delete the object, see https://codeberg.org/grunfink/snac2/issues/43#issuecomment-956721 9Important: deleting a follower should do more that just delete the object, see https://codeberg.org/grunfink/snac2/issues/43#issuecomment-956721
14 10
15## Wishlist 11## Wishlist
@@ -32,10 +28,6 @@ Track "FEP-ef61: Portable Objects" https://codeberg.org/fediverse/fep/src/branch
32 28
33Integrate "Added handling for International Domain Names" PR https://codeberg.org/grunfink/snac2/pulls/104 29Integrate "Added handling for International Domain Names" PR https://codeberg.org/grunfink/snac2/pulls/104
34 30
35Do something about Akkoma and Misskey's quoted replies (they use the `quoteUrl` field instead of `inReplyTo`).
36
37Take 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).
38
39The '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. 31The '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.
40 32
41## Closed 33## Closed
@@ -381,3 +373,11 @@ Add command-line tools for creating and manipulating lists (2025-04-18T10:04:41+
381Do a [Webmention](https://www.w3.org/TR/webmention/) to every link written in a post (2025-05-04T11:16:21+0200). 373Do a [Webmention](https://www.w3.org/TR/webmention/) to every link written in a post (2025-05-04T11:16:21+0200).
382 374
383The local purge should generate `Delete` activities for local posts (2025-07-25T18:55:16+0200). 375The local purge should generate `Delete` activities for local posts (2025-07-25T18:55:16+0200).
376
377Unfollowing 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).
378
379Do something about Akkoma and Misskey's quoted replies (they use the `quoteUrl` field instead of `inReplyTo`) (2025-12-09T05:31:56+0100).
380
381Take 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).
382
383Editing / Updating a post does not index newly added hashtags (2025-12-19T15:29:38+0100).
diff --git a/activitypub.c b/activitypub.c
index 2c0fa2e..c34e510 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -1,9 +1,10 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_json.h" 5#include "xs_json.h"
6#include "xs_curl.h" 6#include "xs_curl.h"
7#include "xs_url.h"
7#include "xs_mime.h" 8#include "xs_mime.h"
8#include "xs_openssl.h" 9#include "xs_openssl.h"
9#include "xs_regex.h" 10#include "xs_regex.h"
@@ -779,7 +780,7 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
779 object_get(object, &obj); 780 object_get(object, &obj);
780 781
781 /* if it's about one of our posts, accept it */ 782 /* if it's about one of our posts, accept it */
782 if (xs_startswith(object, snac->actor)) 783 if (is_msg_mine(snac, object))
783 return 2; 784 return 2;
784 785
785 /* blocked by hashtag? */ 786 /* blocked by hashtag? */
@@ -1242,7 +1243,7 @@ void notify(snac *snac, const char *type, const char *utype, const char *actor,
1242 1243
1243 if (xs_match(type, "Like|Announce|EmojiReact")) { 1244 if (xs_match(type, "Like|Announce|EmojiReact")) {
1244 /* if it's not an admiration about something by us, done */ 1245 /* if it's not an admiration about something by us, done */
1245 if (xs_is_null(objid) || !xs_startswith(objid, snac->actor)) 1246 if (xs_is_null(objid) || !is_msg_mine(snac, objid))
1246 return; 1247 return;
1247 1248
1248 /* if it's an announce by our own relay, done */ 1249 /* if it's an announce by our own relay, done */
@@ -1267,7 +1268,7 @@ void notify(snac *snac, const char *type, const char *utype, const char *actor,
1267 return; 1268 return;
1268 1269
1269 /* if it's not ours and we didn't vote, discard */ 1270 /* if it's not ours and we didn't vote, discard */
1270 if (!xs_startswith(poll_id, snac->actor) && !was_question_voted(snac, poll_id)) 1271 if (!is_msg_mine(snac, poll_id) && !was_question_voted(snac, poll_id))
1271 return; 1272 return;
1272 } 1273 }
1273 1274
@@ -1530,11 +1531,24 @@ xs_dict *msg_update(snac *snac, const xs_dict *object)
1530 1531
1531 1532
1532xs_dict *msg_admiration(snac *snac, const char *object, const char *type) 1533xs_dict *msg_admiration(snac *snac, const char *object, const char *type)
1533/* creates a Like or Announce message */ 1534/* creates a Like, Announce or EmojiReact message */
1534{ 1535{
1535 xs *a_msg = NULL; 1536 xs *a_msg = NULL;
1536 xs_dict *msg = NULL; 1537 xs_dict *msg = NULL;
1537 xs *wrk = NULL; 1538 xs *wrk = NULL;
1539 char t = 0;
1540
1541 switch (*type) {
1542 case 'L':
1543 t = 'l';
1544 break;
1545 case 'A':
1546 t = 'a';
1547 break;
1548 case 'E':
1549 t = 'e';
1550 break;
1551 }
1538 1552
1539 /* call the object */ 1553 /* call the object */
1540 timeline_request(snac, &object, &wrk, 0); 1554 timeline_request(snac, &object, &wrk, 0);
@@ -1542,7 +1556,7 @@ xs_dict *msg_admiration(snac *snac, const char *object, const char *type)
1542 if (valid_status(object_get(object, &a_msg))) { 1556 if (valid_status(object_get(object, &a_msg))) {
1543 xs *rcpts = xs_list_new(); 1557 xs *rcpts = xs_list_new();
1544 xs *o_md5 = xs_md5_hex(object, strlen(object)); 1558 xs *o_md5 = xs_md5_hex(object, strlen(object));
1545 xs *id = xs_fmt("%s/%s/%s", snac->actor, *type == 'L' ? "l" : "a", o_md5); 1559 xs *id = xs_fmt("%s/%c/%s", snac->actor, t, o_md5);
1546 1560
1547 msg = msg_base(snac, type, id, snac->actor, "@now", object); 1561 msg = msg_base(snac, type, id, snac->actor, "@now", object);
1548 1562
@@ -1586,6 +1600,138 @@ xs_dict *msg_repulsion(snac *user, const char *id, const char *type)
1586 return msg; 1600 return msg;
1587} 1601}
1588 1602
1603xs_dict *msg_emoji_init(snac *snac, const char *mid, const char *eid_o)
1604/* creates an emoji reaction from a local user */
1605{
1606 xs_dict *n_msg = msg_admiration(snac, mid, "EmojiReact");
1607
1608 xs *eid = xs_strip_chars_i(xs_dup(eid_o), ":");
1609 xs *content = NULL;
1610 xs *tag = xs_list_new();
1611 xs *dict = xs_dict_new();
1612 xs *icon = xs_dict_new();
1613 xs *accounts = xs_list_new();
1614 xs *emjs = emojis_rm_categories();
1615
1616 /* may be a default emoji */
1617 xs *eidd = xs_dup(eid);
1618 const char *eidda = eid;
1619
1620 if (xs_is_emoji(xs_utf8_dec(&eidda)))
1621 content = xs_dup(eid);
1622
1623 else if (*eid == '%') {
1624 content = xs_url_dec_emoji(xs_dup(eid));
1625 if (content == NULL) {
1626 return NULL;
1627 }
1628 }
1629 else {
1630 content = xs_fmt(":%s:", eid);
1631 const char *emo = xs_dict_get(emjs, content);
1632
1633 if (emo == NULL)
1634 return NULL;
1635
1636 if (xs_match(emo, "https://*|http://*")) { /* emoji is an URL to an image */
1637 icon = xs_dict_set(icon, "type", "Image");
1638 icon = xs_dict_set(icon, "url", emo);
1639 dict = xs_dict_set(dict, "icon", icon);
1640
1641 dict = xs_dict_set(dict, "id", emo);
1642 dict = xs_dict_set(dict, "name", content);
1643 dict = xs_dict_set(dict, "type", "Emoji");
1644 tag = xs_list_append(tag, dict);
1645 }
1646 else
1647 if (xs_startswith(emo, "&#")) {
1648 /* snac default emoji as an HTML entity: decode */
1649 content = xs_free(content);
1650
1651 xs *s1 = xs_strip_chars_i(xs_dup(emo), "&#");
1652 unsigned int cpoint = 0;
1653 sscanf(s1, "%u;", &cpoint);
1654
1655 if (cpoint)
1656 content = xs_utf8_cat(xs_str_new(NULL), cpoint);
1657 else
1658 content = xs_dup(emo);
1659 }
1660 else {
1661 /* use as it is and hope for the best */
1662 xs_free(content);
1663 content = xs_dup(emo);
1664 }
1665 }
1666
1667 accounts = xs_list_append(accounts, snac->actor);
1668
1669 n_msg = xs_dict_set(n_msg, "content", content);
1670 n_msg = xs_dict_set(n_msg, "accounts", accounts);
1671 n_msg = xs_dict_set(n_msg, "attributedTo", xs_list_get(xs_dict_get(n_msg, "to"), 1));
1672 n_msg = xs_dict_set(n_msg, "accountId", snac->uid);
1673 n_msg = xs_dict_set(n_msg, "tag", tag);
1674
1675 int ret = timeline_admire(snac, xs_dict_get(n_msg, "object"), snac->actor, 1, n_msg);
1676 if (ret == 200 || ret == 201) {
1677 enqueue_message(snac, n_msg);
1678 return n_msg;
1679 }
1680
1681 return NULL;
1682}
1683
1684xs_dict *msg_emoji_unreact(snac *user, const char *mid, const char *eid)
1685/* creates an Undo + emoji reaction message */
1686{
1687 xs *a_msg = NULL;
1688 xs_dict *msg = NULL;
1689
1690 if (valid_status(object_get(mid, &a_msg))) {
1691 /* create a clone of the original admiration message */
1692 xs *object = msg_admiration(user, mid, "EmojiReact");
1693
1694 /* delete the published date */
1695 object = xs_dict_del(object, "published");
1696
1697 /* create an undo message for this object */
1698 msg = msg_undo(user, object);
1699
1700 /* copy the 'to' field */
1701 msg = xs_dict_set(msg, "to", xs_dict_get(object, "to"));
1702 }
1703
1704 xs *emotes = object_get_emoji_reacts(mid);
1705 const char *v;
1706 int c = 0;
1707
1708 /* may be a default emoji */
1709 if (strlen(eid) == 12 && *eid == '%') {
1710 eid = xs_url_dec(eid);
1711 if (eid == NULL) {
1712 return NULL;
1713 }
1714 }
1715
1716 /* lets get all emotes for this msg, and compare it to our content */
1717 while (xs_list_next(emotes, &v, &c)) {
1718 xs_dict *e = NULL;
1719 if (valid_status(object_get_by_md5(v, &e))) {
1720 const char *content = xs_dict_get(e, "content");
1721 const char *id = xs_dict_get(e, "id");
1722 const char *actor = xs_dict_get(e, "actor");
1723 /* maybe formated as :{emoteName}: too */
1724 if (xs_str_in(eid, content) != -1)
1725 if (strcmp(user->actor, actor) == 0) {
1726 object_rm_emoji_react(mid, id);
1727 return msg;
1728 }
1729 }
1730 }
1731
1732 return NULL;
1733}
1734
1589 1735
1590xs_dict *msg_actor_place(snac *user, const char *label) 1736xs_dict *msg_actor_place(snac *user, const char *label)
1591/* creates a Place object, if the user has a location defined */ 1737/* creates a Place object, if the user has a location defined */
@@ -2432,6 +2578,11 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2432 return -1; 2578 return -1;
2433 } 2579 }
2434 2580
2581 if (strcmp(type, "EmojiReact") == 0 && xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) {
2582 srv_log(xs_fmt("Dropping EmojiReact from %s due to admin configuration", actor));
2583 return -1;
2584 }
2585
2435 const char *object, *utype; 2586 const char *object, *utype;
2436 2587
2437 object = xs_dict_get(msg, "object"); 2588 object = xs_dict_get(msg, "object");
@@ -2605,6 +2756,16 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2605 else 2756 else
2606 if (strcmp(type, "Undo") == 0) { /** **/ 2757 if (strcmp(type, "Undo") == 0) { /** **/
2607 const char *id = xs_dict_get(object, "object"); 2758 const char *id = xs_dict_get(object, "object");
2759 const char *content = xs_dict_get(object, "content");
2760 /* misskey sends emojis as like + tag */
2761 xs *cd = xs_dup(content);
2762 const char *sna = cd;
2763 const xs_dict *tag = xs_dict_get(object, "tag");
2764 unsigned int utf = xs_utf8_dec((const char **)&sna);
2765
2766 int isEmoji = 0;
2767 if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
2768 isEmoji = 1;
2608 2769
2609 if (xs_type(object) != XSTYPE_DICT) { 2770 if (xs_type(object) != XSTYPE_DICT) {
2610 snac_debug(snac, 1, xs_fmt("undo: overriding utype %s | %s | %s", 2771 snac_debug(snac, 1, xs_fmt("undo: overriding utype %s | %s | %s",
@@ -2633,8 +2794,19 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2633 else 2794 else
2634 snac_log(snac, xs_fmt("error deleting follower %s", actor)); 2795 snac_log(snac, xs_fmt("error deleting follower %s", actor));
2635 } 2796 }
2797 /* *key emojis are like w/ Emoji tag */
2798 else
2799 if ((isEmoji || strcmp(utype, "EmojiReact") == 0) &&
2800 (content && strcmp(content, "♥") != 0)) {
2801 const xs_val *mid = xs_dict_get(object, "id");
2802 int status = object_rm_emoji_react((char *)id, mid);
2803 /* ensure *key notifications type */
2804 utype = "EmojiReact";
2805
2806 snac_log(snac, xs_fmt("Undo 'EmojiReact' for %s %d", id, status));
2807 }
2636 else 2808 else
2637 if (strcmp(utype, "Like") == 0 || strcmp(utype, "EmojiReact") == 0) { /** **/ 2809 if (strcmp(utype, "Like") == 0) { /** **/
2638 int status = object_unadmire(id, actor, 1); 2810 int status = object_unadmire(id, actor, 1);
2639 2811
2640 snac_log(snac, xs_fmt("Undo '%s' for %s %d", utype, id, status)); 2812 snac_log(snac, xs_fmt("Undo '%s' for %s %d", utype, id, status));
@@ -2771,13 +2943,22 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2771 } 2943 }
2772 else 2944 else
2773 if (strcmp(type, "Like") == 0 || strcmp(type, "EmojiReact") == 0) { /** **/ 2945 if (strcmp(type, "Like") == 0 || strcmp(type, "EmojiReact") == 0) { /** **/
2946 /* misskey sends emojis as Like + tag.
2947 * It is easier to handle them both at the same time. */
2948 const char *sna = xs_dict_get(msg, "content");
2949 const xs_dict *tag = xs_dict_get(msg, "tag");
2950 unsigned int utf = xs_utf8_dec((const char **)&sna);
2951
2952 if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
2953 type = "EmojiReact";
2954
2774 if (xs_type(object) == XSTYPE_DICT) 2955 if (xs_type(object) == XSTYPE_DICT)
2775 object = xs_dict_get(object, "id"); 2956 object = xs_dict_get(object, "id");
2776 2957
2777 if (xs_is_null(object)) 2958 if (xs_is_null(object))
2778 snac_log(snac, xs_fmt("malformed message: no 'id' field")); 2959 snac_log(snac, xs_fmt("malformed message: no 'id' field"));
2779 else 2960 else
2780 if (timeline_admire(snac, object, actor, 1) == HTTP_STATUS_CREATED) 2961 if (timeline_admire(snac, object, actor, 1, msg) == HTTP_STATUS_CREATED)
2781 snac_log(snac, xs_fmt("new '%s' %s %s", type, actor, object)); 2962 snac_log(snac, xs_fmt("new '%s' %s %s", type, actor, object));
2782 else 2963 else
2783 snac_log(snac, xs_fmt("repeated '%s' from %s to %s", type, actor, object)); 2964 snac_log(snac, xs_fmt("repeated '%s' from %s to %s", type, actor, object));
@@ -2792,10 +2973,10 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2792 if (xs_is_null(object)) 2973 if (xs_is_null(object))
2793 snac_log(snac, xs_fmt("malformed message: no 'id' field")); 2974 snac_log(snac, xs_fmt("malformed message: no 'id' field"));
2794 else 2975 else
2795 if (is_muted(snac, actor) && !xs_startswith(object, snac->actor)) 2976 if (is_muted(snac, actor) && !is_msg_mine(snac, object))
2796 snac_log(snac, xs_fmt("dropped 'Announce' from muted actor %s", actor)); 2977 snac_log(snac, xs_fmt("dropped 'Announce' from muted actor %s", actor));
2797 else 2978 else
2798 if (is_limited(snac, actor) && !xs_startswith(object, snac->actor)) 2979 if (is_limited(snac, actor) && !is_msg_mine(snac, object))
2799 snac_log(snac, xs_fmt("dropped 'Announce' from limited actor %s", actor)); 2980 snac_log(snac, xs_fmt("dropped 'Announce' from limited actor %s", actor));
2800 else { 2981 else {
2801 xs *a_msg = NULL; 2982 xs *a_msg = NULL;
@@ -2818,7 +2999,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2818 xs *this_relay = xs_fmt("%s/relay", srv_baseurl); 2999 xs *this_relay = xs_fmt("%s/relay", srv_baseurl);
2819 3000
2820 if (strcmp(actor, this_relay) != 0) { 3001 if (strcmp(actor, this_relay) != 0) {
2821 if (valid_status(timeline_admire(snac, object, actor, 0))) 3002 if (valid_status(timeline_admire(snac, object, actor, 0, a_msg)))
2822 snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object)); 3003 snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object));
2823 else 3004 else
2824 snac_log(snac, xs_fmt("repeated 'Announce' from %s to %s", 3005 snac_log(snac, xs_fmt("repeated 'Announce' from %s to %s",
@@ -2903,7 +3084,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2903 snac_log(snac, xs_fmt("malformed message: no 'id' field")); 3084 snac_log(snac, xs_fmt("malformed message: no 'id' field"));
2904 else 3085 else
2905 if (object_here(object)) { 3086 if (object_here(object)) {
2906 if (xs_startswith(object, srv_baseurl) && !xs_startswith(object, actor)) 3087 if (xs_startswith(object, srv_baseurl) && !is_msg_mine(snac, object))
2907 snac_log(snac, xs_fmt("ignored incorrect 'Delete' %s %s", actor, object)); 3088 snac_log(snac, xs_fmt("ignored incorrect 'Delete' %s %s", actor, object));
2908 else { 3089 else {
2909 timeline_del(snac, object); 3090 timeline_del(snac, object);
@@ -3214,7 +3395,7 @@ void process_user_queue_item(snac *user, xs_dict *q_item)
3214 actor_add(actor, actor_o); 3395 actor_add(actor, actor_o);
3215 } 3396 }
3216 else { 3397 else {
3217 if (status == HTTP_STATUS_GONE) { 3398 if (status == HTTP_STATUS_GONE || status == HTTP_STATUS_NOT_FOUND) {
3218 actor_failure(actor, 1); 3399 actor_failure(actor, 1);
3219 snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status)); 3400 snac_log(user, xs_fmt("actor_refresh marking actor %s as broken %d", actor, status));
3220 } 3401 }
@@ -3716,7 +3897,7 @@ int activitypub_get_handler(const xs_dict *req, const char *q_path,
3716 const char *type = xs_dict_get(i, "type"); 3897 const char *type = xs_dict_get(i, "type");
3717 const char *id = xs_dict_get(i, "id"); 3898 const char *id = xs_dict_get(i, "id");
3718 3899
3719 if (type && id && strcmp(type, "Note") == 0 && xs_startswith(id, snac.actor)) { 3900 if (type && id && strcmp(type, "Note") == 0 && is_msg_mine(&snac, id)) {
3720 if (is_msg_public(i)) { 3901 if (is_msg_public(i)) {
3721 xs *c_msg = msg_create(&snac, i); 3902 xs *c_msg = msg_create(&snac, i);
3722 list = xs_list_append(list, c_msg); 3903 list = xs_list_append(list, c_msg);
diff --git a/artwork/susie-q.png b/artwork/susie-q.png
new file mode 100644
index 0000000..82fd9fe
--- /dev/null
+++ b/artwork/susie-q.png
Binary files differ
diff --git a/data.c b/data.c
index d291ba7..f32dc81 100644
--- a/data.c
+++ b/data.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_hex.h" 5#include "xs_hex.h"
@@ -89,8 +89,15 @@ int srv_open(const char *basedir, int auto_upgrade)
89 else { 89 else {
90 if (xs_number_get(xs_dict_get(srv_config, "layout")) < disk_layout) 90 if (xs_number_get(xs_dict_get(srv_config, "layout")) < disk_layout)
91 error = xs_fmt("ERROR: disk layout changed - execute 'snac upgrade' first"); 91 error = xs_fmt("ERROR: disk layout changed - execute 'snac upgrade' first");
92 else 92 else {
93 ret = 1; 93 if (!check_strip_tool()) {
94 const char *mp = xs_dict_get(srv_config, "mogrify_path");
95 if (mp == NULL) mp = "mogrify";
96 error = xs_fmt("ERROR: strip_exif enabled but '%s' not found or not working (set 'mogrify_path' in server.json)", mp);
97 }
98 else
99 ret = 1;
100 }
94 } 101 }
95 } 102 }
96 103
@@ -1043,6 +1050,14 @@ xs_list *object_children(const char *id)
1043} 1050}
1044 1051
1045 1052
1053xs_list *object_get_emoji_reacts(const char *id)
1054/* returns the list of an object's emoji reactions */
1055{
1056 xs *fn = _object_index_fn(id, "_e.idx");
1057 return index_list(fn, XS_ALL);
1058}
1059
1060
1046xs_list *object_likes(const char *id) 1061xs_list *object_likes(const char *id)
1047{ 1062{
1048 xs *fn = _object_index_fn(id, "_l.idx"); 1063 xs *fn = _object_index_fn(id, "_l.idx");
@@ -1086,12 +1101,26 @@ int object_admire(const char *id, const char *actor, int like)
1086 1101
1087 1102
1088int object_unadmire(const char *id, const char *actor, int like) 1103int object_unadmire(const char *id, const char *actor, int like)
1089/* actor no longer likes or announces this object */ 1104/* actor retrives their likes, announces or emojis this object */
1090{ 1105{
1106 switch (like) {
1107 case 0:
1108 like = 'a';
1109 break;
1110 case 1:
1111 like = 'l';
1112 break;
1113 case 2:
1114 like = 'e';
1115 break;
1116 }
1091 int status; 1117 int status;
1092 xs *fn = _object_fn(id); 1118 xs *fn = _object_fn(id);
1093 1119
1094 fn = xs_replace_i(fn, ".json", like ? "_l.idx" : "_a.idx"); 1120 char sfx[7] = "_x.idx";
1121 sfx[1] = like;
1122
1123 fn = xs_replace_i(fn, ".json", sfx);
1095 1124
1096 status = index_del(fn, actor); 1125 status = index_del(fn, actor);
1097 1126
@@ -1099,7 +1128,46 @@ int object_unadmire(const char *id, const char *actor, int like)
1099 index_gc(fn); 1128 index_gc(fn);
1100 1129
1101 srv_debug(0, 1130 srv_debug(0,
1102 xs_fmt("object_unadmire (%s) %s %s %d", like ? "Like" : "Announce", actor, fn, status)); 1131 xs_fmt("object_unadmire (%s) %s %s %d", like >= 'e' ?
1132 (like == 'l' ? "Like" : "EmojiReact") : "Announce" , actor, fn, status));
1133
1134 return status;
1135}
1136
1137int object_emoji_react(const char *mid, const char *eid)
1138/* actor reacts w/ an emoji */
1139{
1140 int status = HTTP_STATUS_OK;
1141 xs *fn = _object_fn(mid);
1142
1143 fn = xs_replace_i(fn, ".json", "_e.idx");
1144
1145 if (!index_in(fn, eid)) {
1146 status = index_add(fn, eid);
1147
1148 srv_debug(1, xs_fmt("object_emoji_react (%s) added %s to %s", "EmojiReact", eid, fn));
1149 }
1150
1151 return status;
1152}
1153
1154
1155int object_rm_emoji_react(const char *mid, const char *eid)
1156/* actor retrives their emoji reaction */
1157{
1158 int status;
1159 xs *fn = _object_fn(mid);
1160
1161 fn = xs_replace_i(fn, ".json", "_e.idx");
1162
1163 status = index_del(fn, eid);
1164 object_del(eid);
1165
1166 if (valid_status(status))
1167 index_gc(fn);
1168
1169 srv_debug(0,
1170 xs_fmt("object_unadmire (EmojiReact) %s %s %d", eid, fn, status));
1103 1171
1104 return status; 1172 return status;
1105} 1173}
@@ -1358,6 +1426,20 @@ int pending_count(snac *user)
1358} 1426}
1359 1427
1360 1428
1429int is_msg_mine(snac *user, const char *id)
1430/* returns true if a post id is by the given user */
1431{
1432 int ret = 0;
1433
1434 if (xs_is_string(id)) {
1435 xs *s1 = xs_fmt("%s/", user->actor);
1436 ret = xs_startswith(id, s1);
1437 }
1438
1439 return ret;
1440}
1441
1442
1361/** timeline **/ 1443/** timeline **/
1362 1444
1363double timeline_mtime(snac *snac) 1445double timeline_mtime(snac *snac)
@@ -1453,7 +1535,7 @@ void timeline_update_indexes(snac *snac, const char *id)
1453{ 1535{
1454 object_user_cache_add(snac, id, "private"); 1536 object_user_cache_add(snac, id, "private");
1455 1537
1456 if (xs_startswith(id, snac->actor)) { 1538 if (is_msg_mine(snac, id)) {
1457 xs *msg = NULL; 1539 xs *msg = NULL;
1458 1540
1459 if (valid_status(object_get(id, &msg))) { 1541 if (valid_status(object_get(id, &msg))) {
@@ -1492,19 +1574,48 @@ int timeline_add(snac *snac, const char *id, const xs_dict *o_msg)
1492} 1574}
1493 1575
1494 1576
1495int timeline_admire(snac *snac, const char *id, const char *admirer, int like) 1577int timeline_emoji_react(const char *act, const char *id, const xs_dict *msg_o)
1496/* updates a timeline entry with a new admiration */ 1578/* adds an emoji reaction to a message */
1497{ 1579{
1580 xs *msg = xs_dup(msg_o);
1581 msg = xs_dict_append(msg, "attributedTo", act);
1582 msg = xs_dict_set(msg, "type", "EmojiReact");
1583 const char *emote_id = xs_dict_get(msg, "id");
1584
1585 int ret = object_add(emote_id, msg);
1586 if (ret == HTTP_STATUS_OK || ret == HTTP_STATUS_CREATED)
1587 ret = object_emoji_react(id, emote_id);
1588
1589 return ret;
1590}
1591
1592
1593int timeline_admire(snac *snac, const char *id,
1594 const char *admirer, int like, const xs_dict *msg)
1595/* updates a timeline entry with a new admiration or emoji reaction */
1596{
1597 int ret;
1598 const char *content = xs_dict_get_path(msg, "content");
1599 const char *type = xs_dict_get_path(msg, "type");
1600
1498 /* if we are admiring this, add to both timelines */ 1601 /* if we are admiring this, add to both timelines */
1499 if (!like && strcmp(admirer, snac->actor) == 0) { 1602 if (!like && strcmp(admirer, snac->actor) == 0) {
1500 object_user_cache_add(snac, id, "public"); 1603 object_user_cache_add(snac, id, "public");
1501 object_user_cache_add(snac, id, "private"); 1604 object_user_cache_add(snac, id, "private");
1502 } 1605 }
1503 1606
1504 int ret = object_admire(id, admirer, like); 1607 /* use utf <3 as a like, as it is ugly */
1608 if (type && xs_match(type, "Like|EmojiReact|Emoji") &&
1609 content && strcmp(content, "â¤") != 0) {
1610 ret = timeline_emoji_react(snac->actor, id, msg);
1611 snac_debug(snac, 1, xs_fmt("timeline_emoji_react %s", id));
1612 }
1505 1613
1506 snac_debug(snac, 1, xs_fmt("timeline_admire (%s) %s %s", 1614 else {
1507 like ? "Like" : "Announce", id, admirer)); 1615 ret = object_admire(id, admirer, like);
1616 snac_debug(snac, 1, xs_fmt("timeline_admire (%s) %s %s",
1617 like ? "Like" : "Announce", id, admirer));
1618 }
1508 1619
1509 return ret; 1620 return ret;
1510} 1621}
@@ -1853,6 +1964,25 @@ xs_list *muted_list(snac *user)
1853 return l; 1964 return l;
1854} 1965}
1855 1966
1967/** emojis react **/
1968
1969xs_str *emoji_reacted(snac *user, const char *id)
1970/* returns the emoji an user reacted to a message */
1971{
1972 xs *emojis = object_get_emoji_reacts(id);
1973 int c = 0;
1974 const char *v;
1975
1976 while (xs_list_next(emojis, &v, &c)) {
1977 xs *msg = NULL;
1978 if (object_get_by_md5(v, &msg)) {
1979 const xs_val *act = xs_dict_get(msg, "actor");
1980 if (act && strcmp(act, user->actor) == 0)
1981 return xs_dup(xs_dict_get(msg, "content"));
1982 }
1983 }
1984 return NULL;
1985}
1856 1986
1857/** bookmarking **/ 1987/** bookmarking **/
1858 1988
@@ -1913,7 +2043,7 @@ int pin(snac *user, const char *id)
1913{ 2043{
1914 int ret = -2; 2044 int ret = -2;
1915 2045
1916 if (xs_startswith(id, user->actor)) { 2046 if (is_msg_mine(user, id)) {
1917 if (is_pinned(user, id)) 2047 if (is_pinned(user, id))
1918 ret = -3; 2048 ret = -3;
1919 else 2049 else
@@ -2587,6 +2717,8 @@ void static_put(snac *snac, const char *id, const char *data, int size)
2587 if (fn && (f = fopen(fn, "wb")) != NULL) { 2717 if (fn && (f = fopen(fn, "wb")) != NULL) {
2588 fwrite(data, size, 1, f); 2718 fwrite(data, size, 1, f);
2589 fclose(f); 2719 fclose(f);
2720
2721 strip_media(fn);
2590 } 2722 }
2591} 2723}
2592 2724
@@ -3513,7 +3645,7 @@ void enqueue_output(snac *snac, const xs_dict *msg,
3513 const xs_str *inbox, int retries, int p_status) 3645 const xs_str *inbox, int retries, int p_status)
3514/* enqueues an output message to an inbox */ 3646/* enqueues an output message to an inbox */
3515{ 3647{
3516 if (xs_startswith(inbox, snac->actor)) { 3648 if (is_msg_mine(snac, inbox)) {
3517 snac_debug(snac, 1, xs_str_new("refusing enqueue to myself")); 3649 snac_debug(snac, 1, xs_str_new("refusing enqueue to myself"));
3518 return; 3650 return;
3519 } 3651 }
@@ -4041,7 +4173,7 @@ void delete_purged_posts(snac *user, int days)
4041 if (xs_is_dict(msg)) { 4173 if (xs_is_dict(msg)) {
4042 const char *id = xs_dict_get(msg, "id"); 4174 const char *id = xs_dict_get(msg, "id");
4043 4175
4044 if (xs_is_string(id) && xs_startswith(id, user->actor)) { 4176 if (xs_is_string(id) && is_msg_mine(user, id)) {
4045 xs *d_msg = msg_delete(user, id); 4177 xs *d_msg = msg_delete(user, id);
4046 4178
4047 enqueue_message(user, d_msg); 4179 enqueue_message(user, d_msg);
diff --git a/doc/snac.1 b/doc/snac.1
index cabd623..dbf63f4 100644
--- a/doc/snac.1
+++ b/doc/snac.1
@@ -110,6 +110,9 @@ URLs to RSS feeds of ActivityPub objects are also allowed
110.It Blocked hashtags... 110.It Blocked hashtags...
111Enter here the list of hashtags you want to block, one 111Enter here the list of hashtags you want to block, one
112per line, with or without the # symbol. 112per line, with or without the # symbol.
113.It Muted words...
114Enter here a list of words to be silenced. If a post includes
115any of this words, it's hidden behind a dropdown.
113.El 116.El
114.Pp 117.Pp
115The user setup dialog allows some user information to be 118The user setup dialog allows some user information to be
@@ -218,13 +221,20 @@ also private and cannot be liked nor boosted.
218For each entry in the timeline, a set of reasonable actions 221For each entry in the timeline, a set of reasonable actions
219in the form of buttons will be shown. These can be: 222in the form of buttons will be shown. These can be:
220.Bl -tag -offset indent 223.Bl -tag -offset indent
221.It Reply 224.It Reply...
222Unveils a text area to write your intelligent and acute comment 225Unveils a text area to write your intelligent and acute comment
223to an uninformed fellow. This note is sent to the original 226to an uninformed fellow. This note is sent to the original
224author as well as to your followers. The note can include 227author as well as to your followers. The note can include
225mentions in the @user@format; these people will also become 228mentions in the @user@format; these people will also become
226recipients of the message. If you reply to a boost or like, 229recipients of the message. If you reply to a boost or like,
227you are really replying to the note, not to the admirer of it. 230you are really replying to the note, not to the admirer of it.
231.It Emoji react...
232Unveils a text area that allows a user to react with an emoji
233by typing its identifier, that should match one of the emojis
234defined in the
235.Pa emojis.json
236file. By now, only those emoji identifiers surrounded by colons
237can be used.
228.It Like 238.It Like
229Click this if you admire this post. The poster and your 239Click this if you admire this post. The poster and your
230followers will be informed. 240followers will be informed.
@@ -405,6 +415,9 @@ Removes an existing list.
405Adds an account (by its @name@host handle or actor URL) to a list. 415Adds an account (by its @name@host handle or actor URL) to a list.
406.It Cm list_del Ar basedir Ar uid Ar name Ar actor_url 416.It Cm list_del Ar basedir Ar uid Ar name Ar actor_url
407Deletes an actor (by its actor URL) from a list. 417Deletes an actor (by its actor URL) from a list.
418.It Cm top_ten Ar basedir Ar uid Op N
419Returns the ids of the top ten (or top N) most popular posts (considering the
420sum of likes and boosts).
408.El 421.El
409.Ss Migrating an account to/from Mastodon 422.Ss Migrating an account to/from Mastodon
410See 423See
diff --git a/doc/snac.8 b/doc/snac.8
index a6d925d..d961ed2 100644
--- a/doc/snac.8
+++ b/doc/snac.8
@@ -294,6 +294,22 @@ The URL to a favicon. If it's not set, the default one is used instead.
294The maximum number of days an instance is considered down after continuous failed 294The maximum number of days an instance is considered down after continuous failed
295outgoing messages (default: 15). Anyway, whenever any incoming activity from a 295outgoing messages (default: 15). Anyway, whenever any incoming activity from a
296failed instance is detected, this counter is reset for it. 296failed instance is detected, this counter is reset for it.
297.It Ic vkey
298Public vapid key. Used for notification on some client.
299.It Ic disable_emojireact
300If set to true, all EmojiReact support (for input and output) is disabled.
301.It Ic strip_exif
302If 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
303.Nm mogrify
304(from ImageMagick) and
305.Nm ffmpeg
306tools to be installed. If
307.Nm snac
308cannot find or execute these tools at startup, it will refuse to run.
309.It Ic mogrify_path
310Overrides the default "mogrify" command name or path. Use this if the tool is not in the system PATH or has a different name.
311.It Ic ffmpeg_path
312Overrides the default "ffmpeg" command name or path. Use this if the tool is not in the system PATH or has a different name.
297.El 313.El
298.Pp 314.Pp
299You must restart the server to make effective these changes. 315You must restart the server to make effective these changes.
@@ -405,7 +421,7 @@ objects, on input and output.
405.It Vt EmojiReact 421.It Vt EmojiReact
406For 422For
407.Vt Note 423.Vt Note
408objects, on input. 424objects, on input and output.
409.It Vt Announce 425.It Vt Announce
410For 426For
411.Vt Note 427.Vt Note
diff --git a/doc/style.css b/doc/style.css
index 5289332..9c8764a 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -32,8 +32,12 @@ blockquote { font-style: italic; }
32.snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px; 32.snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px;
33 margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; } 33 margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; }
34.snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; } 34.snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; }
35@media (prefers-color-scheme: dark) { 35.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;}
36.snac-reaction-image { max-width: 100%; max-height: 100%; }
37.snac-reaction-div { border-left: darkgray; border-left-style: solid; margin-bottom: .3em; padding-left: .3em; border-left-width: 2px; }
38@media (prefers-color-scheme: dark) {
36 body, input, textarea { background-color: #000; color: #fff; } 39 body, input, textarea { background-color: #000; color: #fff; }
37 a { color: #7799dd } 40 a { color: #7799dd }
38 a:visited { color: #aa99dd } 41 a:visited { color: #aa99dd }
39} 42}
43select { max-width: 40%; }
diff --git a/format.c b/format.c
index 84c634d..95c1b12 100644
--- a/format.c
+++ b/format.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_regex.h" 5#include "xs_regex.h"
@@ -79,6 +79,24 @@ xs_dict *emojis(void)
79 return d; 79 return d;
80} 80}
81 81
82
83xs_dict *emojis_rm_categories() {
84 xs *emjs = emojis();
85 char *res = xs_dict_new();
86 const char *k, *v;
87 xs_dict_foreach(emjs, k, v) {
88 if (xs_type(v) == XSTYPE_DICT) {
89 const char *v2;
90 xs_dict_foreach(v, k, v2)
91 res = xs_dict_append(res, k, v2);
92 }
93 else
94 res = xs_dict_append(res, k, v);
95 }
96 return res;
97}
98
99
82/* Non-whitespace without trailing comma, period or closing paren */ 100/* Non-whitespace without trailing comma, period or closing paren */
83#define NOSPACE "([^[:space:],.)]+|[,.)]+[^[:space:],.)])+" 101#define NOSPACE "([^[:space:],.)]+|[,.)]+[^[:space:],.)])+"
84 102
@@ -405,7 +423,7 @@ xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag
405 423
406 { 424 {
407 /* traditional emoticons */ 425 /* traditional emoticons */
408 xs *d = emojis(); 426 xs *d = emojis_rm_categories();
409 int c = 0; 427 int c = 0;
410 const char *k, *v; 428 const char *k, *v;
411 429
@@ -459,6 +477,9 @@ xs_str *sanitize(const char *content)
459 char *p; 477 char *p;
460 const char *v; 478 const char *v;
461 479
480 if (!content)
481 return NULL;
482
462 sl = xs_regex_split(content, "</?[^>]+>"); 483 sl = xs_regex_split(content, "</?[^>]+>");
463 484
464 p = sl; 485 p = sl;
diff --git a/html.c b/html.c
index df5b508..3f5435c 100644
--- a/html.c
+++ b/html.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
@@ -16,6 +16,7 @@
16#include "xs_url.h" 16#include "xs_url.h"
17#include "xs_random.h" 17#include "xs_random.h"
18#include "xs_http.h" 18#include "xs_http.h"
19#include "xs_list_tools.h"
19 20
20#include "snac.h" 21#include "snac.h"
21 22
@@ -54,9 +55,10 @@ int login(snac *user, const xs_dict *headers)
54 return logged_in; 55 return logged_in;
55} 56}
56 57
57 58xs_str *_replace_shortnames(xs_str *s, const xs_list *tag, int ems,
58xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *proxy) 59 const char *proxy, const xs_list *cl, const char *act_o)
59/* replaces all the :shortnames: with the emojis in tag */ 60/* replace but also adds a class list and an actor in its alt text.
61 * Used for emoji reactions */
60{ 62{
61 if (!xs_is_null(tag)) { 63 if (!xs_is_null(tag)) {
62 xs *tag_list = NULL; 64 xs *tag_list = NULL;
@@ -69,11 +71,17 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
69 tag_list = xs_dup(tag); 71 tag_list = xs_dup(tag);
70 } 72 }
71 73
72 xs *style = xs_fmt("height: %dem; width: %dem; vertical-align: middle;", ems, ems); 74 xs *style = xs_fmt("max-height: %dem; max-width: %dem;", ems, ems);
73 xs *class = xs_fmt("snac-emoji snac-emoji-%d-em", ems); 75 xs *class = xs_fmt("snac-emoji snac-emoji-%d-em", ems);
76 if (cl) {
77 xs *l = xs_join(cl, " ");
78 class = xs_str_cat(class, " ", l);
79 }
74 80
75 const xs_dict *v;
76 int c = 0; 81 int c = 0;
82 const xs_val *v;
83
84 c = 0;
77 85
78 xs_set rep_emoji; 86 xs_set rep_emoji;
79 xs_set_init(&rep_emoji); 87 xs_set_init(&rep_emoji);
@@ -100,6 +108,8 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
100 if (!xs_is_string(mt)) 108 if (!xs_is_string(mt))
101 mt = xs_mime_by_ext(u); 109 mt = xs_mime_by_ext(u);
102 110
111 xs *act = act_o ? xs_fmt("%s\n%s", n, act_o) : xs_fmt("%s", n);
112
103 if (strcmp(mt, "image/svg+xml") == 0 && !xs_is_true(xs_dict_get(srv_config, "enable_svg"))) 113 if (strcmp(mt, "image/svg+xml") == 0 && !xs_is_true(xs_dict_get(srv_config, "enable_svg")))
104 s = xs_replace_i(s, n, ""); 114 s = xs_replace_i(s, n, "");
105 else { 115 else {
@@ -108,8 +118,8 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
108 xs_html *img = xs_html_sctag("img", 118 xs_html *img = xs_html_sctag("img",
109 xs_html_attr("loading", "lazy"), 119 xs_html_attr("loading", "lazy"),
110 xs_html_attr("src", url), 120 xs_html_attr("src", url),
111 xs_html_attr("alt", n), 121 xs_html_attr("alt", act),
112 xs_html_attr("title", n), 122 xs_html_attr("title", act),
113 xs_html_attr("class", class), 123 xs_html_attr("class", class),
114 xs_html_attr("style", style)); 124 xs_html_attr("style", style));
115 125
@@ -130,6 +140,13 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
130} 140}
131 141
132 142
143xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *proxy)
144/* replaces all the :shortnames: with the emojis in tag */
145{
146 return _replace_shortnames(s, tag, ems, proxy, NULL, NULL);
147}
148
149
133xs_str *actor_name(xs_dict *actor, const char *proxy) 150xs_str *actor_name(xs_dict *actor, const char *proxy)
134/* gets the actor name */ 151/* gets the actor name */
135{ 152{
@@ -145,6 +162,34 @@ xs_str *actor_name(xs_dict *actor, const char *proxy)
145} 162}
146 163
147 164
165xs_str *actor_pronouns(xs_dict *actor)
166/* gets the actor name */
167{
168 const xs_list *attachment;
169 const xs_dict *d;
170 const char *v;
171 const char *pronouns = "";
172 xs_str *ret;
173
174 if (xs_is_list((attachment = xs_dict_get(actor, "attachment")))) {
175 xs_list_foreach(attachment, d) {
176 xs *prop = xs_utf8_to_lower(xs_dict_get(d, "name"));
177 /* make sure that we are reading the correct metadata */
178 if (strlen(prop) == 8 && strcmp(prop, "pronouns") == 0) {
179 /* safeguard from NULL values */
180 v = xs_dict_get(d, "value");
181 pronouns = v ? v : pronouns;
182 break;
183 }
184 }
185 }
186
187 /* strip all HTML tags */
188 ret = xs_regex_replace(pronouns, "</?[^>]+>", "");
189 return ret;
190}
191
192
148xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy) 193xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy)
149/* needed when we have local text with no tags attached */ 194/* needed when we have local text with no tags attached */
150{ 195{
@@ -178,6 +223,7 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
178 int fwer = 0; 223 int fwer = 0;
179 224
180 xs *name = actor_name(actor, proxy); 225 xs *name = actor_name(actor, proxy);
226 xs *pronouns = actor_pronouns(actor);
181 227
182 /* get the avatar */ 228 /* get the avatar */
183 if ((v = xs_dict_get(actor, "icon")) != NULL) { 229 if ((v = xs_dict_get(actor, "icon")) != NULL) {
@@ -205,23 +251,35 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
205 anchored link to the people page instead of the actor url */ 251 anchored link to the people page instead of the actor url */
206 if (fwer || fwing) { 252 if (fwer || fwing) {
207 xs *md5 = xs_md5_hex(actor_id, strlen(actor_id)); 253 xs *md5 = xs_md5_hex(actor_id, strlen(actor_id));
208 href = xs_fmt("%s/people#%s", user->actor, md5); 254 href = xs_fmt("%s/people/%s", user->actor, md5);
209 } 255 }
210 } 256 }
211 257
212 if (href == NULL) 258 if (href == NULL)
213 href = xs_dup(actor_id); 259 href = xs_dup(actor_id);
214 260
261 xs_html *name_link = xs_html_tag("a",
262 xs_html_attr("href", href),
263 xs_html_attr("class", "p-author h-card snac-author"),
264 xs_html_raw(name)); /* name is already html-escaped */
265
266 if (*pronouns) {
267 xs_html_add(name_link,
268 xs_html_text(" ["),
269 xs_html_tag("span",
270 xs_html_attr("class", "snac-pronouns"),
271 xs_html_attr("title", "user's pronouns"),
272 xs_html_raw(pronouns)),
273 xs_html_text("]"));
274 }
275
215 xs_html_add(actor_icon, 276 xs_html_add(actor_icon,
216 xs_html_sctag("img", 277 xs_html_sctag("img",
217 xs_html_attr("loading", "lazy"), 278 xs_html_attr("loading", "lazy"),
218 xs_html_attr("class", "snac-avatar"), 279 xs_html_attr("class", "snac-avatar"),
219 xs_html_attr("src", avatar), 280 xs_html_attr("src", avatar),
220 xs_html_attr("alt", "[?]")), 281 xs_html_attr("alt", "[?]")),
221 xs_html_tag("a", 282 name_link);
222 xs_html_attr("href", href),
223 xs_html_attr("class", "p-author h-card snac-author"),
224 xs_html_raw(name))); /* name is already html-escaped */
225 283
226 if (!xs_is_null(url)) { 284 if (!xs_is_null(url)) {
227 xs *md5 = xs_md5_hex(url, strlen(url)); 285 xs *md5 = xs_md5_hex(url, strlen(url));
@@ -234,6 +292,7 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
234 xs_html_text("»"))); 292 xs_html_text("»")));
235 } 293 }
236 294
295
237 if (strcmp(xs_dict_get(actor, "type"), "Service") == 0) { 296 if (strcmp(xs_dict_get(actor, "type"), "Service") == 0) {
238 xs_html_add(actor_icon, 297 xs_html_add(actor_icon,
239 xs_html_text(" "), 298 xs_html_text(" "),
@@ -398,6 +457,83 @@ xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg,
398 return actor_icon; 457 return actor_icon;
399} 458}
400 459
460void html_note_render_visibility(snac* user, xs_html *form, const int scope)
461{
462 // scopes aren't sorted by value unfortunately, so simple math won't work to limit them. using map-like thing here
463 static const int public_scopes[5] = {SCOPE_PUBLIC, SCOPE_UNLISTED, SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
464 static const int unlisted_scopes[4] = {SCOPE_UNLISTED, SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
465 static const int followers_scopes[3] = {SCOPE_FOLLOWERS, SCOPE_MENTIONED, -1};
466 static const int mentioned_scopes[2] = {SCOPE_MENTIONED, -1};
467 static const int * const scopes[4] = { public_scopes, mentioned_scopes, unlisted_scopes, followers_scopes};
468 static const char * const scopes_tags[4] = { "public", "mentioned", "unlisted", "followers"};
469 static const char * const scopes_names[4] = { "Public", "Direct Message", "Unlisted", "Followers-only"};
470
471 xs_html *paragraph = xs_html_tag("p", xs_html_text(L("Visibility: ")));
472 const int* to_render = scopes[scope];
473 for( int i = 0; to_render[i] != -1; i++ ){
474 const int scope_i = to_render[i];
475 const char* value = scopes_tags[scope_i];
476 const char* name = scopes_names[scope_i];
477 xs_html_add(paragraph,
478 xs_html_tag("label",
479 xs_html_sctag("input",
480 xs_html_attr("type", "radio"),
481 xs_html_attr("name", "visibility"),
482 xs_html_attr("value", value),
483 xs_html_attr(scope == scope_i ? "checked" : "", NULL)),
484 xs_html_text(" "),
485 xs_html_text(L(name)),
486 xs_html_text(" "))
487 );
488 }
489 xs_html_add(form, paragraph);
490}
491
492/* html_note but moddled for emoji's needs. here and not bellow, since the
493 * other one is already so complex. */
494xs_html *html_emoji(snac *user, const char *summary,
495 const char *div_id, const char *form_id,
496 const char* placeholder, const char *post_id,
497 const char* eid)
498{
499 xs *action = xs_fmt("%s/admin/action", user->actor);
500
501 xs_html *form;
502 const int react = eid == NULL ? 0 : 1;
503
504 xs_html *note = xs_html_tag("div",
505 xs_html_tag("details",
506 xs_html_tag("summary",
507 xs_html_text(summary)),
508 xs_html_tag("p", NULL),
509 xs_html_tag("div",
510 xs_html_attr("class", "snac-note"),
511 xs_html_attr("id", div_id),
512 form = xs_html_tag("form",
513 xs_html_attr("autocomplete", "off"),
514 xs_html_attr("method", "post"),
515 xs_html_attr("action", action),
516 xs_html_attr("enctype", "multipart/form-data"),
517 xs_html_attr("id", form_id),
518 xs_html_sctag("input",
519 xs_html_attr("type", "hidden"),
520 xs_html_attr("name", "id"),
521 xs_html_attr("value", post_id)),
522 xs_html_sctag("input",
523 xs_html_attr("type", react ? "hidden" : "text"),
524 xs_html_attr("name", "eid"),
525 xs_html_attr(react ? "value" : "placeholder", react ? eid : placeholder)),
526 xs_html_text(" "),
527 xs_html_sctag("input",
528 xs_html_attr("type", "submit"),
529 xs_html_attr("name", "action"),
530 xs_html_attr("eid", "action"),
531 xs_html_attr("value", react ? L("EmojiUnreact") : L("EmojiReact"))),
532 xs_html_text(" "),
533 xs_html_tag("p", NULL)))));
534
535 return note;
536}
401 537
402xs_html *html_note(snac *user, const char *summary, 538xs_html *html_note(snac *user, const char *summary,
403 const char *div_id, const char *form_id, 539 const char *div_id, const char *form_id,
@@ -455,46 +591,8 @@ xs_html *html_note(snac *user, const char *summary,
455 xs_html_attr("type", "hidden"), 591 xs_html_attr("type", "hidden"),
456 xs_html_attr("name", "to"), 592 xs_html_attr("name", "to"),
457 xs_html_attr("value", actor_id))); 593 xs_html_attr("value", actor_id)));
458 else { 594 if (edit_id == NULL)
459 xs_html_add(form, 595 html_note_render_visibility(user, form, scope);
460 xs_html_tag("p",
461 xs_html_text(L("Visibility: ")),
462 xs_html_tag("label",
463 xs_html_sctag("input",
464 xs_html_attr("type", "radio"),
465 xs_html_attr("name", "visibility"),
466 xs_html_attr("value", "public"),
467 xs_html_attr(scope == SCOPE_PUBLIC ? "checked" : "", NULL)),
468 xs_html_text(" "),
469 xs_html_text(L("Public"))),
470 xs_html_text(" "),
471 xs_html_tag("label",
472 xs_html_sctag("input",
473 xs_html_attr("type", "radio"),
474 xs_html_attr("name", "visibility"),
475 xs_html_attr("value", "unlisted"),
476 xs_html_attr(scope == SCOPE_UNLISTED ? "checked" : "", NULL)),
477 xs_html_text(" "),
478 xs_html_text(L("Unlisted"))),
479 xs_html_text(" "),
480 xs_html_tag("label",
481 xs_html_sctag("input",
482 xs_html_attr("type", "radio"),
483 xs_html_attr("name", "visibility"),
484 xs_html_attr("value", "followers"),
485 xs_html_attr(scope == SCOPE_FOLLOWERS ? "checked" : "", NULL)),
486 xs_html_text(" "),
487 xs_html_text(L("Followers-only"))),
488 xs_html_text(" "),
489 xs_html_tag("label",
490 xs_html_sctag("input",
491 xs_html_attr("type", "radio"),
492 xs_html_attr("name", "visibility"),
493 xs_html_attr("value", "mentioned"),
494 xs_html_attr(scope == SCOPE_MENTIONED ? "checked" : "", NULL)),
495 xs_html_text(" "),
496 xs_html_text(L("Direct Message")))));
497 }
498 596
499 if (redir) 597 if (redir)
500 xs_html_add(form, 598 xs_html_add(form,
@@ -1363,6 +1461,28 @@ xs_html *html_top_controls(snac *user)
1363 xs_html_attr("value", L("Like"))), 1461 xs_html_attr("value", L("Like"))),
1364 xs_html_text(" "), 1462 xs_html_text(" "),
1365 xs_html_text(L("(by URL)"))), 1463 xs_html_text(L("(by URL)"))),
1464 xs_html_tag("form",
1465 xs_html_attr("autocomplete", "off"),
1466 xs_html_attr("method", "post"),
1467 xs_html_attr("action", ops_action),
1468 xs_html_sctag("input",
1469 xs_html_attr("type", "text"),
1470 xs_html_attr("name", "eid"),
1471 xs_html_attr("required", "required"),
1472 xs_html_attr("placeholder", ":neocat:")),
1473 xs_html_text(" "),
1474 xs_html_sctag("input",
1475 xs_html_attr("type", "text"),
1476 xs_html_attr("name", "id"),
1477 xs_html_attr("required", "required"),
1478 xs_html_attr("placeholder", "https:/" "/fedi.example.com/bob/...")),
1479 xs_html_text(" "),
1480 xs_html_sctag("input",
1481 xs_html_attr("type", "submit"),
1482 xs_html_attr("name", "action"),
1483 xs_html_attr("value", L("EmojiReact"))),
1484 xs_html_text(" "),
1485 xs_html_text(L("(by URL)"))),
1366 xs_html_tag("p", NULL))); 1486 xs_html_tag("p", NULL)));
1367 1487
1368 /** user settings **/ 1488 /** user settings **/
@@ -1787,6 +1907,38 @@ xs_html *html_top_controls(snac *user)
1787 xs_html_attr("class", "button"), 1907 xs_html_attr("class", "button"),
1788 xs_html_attr("value", L("Update hashtags"))))))); 1908 xs_html_attr("value", L("Update hashtags")))))));
1789 1909
1910 xs *muted_words_action = xs_fmt("%s/admin/muted-words", user->actor);
1911 xs *muted_words = xs_join(xs_dict_get_def(user->config,
1912 "muted_words", xs_stock(XSTYPE_LIST)), "\n");
1913
1914 xs_html_add(top_controls,
1915 xs_html_tag("details",
1916 xs_html_tag("summary",
1917 xs_html_text(L("Muted words..."))),
1918 xs_html_tag("p",
1919 xs_html_text(L("One word per line, partial matches count"))),
1920 xs_html_tag("div",
1921 xs_html_attr("class", "snac-muted-words"),
1922 xs_html_tag("form",
1923 xs_html_attr("autocomplete", "off"),
1924 xs_html_attr("method", "post"),
1925 xs_html_attr("action", muted_words_action),
1926 xs_html_attr("enctype", "multipart/form-data"),
1927
1928 xs_html_tag("textarea",
1929 xs_html_attr("name", "muted_words"),
1930 xs_html_attr("cols", "40"),
1931 xs_html_attr("rows", "4"),
1932 xs_html_attr("placeholder", "nascar\nsuperbowl\nFIFA"),
1933 xs_html_text(muted_words)),
1934
1935 xs_html_tag("br", NULL),
1936
1937 xs_html_sctag("input",
1938 xs_html_attr("type", "submit"),
1939 xs_html_attr("class", "button"),
1940 xs_html_attr("value", L("Update muted words")))))));
1941
1790 return top_controls; 1942 return top_controls;
1791} 1943}
1792 1944
@@ -1898,7 +2050,7 @@ xs_html *html_entry_controls(snac *user, const char *actor,
1898 xs_html_attr("name", "redir"), 2050 xs_html_attr("name", "redir"),
1899 xs_html_attr("value", redir)))); 2051 xs_html_attr("value", redir))));
1900 2052
1901 if (!xs_startswith(id, user->actor)) { 2053 if (!is_msg_mine(user, id)) {
1902 if (xs_list_in(likes, user->md5) == -1) { 2054 if (xs_list_in(likes, user->md5) == -1) {
1903 /* not already liked; add button */ 2055 /* not already liked; add button */
1904 xs_html_add(form, 2056 xs_html_add(form,
@@ -2026,6 +2178,22 @@ xs_html *html_entry_controls(snac *user, const char *actor,
2026 xs_html_tag("p", NULL)); 2178 xs_html_tag("p", NULL));
2027 } 2179 }
2028 2180
2181 if (!xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) { /** emoji react **/
2182 /* the post textarea */
2183 xs *div_id = xs_fmt("%s_reply", md5);
2184 xs *form_id = xs_fmt("%s_reply_form", md5);
2185 xs *e_react = emoji_reacted(user, id);
2186
2187 xs_html_add(controls, xs_html_tag("div",
2188 xs_html_tag("p", NULL),
2189 html_emoji(
2190 user, L("Emoji react..."),
2191 div_id, form_id,
2192 ":neocat:", id,
2193 e_react)),
2194 xs_html_tag("p", NULL));
2195 }
2196
2029 { /** reply **/ 2197 { /** reply **/
2030 /* the post textarea */ 2198 /* the post textarea */
2031 xs *ct = build_mentions(user, msg); 2199 xs *ct = build_mentions(user, msg);
@@ -2051,6 +2219,30 @@ xs_html *html_entry_controls(snac *user, const char *actor,
2051} 2219}
2052 2220
2053 2221
2222static const xs_str* words_in_content(const xs_list *words, const xs_val *content)
2223/* returns a word that matches any of the words in content */
2224{
2225 if (!xs_is_list(words) || !xs_is_string(content)) {
2226 return NULL;
2227 }
2228 xs *c = xs_split(content, " ");
2229 xs *sc = xs_list_sort(c, NULL);
2230
2231 const xs_str *wv;
2232 const xs_str *cv;
2233 xs_list_foreach(words, wv) {
2234 xs_list_foreach(sc, cv) {
2235 xs_tolower_i((xs_str*)cv);
2236 if(xs_str_in(cv, wv) != -1){
2237 return wv;
2238 }
2239 }
2240 }
2241
2242 return NULL;
2243}
2244
2245
2054xs_html *html_entry(snac *user, xs_dict *msg, int read_only, 2246xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2055 int level, const char *md5, int hide_children) 2247 int level, const char *md5, int hide_children)
2056{ 2248{
@@ -2262,7 +2454,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2262 } 2454 }
2263 2455
2264 if (!read_only && (fwers || fwing)) 2456 if (!read_only && (fwers || fwing))
2265 href = xs_fmt("%s/people#%s", user->actor, p); 2457 href = xs_fmt("%s/people/%s", user->actor, p);
2266 else 2458 else
2267 href = xs_dup(id); 2459 href = xs_dup(id);
2268 2460
@@ -2345,6 +2537,17 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2345 xs_html_text(v), 2537 xs_html_text(v),
2346 xs_html_text(L(" [SENSITIVE CONTENT]")))); 2538 xs_html_text(L(" [SENSITIVE CONTENT]"))));
2347 } 2539 }
2540 else
2541 if (user &&
2542 /* muted_words is all lowercase and sorted for performance */
2543 (v = words_in_content(xs_dict_get(user->config, "muted_words"),
2544 xs_dict_get(msg, "content"))) != NULL) {
2545 snac_debug(user, 1, xs_fmt("word %s muted by user preferences: %s", v, id));
2546 snac_content = xs_html_tag("details",
2547 xs_html_tag("summary",
2548 xs_html_text(L("Muted: ")),
2549 xs_html_text(v)));
2550 }
2348 else { 2551 else {
2349 snac_content = xs_html_tag("div", NULL); 2552 snac_content = xs_html_tag("div", NULL);
2350 } 2553 }
@@ -2352,6 +2555,182 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2352 xs_html_add(snac_content_wrap, 2555 xs_html_add(snac_content_wrap,
2353 snac_content); 2556 snac_content);
2354 2557
2558 /* add all emoji reacts */
2559 int is_emoji = 0;
2560 if (!xs_is_true(xs_dict_get(srv_config, "disable_emojireact"))) {
2561 int c = 0;
2562 const xs_dict *k;
2563 xs *ls = xs_list_new();
2564 xs *sfrl = xs_dict_new();
2565 xs *rl = object_get_emoji_reacts(id);
2566
2567 while (xs_list_next(rl, &v, &c)) {
2568 xs *m = NULL;
2569 if (valid_status(object_get_by_md5(v, &m))) {
2570 const char *content = xs_dict_get(m, "content");
2571 const char *actor = xs_dict_get(m, "actor");
2572 const xs_list *contentl = xs_dict_get(sfrl, content);
2573
2574 if ((user && is_muted(user, actor)) || is_instance_blocked(actor))
2575 continue;
2576
2577 xs *actors = xs_list_new();
2578 actors = xs_list_append(actors, actor);
2579 char me = actor && user && strcmp(actor, user->actor) == 0;
2580 int count = 1;
2581
2582 if (contentl) {
2583 count = atoi(xs_list_get(contentl, 0)) + 1;
2584 const xs_list *actorsc = xs_list_get(contentl, 1);
2585 if (strncmp(xs_list_get(contentl, 2), "1", 1) == 0)
2586 me = 1;
2587
2588 if (xs_list_in(actorsc, actor) != -1) {
2589 xs_free(actors);
2590 actors = xs_dup(actorsc);
2591 }
2592 else
2593 actors = xs_list_cat(actors, actorsc);
2594 }
2595
2596 xs *fl = xs_list_new();
2597 xs *c1 = xs_fmt("%d", count);
2598 xs *c2 = xs_fmt("%d", me);
2599 fl = xs_list_append(fl, c1, actors, c2);
2600 sfrl = xs_dict_append(sfrl, content, fl);
2601 }
2602 }
2603
2604 c = 0;
2605
2606 while (xs_list_next(rl, &k, &c)) {
2607 xs *m = NULL;
2608 if (valid_status(object_get_by_md5(k, &m))) {
2609 const xs_dict *tag = xs_dict_get(m, "tag");
2610 const xs_dict *ide = xs_dict_get(m, "id");
2611
2612 const char *content = xs_dict_get(m, "content");
2613 const char *shortname;
2614 shortname = xs_dict_get(m, "content");
2615
2616 const xs_list *items = xs_dict_get(sfrl, content);
2617
2618 if (!xs_is_null(items)) {
2619 const char *nb = xs_list_get(items, 0);
2620 const xs_list *actors = xs_list_get(items, 1);
2621 const char me = *xs_list_get(items, 2) == '1';
2622
2623 is_emoji = 1;
2624
2625 xs *al = xs_join(actors, ",\n\t");
2626 xs *act = atoi(nb) > 1 ?
2627 xs_fmt("%d different actors \n\t%s", atoi(nb), al) :
2628 xs_dup(xs_dict_get(m, "actor"));
2629
2630 xs *class = xs_list_new();
2631 class = xs_list_append(class, "snac-reaction");
2632
2633 xs_html *ret = NULL;
2634 if (tag && shortname) {
2635 xs *cl = xs_list_new();
2636 cl = xs_list_append(cl, "snac-reaction-image");
2637 xs *emoji = _replace_shortnames(xs_dup(shortname), tag, 2, proxy, cl, act);
2638
2639 emoji = xs_strip_chars_i(emoji, ":");
2640
2641 if (me)
2642 class = xs_list_append(class, "snac-reacted");
2643
2644 xs *l1 = xs_join(class, " ");
2645 ret = xs_html_tag("button",
2646 xs_html_attr("type", "submit"),
2647 xs_html_attr("name", "action"),
2648 xs_html_attr("value", me ? L("EmojiReact") : L("EmojiUnreact")),
2649 xs_html_raw(emoji),
2650 xs_html_tag("span",
2651 xs_html_raw(nb),
2652 xs_html_attr("style", "padding-left: 5px;")),
2653 xs_html_attr("title", act),
2654 xs_html_attr("class", l1));
2655
2656 if (!(ide && xs_startswith(ide, srv_baseurl)))
2657 xs_html_add(ret, xs_html_attr("disabled", "true"));
2658 }
2659 else if (shortname) {
2660 xs *sn = xs_dup(shortname);
2661 const char *sna = sn;
2662 unsigned int utf = xs_utf8_dec((const char **)&sna);
2663
2664 if (xs_is_emoji(utf)) {
2665 const char *style = "font-size: large;";
2666 if (me)
2667 class = xs_list_append(class, "snac-reacted");
2668 xs *l1 = xs_join(class, " ");
2669 xs *s1 = xs_fmt("&#%d", utf);
2670 ret = xs_html_tag("button",
2671 xs_html_attr("type", "submit"),
2672 xs_html_attr("name", "action"),
2673 xs_html_attr("value", me ? L("EmojiUnreact") : L("EmojiReact")),
2674 xs_html_raw(s1),
2675 xs_html_tag("span",
2676 xs_html_raw(nb),
2677 xs_html_attr("style", "font-size: initial; padding-left: 5px;")),
2678 xs_html_attr("title", act),
2679 xs_html_attr("class", l1),
2680 xs_html_attr("style", style));
2681 }
2682 }
2683 if (ret) {
2684 xs *s1;
2685 if (user) {
2686 xs *action = xs_fmt("%s/admin/action", user->actor);
2687 xs *form_id = xs_fmt("%s_reply_form", md5);
2688
2689 xs_html *form =
2690 xs_html_tag("form",
2691 xs_html_attr("autocomplete", "off"),
2692 xs_html_attr("method", "post"),
2693 xs_html_attr("action", action),
2694 xs_html_attr("enctype", "multipart/form-data"),
2695 xs_html_attr("style", "display: inline-flex;"
2696 "vertical-align: middle;"),
2697 xs_html_attr("id", form_id),
2698 xs_html_sctag("input",
2699 xs_html_attr("type", "hidden"),
2700 xs_html_attr("name", "id"),
2701 xs_html_attr("value", id)),
2702 xs_html_sctag("input",
2703 xs_html_attr("type", "hidden"),
2704 xs_html_attr("name", "eid"),
2705 xs_html_attr("value", shortname)),
2706 ret);
2707 s1 = xs_html_render(form);
2708 }
2709 else
2710 s1 = xs_html_render(ret);
2711
2712 ls = xs_list_append(ls, s1);
2713 sfrl = xs_dict_del(sfrl, content);
2714 }
2715 }
2716 }
2717 }
2718
2719 c = 0;
2720
2721 xs_html *emoji_div;
2722 if (xs_list_len(ls) > 0) {
2723 emoji_div = xs_html_tag("div", xs_html_text(L("Emoji reactions: ")),
2724 xs_html_attr("class", "snac-reaction-div"));
2725
2726 while (ls != NULL && xs_list_next(ls, &k, &c))
2727 xs_html_add(emoji_div, xs_html_raw(k));
2728
2729 xs_html_add(snac_content_wrap, emoji_div);
2730 }
2731
2732 }
2733
2355 { 2734 {
2356 /** build the content string **/ 2735 /** build the content string **/
2357 const char *content = xs_dict_get(msg, "content"); 2736 const char *content = xs_dict_get(msg, "content");
@@ -2378,7 +2757,8 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2378 2757
2379 c = xs_replace_i(c, "<br><br>", "<p>"); 2758 c = xs_replace_i(c, "<br><br>", "<p>");
2380 2759
2381 c = xs_str_cat(c, "<p>"); 2760 if (is_emoji == 0)
2761 c = xs_str_cat(c, "<p>");
2382 2762
2383 /* replace the :shortnames: */ 2763 /* replace the :shortnames: */
2384 c = replace_shortnames(c, xs_dict_get(msg, "tag"), 2, proxy); 2764 c = replace_shortnames(c, xs_dict_get(msg, "tag"), 2, proxy);
@@ -2426,7 +2806,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2426 if (read_only) 2806 if (read_only)
2427 closed = 1; /* non-identified page; show as closed */ 2807 closed = 1; /* non-identified page; show as closed */
2428 else 2808 else
2429 if (user && xs_startswith(id, user->actor)) 2809 if (user && is_msg_mine(user, id))
2430 closed = 1; /* we questioned; closed for us */ 2810 closed = 1; /* we questioned; closed for us */
2431 else 2811 else
2432 if (user && was_question_voted(user, id)) 2812 if (user && was_question_voted(user, id))
@@ -2634,7 +3014,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
2634 xs_html_attr("title", name)))); 3014 xs_html_attr("title", name))));
2635 } 3015 }
2636 else 3016 else
2637 if (xs_startswith(type, "video/")) { 3017 if (xs_startswith(type, "video/") || strcmp(type, "Video") == 0) {
2638 xs_html_add(content_attachments, 3018 xs_html_add(content_attachments,
2639 xs_html_tag("video", 3019 xs_html_tag("video",
2640 xs_html_attr("preload", "none"), 3020 xs_html_attr("preload", "none"),
@@ -3003,7 +3383,7 @@ xs_html *html_footer(const snac *user)
3003xs_str *html_timeline(snac *user, const xs_list *list, int read_only, 3383xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
3004 int skip, int show, int show_more, 3384 int skip, int show, int show_more,
3005 const char *title, const char *page, 3385 const char *title, const char *page,
3006 int utl, const char *error) 3386 int utl, const char *error, int terse)
3007/* returns the HTML for the timeline */ 3387/* returns the HTML for the timeline */
3008{ 3388{
3009 xs_list *p = (xs_list *)list; 3389 xs_list *p = (xs_list *)list;
@@ -3031,7 +3411,11 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
3031 3411
3032 if (user) { 3412 if (user) {
3033 head = html_user_head(user, desc, alternate); 3413 head = html_user_head(user, desc, alternate);
3034 body = html_user_body(user, read_only); 3414
3415 if (terse)
3416 body = xs_html_tag("body", NULL);
3417 else
3418 body = html_user_body(user, read_only);
3035 } 3419 }
3036 else { 3420 else {
3037 head = html_instance_head(); 3421 head = html_instance_head();
@@ -3251,7 +3635,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
3251 3635
3252 if (list && user && read_only) { 3636 if (list && user && read_only) {
3253 /** history **/ 3637 /** history **/
3254 if (xs_type(xs_dict_get(srv_config, "disable_history")) != XSTYPE_TRUE) { 3638 if (xs_type(xs_dict_get(srv_config, "disable_history")) != XSTYPE_TRUE && !terse) {
3255 xs_html *ul = xs_html_tag("ul", NULL); 3639 xs_html *ul = xs_html_tag("ul", NULL);
3256 3640
3257 xs_html *history = xs_html_tag("div", 3641 xs_html *history = xs_html_tag("div",
@@ -3323,13 +3707,19 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
3323} 3707}
3324 3708
3325 3709
3326xs_html *html_people_list(snac *user, xs_list *list, const char *header, const char *t, const char *proxy) 3710xs_html *html_people_list(snac *user, xs_list *list, const char *header, const char *t, const char *proxy, int do_count)
3327{ 3711{
3328 xs_html *snac_posts; 3712 xs_html *snac_posts;
3713 xs *header_cnt;
3714 if (do_count)
3715 header_cnt = xs_fmt("%s - %d\n", header, xs_list_len(list));
3716 else
3717 header_cnt = xs_fmt("%s\n", header);
3718
3329 xs_html *people = xs_html_tag("div", 3719 xs_html *people = xs_html_tag("div",
3330 xs_html_tag("h2", 3720 xs_html_tag("h2",
3331 xs_html_attr("class", "snac-header"), 3721 xs_html_attr("class", "snac-header"),
3332 xs_html_text(header)), 3722 xs_html_text(header_cnt)),
3333 snac_posts = xs_html_tag("details", 3723 snac_posts = xs_html_tag("details",
3334 xs_html_attr("open", NULL), 3724 xs_html_attr("open", NULL),
3335 xs_html_tag("summary", 3725 xs_html_tag("summary",
@@ -3570,12 +3960,12 @@ xs_str *html_people(snac *user)
3570 3960
3571 if (xs_list_len(pending) || xs_is_true(xs_dict_get(user->config, "approve_followers"))) { 3961 if (xs_list_len(pending) || xs_is_true(xs_dict_get(user->config, "approve_followers"))) {
3572 xs_html_add(lists, 3962 xs_html_add(lists,
3573 html_people_list(user, pending, L("Pending follow confirmations"), "p", proxy)); 3963 html_people_list(user, pending, L("Pending follow confirmations"), "p", proxy, 1));
3574 } 3964 }
3575 3965
3576 xs_html_add(lists, 3966 xs_html_add(lists,
3577 html_people_list(user, wing, L("People you follow"), "i", proxy), 3967 html_people_list(user, wing, L("People you follow"), "i", proxy, 1),
3578 html_people_list(user, wers, L("People that follow you"), "e", proxy)); 3968 html_people_list(user, wers, L("People that follow you"), "e", proxy, 1));
3579 3969
3580 xs_html *html = xs_html_tag("html", 3970 xs_html *html = xs_html_tag("html",
3581 html_user_head(user, NULL, NULL), 3971 html_user_head(user, NULL, NULL),
@@ -3586,6 +3976,108 @@ xs_str *html_people(snac *user)
3586 return xs_html_render_s(html, "<!DOCTYPE html>\n"); 3976 return xs_html_render_s(html, "<!DOCTYPE html>\n");
3587} 3977}
3588 3978
3979/* Filter list to display only posts by actor. We'll probably show
3980 fewer than show posts. Should we try harder to find some? */
3981xs_str *html_people_one(snac *user, const char *actor, const xs_list *list,
3982 int skip, int show, int show_more, const char *page)
3983{
3984 const char *proxy = NULL;
3985 xs_list *p = (xs_list *)list;
3986 const char *v;
3987
3988 if (xs_is_true(xs_dict_get(srv_config, "proxy_media")))
3989 proxy = user->actor;
3990
3991 xs_html *body = html_user_body(user, 0);
3992
3993 xs_html *lists = xs_html_tag("div",
3994 xs_html_attr("class", "snac-posts"));
3995
3996 xs *foll = xs_list_append(xs_list_new(), actor);
3997
3998 xs_html_add(lists,
3999 html_people_list(user, foll, L("Contact's posts"), "p", proxy, 0));
4000
4001 xs_html_add(body, lists);
4002
4003 while (xs_list_iter(&p, &v)) {
4004 xs *msg = NULL;
4005 int status;
4006
4007 status = timeline_get_by_md5(user, v, &msg);
4008
4009 if (!valid_status(status))
4010 continue;
4011
4012 const char *id = xs_dict_get(msg, "id");
4013 const char *by = get_atto(msg);
4014 xs *actor_md5 = NULL;
4015 xs_list *boosts = NULL;
4016 xs_list *likes = NULL;
4017 xs_list *reacts = NULL;
4018 /* Besides actor's posts, also show actor's boosts, and also
4019 posts by user with likes or reacts by actor. I.e., any
4020 actor's actions that user could have seen in the timeline
4021 or in notifications. */
4022 if (!(by && strcmp(actor, by) == 0) &&
4023 xs_list_in((boosts = object_announces(id)),
4024 (actor_md5 = xs_md5_hex(actor, strlen(actor)))) == -1 &&
4025 (!(by && strcmp(user->actor, by) == 0) ||
4026 (xs_list_in((likes = object_likes(id)), actor_md5) == -1 &&
4027 xs_list_in((reacts = object_get_emoji_reacts(id)), actor_md5) == -1)))
4028 continue;
4029
4030 xs_html *entry = html_entry(user, msg, 0, 0, v, 1);
4031
4032 if (entry != NULL)
4033 xs_html_add(lists,
4034 entry);
4035 }
4036
4037 if (show_more) {
4038 xs *m = NULL;
4039 xs *m10 = NULL;
4040 xs *ss = xs_fmt("skip=%d&show=%d", skip + show, show);
4041
4042 xs *url = xs_dup(user == NULL ? srv_baseurl : user->actor);
4043
4044 if (page != NULL)
4045 url = xs_str_cat(url, page);
4046
4047 if (xs_str_in(url, "?") != -1)
4048 m = xs_fmt("%s&%s", url, ss);
4049 else
4050 m = xs_fmt("%s?%s", url, ss);
4051
4052 m10 = xs_fmt("%s0", m);
4053
4054 xs_html *more_links = xs_html_tag("p",
4055 xs_html_tag("a",
4056 xs_html_attr("href", url),
4057 xs_html_attr("name", "snac-more"),
4058 xs_html_text(L("Back to top"))),
4059 xs_html_text(" - "),
4060 xs_html_tag("a",
4061 xs_html_attr("href", m),
4062 xs_html_attr("name", "snac-more"),
4063 xs_html_text(L("More..."))),
4064 xs_html_text(" - "),
4065 xs_html_tag("a",
4066 xs_html_attr("href", m10),
4067 xs_html_attr("name", "snac-more"),
4068 xs_html_text(L("More (x 10)..."))));
4069
4070 xs_html_add(body,
4071 more_links);
4072 }
4073
4074 xs_html *html = xs_html_tag("html",
4075 html_user_head(user, NULL, NULL),
4076 xs_html_add(body,
4077 html_footer(user)));
4078
4079 return xs_html_render_s(html, "<!DOCTYPE html>\n");
4080}
3589 4081
3590xs_str *html_notifications(snac *user, int skip, int show) 4082xs_str *html_notifications(snac *user, int skip, int show)
3591{ 4083{
@@ -3654,6 +4146,9 @@ xs_str *html_notifications(snac *user, int skip, int show)
3654 if (xs_is_string(id2) && xs_set_add(&rep, id2) != 1) 4146 if (xs_is_string(id2) && xs_set_add(&rep, id2) != 1)
3655 continue; 4147 continue;
3656 4148
4149 if (strcmp(type, "EmojiReact") == 0 && xs_is_true(xs_dict_get(srv_config, "disable_emojireact")))
4150 continue;
4151
3657 object_get(id, &obj); 4152 object_get(id, &obj);
3658 4153
3659 const char *msg_id = NULL; 4154 const char *msg_id = NULL;
@@ -3689,9 +4184,18 @@ xs_str *html_notifications(snac *user, int skip, int show)
3689 if (strcmp(type, "EmojiReact") == 0 || strcmp(type, "Like") == 0) { 4184 if (strcmp(type, "EmojiReact") == 0 || strcmp(type, "Like") == 0) {
3690 const char *content = xs_dict_get_path(noti, "msg.content"); 4185 const char *content = xs_dict_get_path(noti, "msg.content");
3691 4186
4187 xs *cd = xs_dup(content);
4188 const char *sna = cd;
4189 const xs_dict *tag = xs_dict_get_path(noti, "msg.tag");
4190 unsigned int utf = xs_utf8_dec((const char **)&sna);
4191
4192 int isEmoji = 0;
4193 if (xs_is_emoji(utf) || (tag && xs_list_len(tag) > 0))
4194 isEmoji = 1;
4195
3692 if (xs_type(content) == XSTYPE_STRING) { 4196 if (xs_type(content) == XSTYPE_STRING) {
3693 xs *emoji = replace_shortnames(xs_dup(content), xs_dict_get_path(noti, "msg.tag"), 1, proxy); 4197 xs *emoji = replace_shortnames(xs_dup(content), xs_dict_get_path(noti, "msg.tag"), 1, proxy);
3694 wrk = xs_fmt("%s (%s&#xFE0F;)", type, emoji); 4198 wrk = xs_fmt("%s (%s&#xFE0F;)", isEmoji ? "EmojiReact" : "Like", emoji);
3695 label = wrk; 4199 label = wrk;
3696 } 4200 }
3697 } 4201 }
@@ -3909,6 +4413,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
3909 int cache = 1; 4413 int cache = 1;
3910 int save = 1; 4414 int save = 1;
3911 int proxy = 0; 4415 int proxy = 0;
4416 int terse = 0;
3912 const char *v; 4417 const char *v;
3913 4418
3914 const xs_dict *q_vars = xs_dict_get(req, "q_vars"); 4419 const xs_dict *q_vars = xs_dict_get(req, "q_vars");
@@ -3921,6 +4426,9 @@ int html_get_handler(const xs_dict *req, const char *q_path,
3921 return HTTP_STATUS_NOT_FOUND; 4426 return HTTP_STATUS_NOT_FOUND;
3922 } 4427 }
3923 4428
4429 if (!xs_is_null(xs_dict_get(q_vars, "terse")))
4430 terse = 1;
4431
3924 if (strcmp(v, "share-bridge") == 0) { 4432 if (strcmp(v, "share-bridge") == 0) {
3925 /* temporary redirect for a post */ 4433 /* temporary redirect for a post */
3926 const char *login = xs_dict_get(q_vars, "login"); 4434 const char *login = xs_dict_get(q_vars, "login");
@@ -3988,8 +4496,12 @@ int html_get_handler(const xs_dict *req, const char *q_path,
3988 cache = 0; 4496 cache = 0;
3989 4497
3990 int skip = 0; 4498 int skip = 0;
4499 const char *max_show_default = "50";
4500 int max_show = xs_number_get(xs_dict_get_def(srv_config, "max_timeline_entries",
4501 max_show_default));
3991 int def_show = xs_number_get(xs_dict_get_def(srv_config, "def_timeline_entries", 4502 int def_show = xs_number_get(xs_dict_get_def(srv_config, "def_timeline_entries",
3992 xs_dict_get_def(srv_config, "max_timeline_entries", "50"))); 4503 xs_dict_get_def(srv_config, "max_timeline_entries",
4504 max_show_default)));
3993 int show = def_show; 4505 int show = def_show;
3994 4506
3995 if ((v = xs_dict_get(q_vars, "skip")) != NULL) 4507 if ((v = xs_dict_get(q_vars, "skip")) != NULL)
@@ -4015,13 +4527,15 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4015 /* a show of 0 has no sense */ 4527 /* a show of 0 has no sense */
4016 if (show == 0) 4528 if (show == 0)
4017 show = def_show; 4529 show = def_show;
4530 if (show > max_show)
4531 show = max_show;
4018 4532
4019 if (p_path == NULL) { /** public timeline **/ 4533 if (p_path == NULL) { /** public timeline **/
4020 xs *h = xs_str_localtime(0, "%Y-%m.html"); 4534 xs *h = xs_str_localtime(0, "%Y-%m.html");
4021 4535
4022 if (xs_type(xs_dict_get(snac.config, "private")) == XSTYPE_TRUE) { 4536 if (xs_type(xs_dict_get(snac.config, "private")) == XSTYPE_TRUE) {
4023 /** empty public timeline for private users **/ 4537 /** empty public timeline for private users **/
4024 *body = html_timeline(&snac, NULL, 1, 0, 0, 0, NULL, "", 1, error); 4538 *body = html_timeline(&snac, NULL, 1, 0, 0, 0, NULL, "", 1, error, terse);
4025 *b_size = strlen(*body); 4539 *b_size = strlen(*body);
4026 status = HTTP_STATUS_OK; 4540 status = HTTP_STATUS_OK;
4027 } 4541 }
@@ -4044,7 +4558,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4044 xs *pins = pinned_list(&snac); 4558 xs *pins = pinned_list(&snac);
4045 pins = xs_list_cat(pins, list); 4559 pins = xs_list_cat(pins, list);
4046 4560
4047 *body = html_timeline(&snac, pins, 1, skip, show, more, NULL, "", 1, error); 4561 *body = html_timeline(&snac, pins, 1, skip, show, more, NULL, "", 1, error, terse);
4048 4562
4049 *b_size = strlen(*body); 4563 *b_size = strlen(*body);
4050 status = HTTP_STATUS_OK; 4564 status = HTTP_STATUS_OK;
@@ -4060,9 +4574,15 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4060 status = HTTP_STATUS_UNAUTHORIZED; 4574 status = HTTP_STATUS_UNAUTHORIZED;
4061 } 4575 }
4062 else { 4576 else {
4063 const char *q = xs_dict_get(q_vars, "q"); 4577 const char *q = NULL;
4578 xs *cq = xs_dup(xs_dict_get(q_vars, "q"));
4064 xs *url_acct = NULL; 4579 xs *url_acct = NULL;
4065 4580
4581 if (xs_is_string(cq)) {
4582 cq = xs_strip_i(cq);
4583 q = cq;
4584 }
4585
4066 /* searching for an URL? */ 4586 /* searching for an URL? */
4067 if (q && xs_match(q, "https://*|http://*")) { 4587 if (q && xs_match(q, "https://*|http://*")) {
4068 /* may by an actor; try a webfinger */ 4588 /* may by an actor; try a webfinger */
@@ -4126,11 +4646,11 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4126 actor_add(actor, actor_obj); 4646 actor_add(actor, actor_obj);
4127 4647
4128 /* create a people list with only one element */ 4648 /* create a people list with only one element */
4129 l = xs_list_append(xs_list_new(), actor); 4649 l = xs_list_append(l, actor);
4130 4650
4131 xs *title = xs_fmt(L("Search results for account %s"), q); 4651 xs *title = xs_fmt(L("Search results for account %s"), q);
4132 4652
4133 page = html_people_list(&snac, l, title, "wf", NULL); 4653 page = html_people_list(&snac, l, title, "wf", NULL, 1);
4134 } 4654 }
4135 } 4655 }
4136 4656
@@ -4168,7 +4688,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4168 xs *title = xs_fmt(xs_list_len(tl) ? 4688 xs *title = xs_fmt(xs_list_len(tl) ?
4169 L("Search results for tag %s") : L("Nothing found for tag %s"), q); 4689 L("Search results for tag %s") : L("Nothing found for tag %s"), q);
4170 4690
4171 *body = html_timeline(&snac, tl, 0, skip, show, more, title, page, 0, error); 4691 *body = html_timeline(&snac, tl, 0, skip, show, more, title, page, 0, error, terse);
4172 *b_size = strlen(*body); 4692 *b_size = strlen(*body);
4173 status = HTTP_STATUS_OK; 4693 status = HTTP_STATUS_OK;
4174 } 4694 }
@@ -4193,7 +4713,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4193 title = xs_fmt(L("Nothing found for '%s'"), q); 4713 title = xs_fmt(L("Nothing found for '%s'"), q);
4194 4714
4195 *body = html_timeline(&snac, tl, 0, skip, tl_len, to || tl_len == show, 4715 *body = html_timeline(&snac, tl, 0, skip, tl_len, to || tl_len == show,
4196 title, page, 0, error); 4716 title, page, 0, error, terse);
4197 *b_size = strlen(*body); 4717 *b_size = strlen(*body);
4198 status = HTTP_STATUS_OK; 4718 status = HTTP_STATUS_OK;
4199 } 4719 }
@@ -4220,7 +4740,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4220 xs *list = timeline_list(&snac, "private", skip, show, &more); 4740 xs *list = timeline_list(&snac, "private", skip, show, &more);
4221 4741
4222 *body = html_timeline(&snac, list, 0, skip, show, 4742 *body = html_timeline(&snac, list, 0, skip, show,
4223 more, NULL, "/admin", 1, error); 4743 more, NULL, "/admin", 1, error, terse);
4224 4744
4225 *b_size = strlen(*body); 4745 *b_size = strlen(*body);
4226 status = HTTP_STATUS_OK; 4746 status = HTTP_STATUS_OK;
@@ -4247,7 +4767,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4247 xs *list0 = xs_list_append(xs_list_new(), md5); 4767 xs *list0 = xs_list_append(xs_list_new(), md5);
4248 xs *list = timeline_top_level(&snac, list0); 4768 xs *list = timeline_top_level(&snac, list0);
4249 4769
4250 *body = html_timeline(&snac, list, 0, 0, 0, 0, NULL, "/admin", 1, error); 4770 *body = html_timeline(&snac, list, 0, 0, 0, 0, NULL, "/admin", 1, error, terse);
4251 *b_size = strlen(*body); 4771 *b_size = strlen(*body);
4252 status = HTTP_STATUS_OK; 4772 status = HTTP_STATUS_OK;
4253 } 4773 }
@@ -4266,6 +4786,37 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4266 } 4786 }
4267 } 4787 }
4268 else 4788 else
4789 if (xs_startswith(p_path, "people/")) { /** a single actor **/
4790 if (!login(&snac, req)) {
4791 *body = xs_dup(uid);
4792 status = HTTP_STATUS_UNAUTHORIZED;
4793 }
4794 else {
4795 xs *actor_dict = NULL;
4796 const char *actor_id = NULL;
4797 xs *actor = NULL;
4798 xs_list *page_lst = xs_split_n(p_path, "?", 2);
4799 xs *page = xs_str_cat(xs_str_new("/"), xs_list_get(page_lst, 0));
4800 xs_list *l = xs_split_n(page, "/", 3);
4801 const char *actor_md5 = xs_list_get(l, 2);
4802
4803 if (valid_status(object_get_by_md5(actor_md5, &actor_dict)) &&
4804 (actor_id = xs_dict_get(actor_dict, "id")) != NULL &&
4805 valid_status(actor_get(actor_id, &actor))) {
4806 int more = 0;
4807 xs *list = timeline_simple_list(&snac, "private", skip, show, &more);
4808
4809 *body = html_people_one(&snac, actor_id, list, skip, show, more, page);
4810 *b_size = strlen(*body);
4811 status = HTTP_STATUS_OK;
4812 }
4813 else {
4814 *body = xs_dup(uid);
4815 status = HTTP_STATUS_NOT_FOUND;
4816 }
4817 }
4818 }
4819 else
4269 if (strcmp(p_path, "notifications") == 0) { /** the list of notifications **/ 4820 if (strcmp(p_path, "notifications") == 0) { /** the list of notifications **/
4270 if (!login(&snac, req)) { 4821 if (!login(&snac, req)) {
4271 *body = xs_dup(uid); 4822 *body = xs_dup(uid);
@@ -4288,7 +4839,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4288 xs *next = timeline_instance_list(skip + show, 1); 4839 xs *next = timeline_instance_list(skip + show, 1);
4289 4840
4290 *body = html_timeline(&snac, list, 0, skip, show, 4841 *body = html_timeline(&snac, list, 0, skip, show,
4291 xs_list_len(next), L("Showing instance timeline"), "/instance", 0, error); 4842 xs_list_len(next), L("Showing instance timeline"), "/instance", 0, error, terse);
4292 *b_size = strlen(*body); 4843 *b_size = strlen(*body);
4293 status = HTTP_STATUS_OK; 4844 status = HTTP_STATUS_OK;
4294 } 4845 }
@@ -4303,7 +4854,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4303 xs *list = pinned_list(&snac); 4854 xs *list = pinned_list(&snac);
4304 4855
4305 *body = html_timeline(&snac, list, 0, skip, show, 4856 *body = html_timeline(&snac, list, 0, skip, show,
4306 0, L("Pinned posts"), "", 0, error); 4857 0, L("Pinned posts"), "", 0, error, terse);
4307 *b_size = strlen(*body); 4858 *b_size = strlen(*body);
4308 status = HTTP_STATUS_OK; 4859 status = HTTP_STATUS_OK;
4309 } 4860 }
@@ -4318,7 +4869,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4318 xs *list = bookmark_list(&snac); 4869 xs *list = bookmark_list(&snac);
4319 4870
4320 *body = html_timeline(&snac, list, 0, skip, show, 4871 *body = html_timeline(&snac, list, 0, skip, show,
4321 0, L("Bookmarked posts"), "", 0, error); 4872 0, L("Bookmarked posts"), "", 0, error, terse);
4322 *b_size = strlen(*body); 4873 *b_size = strlen(*body);
4323 status = HTTP_STATUS_OK; 4874 status = HTTP_STATUS_OK;
4324 } 4875 }
@@ -4333,7 +4884,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4333 xs *list = draft_list(&snac); 4884 xs *list = draft_list(&snac);
4334 4885
4335 *body = html_timeline(&snac, list, 0, skip, show, 4886 *body = html_timeline(&snac, list, 0, skip, show,
4336 0, L("Post drafts"), "", 0, error); 4887 0, L("Post drafts"), "", 0, error, terse);
4337 *b_size = strlen(*body); 4888 *b_size = strlen(*body);
4338 status = HTTP_STATUS_OK; 4889 status = HTTP_STATUS_OK;
4339 } 4890 }
@@ -4348,7 +4899,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4348 xs *list = scheduled_list(&snac); 4899 xs *list = scheduled_list(&snac);
4349 4900
4350 *body = html_timeline(&snac, list, 0, skip, show, 4901 *body = html_timeline(&snac, list, 0, skip, show,
4351 0, L("Scheduled posts"), "", 0, error); 4902 0, L("Scheduled posts"), "", 0, error, terse);
4352 *b_size = strlen(*body); 4903 *b_size = strlen(*body);
4353 status = HTTP_STATUS_OK; 4904 status = HTTP_STATUS_OK;
4354 } 4905 }
@@ -4374,7 +4925,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4374 xs *title = xs_fmt(L("Showing timeline for list '%s'"), name); 4925 xs *title = xs_fmt(L("Showing timeline for list '%s'"), name);
4375 4926
4376 *body = html_timeline(&snac, ttl, 0, skip, show, 4927 *body = html_timeline(&snac, ttl, 0, skip, show,
4377 xs_list_len(next), title, base, 1, error); 4928 xs_list_len(next), title, base, 1, error, terse);
4378 *b_size = strlen(*body); 4929 *b_size = strlen(*body);
4379 status = HTTP_STATUS_OK; 4930 status = HTTP_STATUS_OK;
4380 } 4931 }
@@ -4394,7 +4945,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4394 4945
4395 list = xs_list_append(list, md5); 4946 list = xs_list_append(list, md5);
4396 4947
4397 *body = html_timeline(&snac, list, 1, 0, 0, 0, NULL, "", 1, error); 4948 *body = html_timeline(&snac, list, 1, 0, 0, 0, NULL, "", 1, error, terse);
4398 *b_size = strlen(*body); 4949 *b_size = strlen(*body);
4399 status = HTTP_STATUS_OK; 4950 status = HTTP_STATUS_OK;
4400 } 4951 }
@@ -4582,8 +5133,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
4582 xs *msg = msg_admiration(&snac, id, *action == 'L' ? "Like" : "Announce"); 5133 xs *msg = msg_admiration(&snac, id, *action == 'L' ? "Like" : "Announce");
4583 5134
4584 if (msg != NULL) { 5135 if (msg != NULL) {
5136 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, *action == 'L' ? 1 : 0, msg);
4585 enqueue_message(&snac, msg); 5137 enqueue_message(&snac, msg);
4586 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, *action == 'L' ? 1 : 0);
4587 5138
4588 status = HTTP_STATUS_SEE_OTHER; 5139 status = HTTP_STATUS_SEE_OTHER;
4589 } 5140 }
@@ -4858,6 +5409,9 @@ int html_post_handler(const xs_dict *req, const char *q_path,
4858 /* overwrite object, not updating the indexes */ 5409 /* overwrite object, not updating the indexes */
4859 object_add_ow(edit_id, msg); 5410 object_add_ow(edit_id, msg);
4860 5411
5412 /* index tags */
5413 tag_index(edit_id, msg);
5414
4861 /* update message */ 5415 /* update message */
4862 c_msg = msg_update(&snac, msg); 5416 c_msg = msg_update(&snac, msg);
4863 } 5417 }
@@ -4891,12 +5445,36 @@ int html_post_handler(const xs_dict *req, const char *q_path,
4891 5445
4892 status = HTTP_STATUS_SEE_OTHER; 5446 status = HTTP_STATUS_SEE_OTHER;
4893 5447
5448 if (strcmp(action, L("EmojiUnreact")) == 0) { /** **/
5449 const char *eid = xs_dict_get(p_vars, "eid");
5450
5451 if (eid != NULL) {
5452 xs *n_msg = msg_emoji_unreact(&snac, id, eid);
5453
5454 if (n_msg != NULL)
5455 enqueue_message(&snac, n_msg);
5456 }
5457 }
5458 else
5459 if (strcmp(action, L("EmojiReact")) == 0) { /** **/
5460 xs *eid = xs_dup(xs_dict_get(p_vars, "eid"));
5461
5462 eid = xs_strip_chars_i(eid, ":");
5463
5464 const xs_dict *ret = msg_emoji_init(&snac, id, eid);
5465 /* fails if either invalid or already reacted */
5466 if (!ret)
5467 ret = msg_emoji_unreact(&snac, id, eid);
5468 if (!ret)
5469 status = HTTP_STATUS_NOT_FOUND;
5470 }
5471 else
4894 if (strcmp(action, L("Like")) == 0) { /** **/ 5472 if (strcmp(action, L("Like")) == 0) { /** **/
4895 xs *msg = msg_admiration(&snac, id, "Like"); 5473 xs *msg = msg_admiration(&snac, id, "Like");
4896 5474
4897 if (msg != NULL) { 5475 if (msg != NULL) {
5476 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 1, msg);
4898 enqueue_message(&snac, msg); 5477 enqueue_message(&snac, msg);
4899 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 1);
4900 } 5478 }
4901 } 5479 }
4902 else 5480 else
@@ -4904,8 +5482,8 @@ int html_post_handler(const xs_dict *req, const char *q_path,
4904 xs *msg = msg_admiration(&snac, id, "Announce"); 5482 xs *msg = msg_admiration(&snac, id, "Announce");
4905 5483
4906 if (msg != NULL) { 5484 if (msg != NULL) {
5485 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0, msg);
4907 enqueue_message(&snac, msg); 5486 enqueue_message(&snac, msg);
4908 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0);
4909 } 5487 }
4910 } 5488 }
4911 else 5489 else
@@ -5022,7 +5600,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
5022 } 5600 }
5023 else { 5601 else {
5024 /* delete an entry */ 5602 /* delete an entry */
5025 if (xs_startswith(id, snac.actor) && !is_draft(&snac, id)) { 5603 if (is_msg_mine(&snac, id) && !is_draft(&snac, id)) {
5026 /* it's a post by us: generate a delete */ 5604 /* it's a post by us: generate a delete */
5027 xs *msg = msg_delete(&snac, id); 5605 xs *msg = msg_delete(&snac, id);
5028 5606
@@ -5351,6 +5929,33 @@ int html_post_handler(const xs_dict *req, const char *q_path,
5351 5929
5352 status = HTTP_STATUS_SEE_OTHER; 5930 status = HTTP_STATUS_SEE_OTHER;
5353 } 5931 }
5932 else
5933 if (p_path && strcmp(p_path, "admin/muted-words") == 0) {
5934 const char *words = xs_dict_get(p_vars, "muted_words");
5935
5936 if (xs_is_string(words)) {
5937 xs *new_words = xs_list_new();
5938 xs *l = xs_split(words, "\n");
5939 const char *v;
5940
5941 xs_list_foreach(l, v) {
5942 xs *s1 = xs_strip_i(xs_dup(v));
5943 s1 = xs_replace_i(s1, " ", "");
5944
5945 if (*s1 == '\0')
5946 continue;
5947
5948 xs *s2 = xs_utf8_to_lower(s1);
5949
5950 new_words = xs_list_insert_sorted(new_words, s2);
5951 }
5952
5953 snac.config = xs_dict_set(snac.config, "muted_words", new_words);
5954 user_persist(&snac, 0);
5955 }
5956
5957 status = HTTP_STATUS_SEE_OTHER;
5958 }
5354 5959
5355 if (status == HTTP_STATUS_SEE_OTHER) { 5960 if (status == HTTP_STATUS_SEE_OTHER) {
5356 const char *hard_redir = xs_dict_get(p_vars, "hard-redir"); 5961 const char *hard_redir = xs_dict_get(p_vars, "hard-redir");
diff --git a/http.c b/http.c
index f0b1314..4f0b2fa 100644
--- a/http.c
+++ b/http.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
diff --git a/httpd.c b/httpd.c
index a8cd849..f46cfca 100644
--- a/httpd.c
+++ b/httpd.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
@@ -257,7 +257,7 @@ int server_get_handler(xs_dict *req, const char *q_path,
257 else { 257 else {
258 xs *page = xs_fmt("?t=%s", t); 258 xs *page = xs_fmt("?t=%s", t);
259 xs *title = xs_fmt(L("Search results for tag #%s"), t); 259 xs *title = xs_fmt(L("Search results for tag #%s"), t);
260 *body = html_timeline(NULL, tl, 0, skip, show, more, title, page, 0, NULL); 260 *body = html_timeline(NULL, tl, 0, skip, show, more, title, page, 0, NULL, 0);
261 } 261 }
262 } 262 }
263 else 263 else
@@ -265,7 +265,7 @@ int server_get_handler(xs_dict *req, const char *q_path,
265 /** instance timeline **/ 265 /** instance timeline **/
266 xs *tl = timeline_instance_list(0, 30); 266 xs *tl = timeline_instance_list(0, 30);
267 *body = html_timeline(NULL, tl, 0, 0, 0, 0, 267 *body = html_timeline(NULL, tl, 0, 0, 0, 0,
268 L("Recent posts by users in this instance"), NULL, 0, NULL); 268 L("Recent posts by users in this instance"), NULL, 0, NULL, 0);
269 } 269 }
270 else 270 else
271 *body = greeting_html(); 271 *body = greeting_html();
diff --git a/main.c b/main.c
index 6915bd0..e7d5b0d 100644
--- a/main.c
+++ b/main.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
@@ -18,7 +18,7 @@
18int usage(const char *cmd) 18int usage(const char *cmd)
19{ 19{
20 printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n"); 20 printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n");
21 printf("Copyright (c) 2022 - 2025 grunfink et al. / MIT license\n"); 21 printf("Copyright (c) 2022 - 2026 grunfink et al. / MIT license\n");
22 printf("\n"); 22 printf("\n");
23 23
24 if (cmd == NULL) { 24 if (cmd == NULL) {
@@ -76,7 +76,9 @@ int usage(const char *cmd)
76 "list_create {basedir} {uid} {name} Creates a new list\n" 76 "list_create {basedir} {uid} {name} Creates a new list\n"
77 "list_remove {basedir} {uid} {name} Removes an existing list\n" 77 "list_remove {basedir} {uid} {name} Removes an existing list\n"
78 "list_add {basedir} {uid} {name} {acct} Adds an account (@user@host or actor url) to a list\n" 78 "list_add {basedir} {uid} {name} {acct} Adds an account (@user@host or actor url) to a list\n"
79 "list_del {basedir} {uid} {name} {actor} Deletes an actor URL from a list\n"; 79 "list_del {basedir} {uid} {name} {actor} Deletes an actor URL from a list\n"
80 "top_ten {basedir} {uid} [{N}] Prints the most popular posts\n"
81 "refresh {basedir} {uid} Refreshes all actors\n";
80 82
81 if (cmd == NULL) 83 if (cmd == NULL)
82 printf("%s", cmds); 84 printf("%s", cmds);
@@ -350,6 +352,38 @@ int main(int argc, char *argv[])
350 return 0; 352 return 0;
351 } 353 }
352 354
355 if (strcmp(cmd, "top_ten") == 0) { /** **/
356 int count = 10;
357 const char *n = GET_ARGV();
358 if (xs_is_string(n))
359 count = atoi(n);
360
361 xs *l = user_top_ten(&snac, count);
362 const xs_list *i;
363
364 xs_list_foreach(l, i) {
365 printf("%s %ld★ %ld↺\n", xs_list_get(i, 0),
366 xs_number_get_l(xs_list_get(i, 1)),
367 xs_number_get_l(xs_list_get(i, 2)));
368 }
369
370 return 0;
371 }
372
373 if (strcmp(cmd, "refresh") == 0) { /** **/
374 xs *fwers = follower_list(&snac);
375 xs *fwing = following_list(&snac);
376 const char *id;
377
378 xs_list_foreach(fwers, id)
379 enqueue_actor_refresh(&snac, id, 0);
380
381 xs_list_foreach(fwing, id)
382 enqueue_actor_refresh(&snac, id, 0);
383
384 return 0;
385 }
386
353 if ((url = GET_ARGV()) == NULL) 387 if ((url = GET_ARGV()) == NULL)
354 return usage(cmd); 388 return usage(cmd);
355 389
@@ -498,7 +532,7 @@ int main(int argc, char *argv[])
498 532
499 if (msg != NULL) { 533 if (msg != NULL) {
500 enqueue_message(&snac, msg); 534 enqueue_message(&snac, msg);
501 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0); 535 timeline_admire(&snac, xs_dict_get(msg, "object"), snac.actor, 0, "");
502 536
503 if (dbglevel) { 537 if (dbglevel) {
504 xs_json_dump(msg, 4, stdout); 538 xs_json_dump(msg, 4, stdout);
diff --git a/mastoapi.c b/mastoapi.c
index 94912f1..dd80abc 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#ifndef NO_MASTODON_API 4#ifndef NO_MASTODON_API
5 5
@@ -1158,6 +1158,103 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
1158 st = xs_dict_append(st, "tags", htl); 1158 st = xs_dict_append(st, "tags", htl);
1159 st = xs_dict_append(st, "emojis", eml); 1159 st = xs_dict_append(st, "emojis", eml);
1160 } 1160 }
1161 {
1162 xs *rl = object_get_emoji_reacts(id);
1163 xs *frl = xs_list_new(); /* final */
1164 xs *sfrl = xs_dict_new(); /* seen */
1165 int c = 0;
1166 const char *v;
1167
1168 while (xs_list_next(rl, &v, &c)) {
1169 xs *msg = NULL;
1170 if (valid_status(object_get_by_md5(v, &msg))) {
1171 const char *content = xs_dict_get(msg, "content");
1172 const char *actor = xs_dict_get(msg, "actor");
1173 const xs_list *contentl = xs_dict_get(sfrl, content);
1174
1175 if ((snac && is_muted(snac, actor)) || is_instance_blocked(actor))
1176 continue;
1177
1178 /* NOTE: idk when there are no actor, but i encountered that bug.
1179 * Probably because of one of my previous attempts.
1180 * Keeping this just in case, can remove later */
1181 const char *me = actor && snac && strcmp(actor, snac->actor) == 0 ?
1182 xs_stock(XSTYPE_TRUE) : xs_stock(XSTYPE_FALSE);
1183 int count = 1;
1184
1185 if (contentl) {
1186 count = atoi(xs_list_get(contentl, 0)) + 1;
1187 if (strncmp(xs_list_get(contentl, 1), xs_stock(XSTYPE_TRUE), 1) == 0)
1188 me = xs_stock(XSTYPE_TRUE);
1189 }
1190
1191 xs *fl = xs_list_new();
1192 xs *c1 = xs_fmt("%d", count);
1193 fl = xs_list_append(fl, c1, me);
1194 sfrl = xs_dict_append(sfrl, content, fl);
1195 }
1196 }
1197
1198 c = 0;
1199
1200 while (xs_list_next(rl, &v, &c)) {
1201 xs *msg = NULL;
1202 if (valid_status(object_get_by_md5(v, &msg))) {
1203 xs *d1 = xs_dict_new();
1204
1205 const xs_dict *icon = xs_dict_get(xs_list_get(xs_dict_get(msg, "tag"), 0), "icon");
1206 const char *o_url = xs_dict_get(icon, "url");
1207 const char *name = xs_dict_get(msg, "content");
1208 const char *actor = xs_dict_get(msg, "actor");
1209
1210 xs *nm = xs_dup(name);
1211 xs *url = NULL;
1212
1213 if (!xs_is_null(o_url)) {
1214 if (actor && snac && !strcmp(actor, snac->actor))
1215 url = make_url(o_url, NULL, 1);
1216 else
1217 url = xs_dup(o_url);
1218 }
1219
1220 xs *accounts = xs_list_new();
1221 if (actor) {
1222 xs *d2 = xs_dict_new();
1223 object_get(actor, &d2);
1224 xs *e_acct = mastoapi_account(snac, d2);
1225 accounts = xs_list_append(accounts, e_acct);
1226 }
1227
1228 const xs_list *item = xs_dict_get(sfrl, nm);
1229 const xs_str *nb = xs_list_get(item, 0);
1230 const xs_val *me = xs_list_get(item, 1);
1231 if (item == NULL)
1232 continue;
1233
1234 if (nm && strcmp(nm, "")) {
1235 if (url && strcmp(url, "")) {
1236 d1 = xs_dict_append(d1, "name", nm);
1237 d1 = xs_dict_append(d1, "shortcode", nm);
1238 d1 = xs_dict_append(d1, "accounts", accounts);
1239 d1 = xs_dict_append(d1, "me", me);
1240 d1 = xs_dict_append(d1, "url", url);
1241 d1 = xs_dict_append(d1, "static_url", url);
1242 d1 = xs_dict_append(d1, "visible_in_picker", xs_stock(XSTYPE_TRUE));
1243 d1 = xs_dict_append(d1, "count", nb);
1244 } else {
1245 d1 = xs_dict_append(d1, "name", nm);
1246 d1 = xs_dict_append(d1, "count", nb);
1247 d1 = xs_dict_append(d1, "me", me);
1248 d1 = xs_dict_append(d1, "visible_in_picker", xs_stock(XSTYPE_TRUE));
1249 }
1250 sfrl = xs_dict_del(sfrl, nm);
1251 frl = xs_list_append(frl, d1);
1252 }
1253 }
1254 }
1255
1256 st = xs_dict_append(st, "reactions", frl);
1257 }
1161 1258
1162 xs_free(idx); 1259 xs_free(idx);
1163 xs_free(ixc); 1260 xs_free(ixc);
@@ -1712,6 +1809,37 @@ xs_list *mastoapi_account_lists(snac *user, const char *uid)
1712} 1809}
1713 1810
1714 1811
1812xs_list *build_childrens(const xs_dict *msg, snac *snac1) {
1813 xs_list *ret = xs_list_new();
1814 xs *children = object_children(xs_dict_get(msg, "id"));
1815 char *p = children;
1816 const xs_str *v;
1817
1818 while (xs_list_iter(&p, &v)) {
1819 xs *m2 = NULL;
1820
1821 if (valid_status(timeline_get_by_md5(snac1, v, &m2))) {
1822 if (xs_is_null(xs_dict_get(m2, "name"))) {
1823 xs *st = mastoapi_status(snac1, m2);
1824
1825 if (st) {
1826 /* childrens children */
1827 xs *childs = build_childrens(m2, snac1);
1828 ret = xs_list_append(ret, st);
1829 if (xs_list_len(childs)) {
1830 char *p2 = childs;
1831 while (xs_list_iter(&p2, &v))
1832 ret = xs_list_append(ret, v);
1833
1834 }
1835 }
1836 }
1837 }
1838 }
1839 return ret;
1840}
1841
1842
1715int mastoapi_get_handler(const xs_dict *req, const char *q_path, 1843int mastoapi_get_handler(const xs_dict *req, const char *q_path,
1716 char **body, int *b_size, char **ctype, xs_str **link) 1844 char **body, int *b_size, char **ctype, xs_str **link)
1717{ 1845{
@@ -1892,60 +2020,64 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
1892 } 2020 }
1893 else 2021 else
1894 if (strcmp(opt, "statuses") == 0) { /** **/ 2022 if (strcmp(opt, "statuses") == 0) { /** **/
1895 /* the public list of posts of a user */ 2023 if (logged_in || xs_type(xs_dict_get(snac2.config, "private")) == XSTYPE_FALSE) {
1896 const char *limit_s = xs_dict_get(args, "limit"); 2024 /* the public list of posts of a user */
1897 const char *o_max_id = xs_dict_get(args, "max_id"); 2025 const char *limit_s = xs_dict_get(args, "limit");
1898 int limit = limit_s ? atoi(limit_s) : 20; 2026 const char *o_max_id = xs_dict_get(args, "max_id");
1899 xs *max_id = o_max_id ? xs_tolower_i(xs_dup(o_max_id)) : NULL; 2027 int limit = limit_s ? atoi(limit_s) : 20;
2028 xs *max_id = o_max_id ? xs_tolower_i(xs_dup(o_max_id)) : NULL;
1900 2029
1901 srv_debug(1, xs_fmt("account statuses: max_id=%s limit=%d", max_id ? max_id : "(null)", limit)); 2030 srv_debug(1, xs_fmt("account statuses: max_id=%s limit=%d", max_id ? max_id : "(null)", limit));
1902 2031
1903 xs *timeline = timeline_simple_list(&snac2, "public", 0, 256, NULL); 2032 xs *timeline = timeline_simple_list(&snac2, "public", 0, 256, NULL);
1904 xs_list *p = timeline; 2033 xs_list *p = timeline;
1905 const xs_str *v; 2034 const xs_str *v;
1906 xs_set seen; 2035 xs_set seen;
1907 int cnt = 0; 2036 int cnt = 0;
1908 int skip_until_max = max_id != NULL; 2037 int skip_until_max = max_id != NULL;
1909 2038
1910 out = xs_list_new(); 2039 out = xs_list_new();
1911 xs_set_init(&seen); 2040 xs_set_init(&seen);
1912 2041
1913 while (xs_list_iter(&p, &v) && cnt < limit) { 2042 while (xs_list_iter(&p, &v) && cnt < limit) {
1914 xs *msg = NULL; 2043 xs *msg = NULL;
1915 2044
1916 if (valid_status(timeline_get_by_md5(&snac2, v, &msg))) { 2045 if (valid_status(timeline_get_by_md5(&snac2, v, &msg))) {
1917 const char *msg_id = xs_dict_get(msg, "id"); 2046 const char *msg_id = xs_dict_get(msg, "id");
1918 2047
1919 /* add only posts by the author */ 2048 /* add only posts by the author */
1920 if (!xs_is_null(msg_id) && 2049 if (!xs_is_null(msg_id) &&
1921 strcmp(xs_dict_get(msg, "type"), "Note") == 0 && 2050 strcmp(xs_dict_get(msg, "type"), "Note") == 0 &&
1922 xs_startswith(xs_dict_get(msg, "id"), snac2.actor) && is_msg_public(msg)) { 2051 is_msg_mine(&snac2, xs_dict_get(msg, "id")) && is_msg_public(msg)) {
1923 2052
1924 /* if max_id is set, skip entries until we find it */ 2053 /* if max_id is set, skip entries until we find it */
1925 if (skip_until_max) { 2054 if (skip_until_max) {
1926 xs *mid = mastoapi_id(msg); 2055 xs *mid = mastoapi_id(msg);
1927 if (strcmp(mid, max_id) == 0) { 2056 if (strcmp(mid, max_id) == 0) {
1928 skip_until_max = 0; 2057 skip_until_max = 0;
1929 srv_debug(2, xs_fmt("account statuses: found max_id, starting from next post")); 2058 srv_debug(2, xs_fmt("account statuses: found max_id, starting from next post"));
2059 }
2060 continue;
1930 } 2061 }
1931 continue;
1932 }
1933 2062
1934 /* deduplicate by message id */ 2063 /* deduplicate by message id */
1935 if (xs_set_add(&seen, msg_id) == 1) { 2064 if (xs_set_add(&seen, msg_id) == 1) {
1936 xs *st = mastoapi_status(&snac2, msg); 2065 xs *st = mastoapi_status(&snac2, msg);
1937 2066
1938 if (st) { 2067 if (st) {
1939 out = xs_list_append(out, st); 2068 out = xs_list_append(out, st);
1940 cnt++; 2069 cnt++;
2070 }
1941 } 2071 }
1942 } 2072 }
1943 } 2073 }
1944 } 2074 }
1945 }
1946 2075
1947 srv_debug(1, xs_fmt("account statuses: returning %d posts (requested %d)", cnt, limit)); 2076 srv_debug(1, xs_fmt("account statuses: returning %d posts (requested %d)", cnt, limit));
1948 xs_set_free(&seen); 2077 xs_set_free(&seen);
2078 }
2079 else
2080 status = HTTP_STATUS_UNAUTHORIZED;
1949 } 2081 }
1950 else 2082 else
1951 if (strcmp(opt, "featured_tags") == 0) { 2083 if (strcmp(opt, "featured_tags") == 0) {
@@ -2202,15 +2334,24 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2202 if (noti == NULL) 2334 if (noti == NULL)
2203 continue; 2335 continue;
2204 2336
2337 const xs_dict *tag = xs_list_get(xs_dict_get_path(noti, "msg.tag"), 0);
2338
2205 const char *type = xs_dict_get(noti, "type"); 2339 const char *type = xs_dict_get(noti, "type");
2206 const char *utype = xs_dict_get(noti, "utype"); 2340 const char *utype = xs_dict_get(noti, "utype");
2207 const char *objid = xs_dict_get(noti, "objid"); 2341 const char *objid = xs_dict_get(noti, "objid");
2208 const char *id = xs_dict_get(noti, "id"); 2342 const char *id = xs_dict_get(noti, "id");
2209 const char *actid = xs_dict_get(noti, "actor"); 2343 const char *actid = xs_dict_get(noti, "actor");
2344
2345 int isEmoji = 0;
2346
2210 xs *fid = xs_replace(id, ".", ""); 2347 xs *fid = xs_replace(id, ".", "");
2211 xs *actor = NULL; 2348 xs *actor = NULL;
2212 xs *entry = NULL; 2349 xs *entry = NULL;
2213 2350
2351 if (tag) {
2352 isEmoji = strcmp(xs_dict_get(tag, "type"), "Emoji") ? 0 : 1;
2353 }
2354
2214 if (!valid_status(actor_get(actid, &actor))) 2355 if (!valid_status(actor_get(actid, &actor)))
2215 continue; 2356 continue;
2216 2357
@@ -2234,9 +2375,12 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2234 } 2375 }
2235 2376
2236 /* convert the type */ 2377 /* convert the type */
2237 if (strcmp(type, "Like") == 0 || strcmp(type, "EmojiReact") == 0) 2378 if (strcmp(type, "Like") == 0 && !isEmoji)
2238 type = "favourite"; 2379 type = "favourite";
2239 else 2380 else
2381 if (isEmoji || strcmp(type, "EmojiReact") == 0)
2382 type = "reaction";
2383 else
2240 if (strcmp(type, "Announce") == 0) 2384 if (strcmp(type, "Announce") == 0)
2241 type = "reblog"; 2385 type = "reblog";
2242 else 2386 else
@@ -2277,8 +2421,31 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2277 if (strcmp(type, "follow") != 0 && !xs_is_null(objid)) { 2421 if (strcmp(type, "follow") != 0 && !xs_is_null(objid)) {
2278 xs *st = mastoapi_status(&snac1, entry); 2422 xs *st = mastoapi_status(&snac1, entry);
2279 2423
2280 if (st) 2424 if (st) {
2281 mn = xs_dict_append(mn, "status", st); 2425 mn = xs_dict_append(mn, "status", st);
2426
2427 if (strcmp(type, "reaction") == 0 && !xs_is_null(objid)) {
2428 const char *eid = NULL;
2429 const char *url = NULL;
2430 int utf = 0;
2431
2432 const xs_dict *tag = xs_list_get(xs_dict_get_path(noti, "msg.tag"), 0);
2433 const char *content = xs_dict_get_path(noti, "msg.content");
2434
2435 url = xs_dict_get(xs_dict_get(tag, "icon"), "url");
2436 eid = xs_dict_get(tag, "name");
2437
2438 if (eid && url) {
2439 mn = xs_dict_append(mn, "emoji", eid);
2440 mn = xs_dict_append(mn, "emoji_url", url);
2441 }
2442
2443 if (xs_is_emoji((utf = xs_utf8_dec(&content)))) {
2444 xs *s1 = xs_fmt("&#%d;", utf);
2445 mn = xs_dict_append(mn, "name", s1);
2446 }
2447 }
2448 }
2282 } 2449 }
2283 2450
2284 out = xs_list_append(out, mn); 2451 out = xs_list_append(out, mn);
@@ -2480,19 +2647,33 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2480 if (strcmp(cmd, "/v1/custom_emojis") == 0) { /** **/ 2647 if (strcmp(cmd, "/v1/custom_emojis") == 0) { /** **/
2481 xs *emo = emojis(); 2648 xs *emo = emojis();
2482 xs *list = xs_list_new(); 2649 xs *list = xs_list_new();
2483 int c = 0;
2484 const xs_str *k; 2650 const xs_str *k;
2485 const xs_val *v; 2651 const xs_val *v;
2486 while(xs_dict_next(emo, &k, &v, &c)) { 2652 xs_dict_foreach(emo, k, v) {
2487 xs *current = xs_dict_new(); 2653 xs *current = xs_dict_new();
2488 if (xs_startswith(v, "https://") && xs_startswith((xs_mime_by_ext(v)), "image/")) { 2654 if ((xs_startswith(v, "https://") && xs_startswith((xs_mime_by_ext(v)), "image/")) || xs_type(v) == XSTYPE_DICT) {
2489 /* remove first and last colon */ 2655 /* remove first and last colon */
2490 xs *shortcode = xs_replace(k, ":", ""); 2656 if (xs_type(v) == XSTYPE_DICT) {
2491 current = xs_dict_append(current, "shortcode", shortcode); 2657 const char *v2;
2492 current = xs_dict_append(current, "url", v); 2658 const char *cat = k;
2493 current = xs_dict_append(current, "static_url", v); 2659 xs_dict_foreach(v, k, v2) {
2494 current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE)); 2660 xs *shortcode = xs_replace(k, ":", "");
2495 list = xs_list_append(list, current); 2661 current = xs_dict_append(current, "shortcode", shortcode);
2662 current = xs_dict_append(current, "url", v2);
2663 current = xs_dict_append(current, "static_url", v2);
2664 current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE));
2665 current = xs_dict_append(current, "category", cat);
2666 list = xs_list_append(list, current);
2667 }
2668 }
2669 else {
2670 xs *shortcode = xs_replace(k, ":", "");
2671 current = xs_dict_append(current, "shortcode", shortcode);
2672 current = xs_dict_append(current, "url", v);
2673 current = xs_dict_append(current, "static_url", v);
2674 current = xs_dict_append(current, "visible_in_picker", xs_stock(XSTYPE_TRUE));
2675 list = xs_list_append(list, current);
2676 }
2496 } 2677 }
2497 } 2678 }
2498 *body = xs_json_dumps(list, 0); 2679 *body = xs_json_dumps(list, 0);
@@ -2594,6 +2775,11 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2594 "\"max_expiration\":2629746," 2775 "\"max_expiration\":2629746,"
2595 "\"max_options\":8,\"min_expiration\":300}"); 2776 "\"max_options\":8,\"min_expiration\":300}");
2596 cfg = xs_dict_append(cfg, "polls", d14); 2777 cfg = xs_dict_append(cfg, "polls", d14);
2778
2779
2780 xs *d15 = xs_json_loads("{\"max_reactions\":50}");
2781 cfg = xs_dict_append(cfg, "reactions", d15);
2782
2597 } 2783 }
2598 2784
2599 ins = xs_dict_append(ins, "configuration", cfg); 2785 ins = xs_dict_append(ins, "configuration", cfg);
@@ -2680,8 +2866,6 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2680 /* return ancestors and children */ 2866 /* return ancestors and children */
2681 xs *anc = xs_list_new(); 2867 xs *anc = xs_list_new();
2682 xs *des = xs_list_new(); 2868 xs *des = xs_list_new();
2683 xs_list *p;
2684 const xs_str *v;
2685 char pid[MD5_HEX_SIZE]; 2869 char pid[MD5_HEX_SIZE];
2686 2870
2687 /* build the [grand]parent list, moving up */ 2871 /* build the [grand]parent list, moving up */
@@ -2701,21 +2885,9 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
2701 } 2885 }
2702 2886
2703 /* build the children list */ 2887 /* build the children list */
2704 xs *children = object_children(xs_dict_get(msg, "id")); 2888 xs *childs = build_childrens(msg, &snac1);
2705 p = children; 2889 if (xs_list_len(childs) > 0)
2706 2890 des = xs_list_cat(des, childs);
2707 while (xs_list_iter(&p, &v)) {
2708 xs *m2 = NULL;
2709
2710 if (valid_status(timeline_get_by_md5(&snac1, v, &m2))) {
2711 if (xs_is_null(xs_dict_get(m2, "name"))) {
2712 xs *st = mastoapi_status(&snac1, m2);
2713
2714 if (st)
2715 des = xs_list_append(des, st);
2716 }
2717 }
2718 }
2719 2891
2720 out = xs_dict_new(); 2892 out = xs_dict_new();
2721 out = xs_dict_append(out, "ancestors", anc); 2893 out = xs_dict_append(out, "ancestors", anc);
@@ -3044,7 +3216,10 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
3044 xs *app = xs_dict_new(); 3216 xs *app = xs_dict_new();
3045 xs *id = xs_replace_i(tid(0), ".", ""); 3217 xs *id = xs_replace_i(tid(0), ".", "");
3046 xs *csec = random_str(); 3218 xs *csec = random_str();
3047 xs *vkey = random_str(); 3219 xs *vkey = xs_dup(xs_dict_get(srv_config, "vkey"));
3220 if (vkey == NULL)
3221 vkey = random_str();
3222
3048 xs *cid = NULL; 3223 xs *cid = NULL;
3049 3224
3050 /* pick a non-existent random cid */ 3225 /* pick a non-existent random cid */
@@ -3216,7 +3391,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
3216 3391
3217 if (n_msg != NULL) { 3392 if (n_msg != NULL) {
3218 enqueue_message(&snac, n_msg); 3393 enqueue_message(&snac, n_msg);
3219 timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 1); 3394 timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 1, msg);
3220 3395
3221 out = mastoapi_status(&snac, msg); 3396 out = mastoapi_status(&snac, msg);
3222 } 3397 }
@@ -3232,12 +3407,35 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
3232 } 3407 }
3233 } 3408 }
3234 else 3409 else
3410 if (strcmp(op, "react") == 0) { /** **/
3411 const char *eid = xs_list_get(l, 5);
3412 xs *n_msg = msg_emoji_init(&snac, id, eid);
3413 if (n_msg)
3414 out = mastoapi_status(&snac, n_msg);
3415 }
3416 else
3417 if (strcmp(op, "unreact") == 0) { /** **/
3418 const char *eid = xs_list_get(l, 5);
3419 xs *content = xs_fmt("%s", eid);
3420
3421 if (eid) {
3422 xs *n_msg = msg_emoji_unreact(&snac, id, content);
3423
3424 if (n_msg != NULL) {
3425 enqueue_message(&snac, n_msg);
3426
3427 out = mastoapi_status(&snac, msg);
3428 }
3429 }
3430 }
3431
3432 else
3235 if (strcmp(op, "reblog") == 0) { /** **/ 3433 if (strcmp(op, "reblog") == 0) { /** **/
3236 xs *n_msg = msg_admiration(&snac, id, "Announce"); 3434 xs *n_msg = msg_admiration(&snac, id, "Announce");
3237 3435
3238 if (n_msg != NULL) { 3436 if (n_msg != NULL) {
3239 enqueue_message(&snac, n_msg); 3437 enqueue_message(&snac, n_msg);
3240 timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 0); 3438 timeline_admire(&snac, xs_dict_get(n_msg, "object"), snac.actor, 0, msg);
3241 3439
3242 out = mastoapi_status(&snac, msg); 3440 out = mastoapi_status(&snac, msg);
3243 } 3441 }
@@ -3824,7 +4022,7 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
3824 if (valid_status(object_get_by_md5(p, &obj))) { 4022 if (valid_status(object_get_by_md5(p, &obj))) {
3825 const char *id = xs_dict_get(obj, "id"); 4023 const char *id = xs_dict_get(obj, "id");
3826 4024
3827 if (xs_is_string(id) && xs_startswith(id, snac.actor)) { 4025 if (xs_is_string(id) && is_msg_mine(&snac, id)) {
3828 xs *out = mastoapi_status(&snac, obj); 4026 xs *out = mastoapi_status(&snac, obj);
3829 4027
3830 xs *msg = msg_delete(&snac, id); 4028 xs *msg = msg_delete(&snac, id);
diff --git a/po/cs.po b/po/cs.po
index d855e79..bf2b03a 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -8,694 +8,694 @@ msgstr ""
8"Language: cs\n" 8"Language: cs\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Citlivý obsah: " 13msgstr "Citlivý obsah: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Varování k citlivému obsahu" 17msgstr "Varování o citlivém obsahu"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Pouze pro zmíněné osoby:" 20msgstr "Pouze pro zmíněné osoby:"
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Odpovědět na (URL):" 24msgstr "Odpovědět na (URL):"
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Nesdílet, pouze uložit do rozepsaných" 28msgstr "Nesdílet, pouze uložit do rozepsaných"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Rozepsané:" 32msgstr "Rozepsané:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Přílohy..." 36msgstr "Přílohy..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Soubor:" 40msgstr "Soubor:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Pro smazání přilohy vymažte toto pole" 44msgstr "Pro smazání přilohy vymažte toto pole"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Popisek přílohy" 48msgstr "Popisek přílohy"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Anketa..." 52msgstr "Anketa..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Možnosti ankety (jedna na řádek, max 8):" 56msgstr "Možnosti ankety (jedna na řádek, max 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Vyber jednu" 60msgstr "Vyber jednu"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Vyber více možností" 64msgstr "Vyber více možností"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Konec za 5 minut" 68msgstr "Konec za 5 minut"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Konec za 1 hodinu" 72msgstr "Konec za 1 hodinu"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Konec za 1 den" 76msgstr "Konec za 1 den"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Poslat" 80msgstr "Poslat"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Popisek stránky" 84msgstr "Popisek stránky"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email administrátora" 88msgstr "Email administrátora"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "ÚÄet adminitrátora" 92msgstr "ÚÄet adminitrátora"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d sledovaných, %d sledujících" 97msgstr "%d sledovaných, %d sledujících"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "soukromé" 105msgstr "soukromé"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "veřejné" 109msgstr "veřejné"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "upozornění" 113msgstr "upozornění"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "lidé" 117msgstr "lidé"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instance" 121msgstr "instance"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
127msgstr "" 127msgstr ""
128"Vyhledat příspÄ›vek podle URL (regex), @uživatel@instance úÄtu, nebo #tagu" 128"Vyhledat příspÄ›vek podle URL (regex), @uživatel@instance úÄtu, nebo #tagu"
129 129
130#: html.c:1087 130#: html.c:1143
131msgid "Content search" 131msgid "Content search"
132msgstr "Hledání obsahu" 132msgstr "Hledání obsahu"
133 133
134#: html.c:1213 134#: html.c:1269
135msgid "verified link" 135msgid "verified link"
136msgstr "ověřený odkaz" 136msgstr "ověřený odkaz"
137 137
138#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 138#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
139msgid "Location: " 139msgid "Location: "
140msgstr "Místo: " 140msgstr "Místo: "
141 141
142#: html.c:1302 142#: html.c:1358
143msgid "New Post..." 143msgid "New Post..."
144msgstr "Nový příspěvek..." 144msgstr "Nový příspěvek..."
145 145
146#: html.c:1304 146#: html.c:1360
147msgid "What's on your mind?" 147msgid "What's on your mind?"
148msgstr "Co se vám honí hlavou?" 148msgstr "Co se vám honí hlavou?"
149 149
150#: html.c:1313 150#: html.c:1369
151msgid "Operations..." 151msgid "Operations..."
152msgstr "Operace..." 152msgstr "Operace..."
153 153
154#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 154#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
155msgid "Follow" 155msgid "Follow"
156msgstr "Sledovat" 156msgstr "Sledovat"
157 157
158#: html.c:1330 158#: html.c:1386
159msgid "(by URL or user@host)" 159msgid "(by URL or user@host)"
160msgstr "(podle URL nebo @uživatel@instance)" 160msgstr "(podle URL nebo @uživatel@instance)"
161 161
162#: html.c:1345 html.c:1925 html.c:4766 162#: html.c:1401 html.c:2003 html.c:5210
163msgid "Boost" 163msgid "Boost"
164msgstr "Boostit" 164msgstr "Boostit"
165 165
166#: html.c:1347 html.c:1364 166#: html.c:1403 html.c:1420 html.c:1442
167msgid "(by URL)" 167msgid "(by URL)"
168msgstr "(podle URL)" 168msgstr "(podle URL)"
169 169
170#: html.c:1362 html.c:1904 html.c:4757 170#: html.c:1418 html.c:1982 html.c:5201
171msgid "Like" 171msgid "Like"
172msgstr "Líbí" 172msgstr "Líbí"
173 173
174#: html.c:1490 174#: html.c:1568
175msgid "User Settings..." 175msgid "User Settings..."
176msgstr "Nastavení..." 176msgstr "Nastavení..."
177 177
178#: html.c:1499 178#: html.c:1577
179msgid "Display name:" 179msgid "Display name:"
180msgstr "Jméno:" 180msgstr "Jméno:"
181 181
182#: html.c:1505 182#: html.c:1583
183msgid "Your name" 183msgid "Your name"
184msgstr "Vaše jméno" 184msgstr "Vaše jméno"
185 185
186#: html.c:1507 186#: html.c:1585
187msgid "Avatar: " 187msgid "Avatar: "
188msgstr "Avatar: " 188msgstr "Profilový obrázek: "
189 189
190#: html.c:1515 190#: html.c:1593
191msgid "Delete current avatar" 191msgid "Delete current avatar"
192msgstr "Smazat souÄasný avatar" 192msgstr "Smazat profilový obrázek"
193 193
194#: html.c:1517 194#: html.c:1595
195msgid "Header image (banner): " 195msgid "Header image (banner): "
196msgstr "Obrázek v záhlaví profilu: " 196msgstr "Obrázek v záhlaví profilu: "
197 197
198#: html.c:1525 198#: html.c:1603
199msgid "Delete current header image" 199msgid "Delete current header image"
200msgstr "Smazat souÄasný obrázek v záhlaví" 200msgstr "Smazat obrázek v záhlaví"
201 201
202#: html.c:1527 202#: html.c:1605
203msgid "Bio:" 203msgid "Bio:"
204msgstr "Bio:" 204msgstr "Bio:"
205 205
206#: html.c:1533 206#: html.c:1611
207msgid "Write about yourself here..." 207msgid "Write about yourself here..."
208msgstr "Napište sem něco o sobě..." 208msgstr "Napište něco o sobě..."
209 209
210#: html.c:1542 210#: html.c:1620
211msgid "Always show sensitive content" 211msgid "Always show sensitive content"
212msgstr "Vždy zobrazit příspěvky s varováním o citlivém obsahu" 212msgstr "Rozbalit citlivé příspěvky"
213 213
214#: html.c:1544 214#: html.c:1622
215msgid "Email address for notifications:" 215msgid "Email address for notifications:"
216msgstr "Emailová adresa pro upozornění" 216msgstr "Emailová adresa pro upozornění"
217 217
218#: html.c:1552 218#: html.c:1630
219msgid "Telegram notifications (bot key and chat id):" 219msgid "Telegram notifications (bot key and chat id):"
220msgstr "UpozornÄ›ní na Telegram (bot klÃ­Ä a chat id):" 220msgstr "UpozornÄ›ní na Telegram (bot klÃ­Ä a chat id):"
221 221
222#: html.c:1566 222#: html.c:1644
223msgid "ntfy notifications (ntfy server and token):" 223msgid "ntfy notifications (ntfy server and token):"
224msgstr "ntfy notifikace (ntfy server a token):" 224msgstr "ntfy notifikace (ntfy server a token):"
225 225
226#: html.c:1588 226#: html.c:1666
227msgid "Maximum days to keep posts (0: server settings):" 227msgid "Maximum days to keep posts (0: server settings):"
228msgstr "Životnost příspěvků ve dnech (0: nastavení serveru):" 228msgstr "Životnost příspěvků ve dnech (0: nastavení serveru):"
229 229
230#: html.c:1602 230#: html.c:1680
231msgid "Drop direct messages from people you don't follow" 231msgid "Drop direct messages from people you don't follow"
232msgstr "Zahodit soukromé zprávy od lidí, které nesledujete" 232msgstr "Zahodit soukromé zprávy od lidí, které nesledujete"
233 233
234#: html.c:1611 234#: html.c:1689
235msgid "This account is a bot" 235msgid "This account is a bot"
236msgstr "Tenhle úÄet je robot" 236msgstr "Tento úÄet je robotem"
237 237
238#: html.c:1620 238#: html.c:1698
239msgid "Auto-boost all mentions to this account" 239msgid "Auto-boost all mentions to this account"
240msgstr "Automaticky boostovat vÅ¡echny zmíňky o tomto úÄtu" 240msgstr "Automaticky boostit vÅ¡echna zmínÄ›ní tohoto úÄtu"
241 241
242#: html.c:1629 242#: html.c:1707
243msgid "This account is private (posts are not shown through the web)" 243msgid "This account is private (posts are not shown through the web)"
244msgstr "" 244msgstr ""
245"Tento úÄet je soukromý (příspÄ›vky nejsou zobrazitelné napÅ™Ã­Ä internetem)" 245"Tento úÄet je soukromý (příspÄ›vky nejsou zobrazitelné napÅ™Ã­Ä internetem)"
246 246
247#: html.c:1639 247#: html.c:1717
248msgid "Collapse top threads by default" 248msgid "Collapse top threads by default"
249msgstr "Zobrazovat vlákna složená" 249msgstr "Složit vlákna"
250 250
251#: html.c:1648 251#: html.c:1726
252msgid "Follow requests must be approved" 252msgid "Follow requests must be approved"
253msgstr "Žádosti o sledování je nutno manuálně potvrdit" 253msgstr "Žádosti o sledování je nutné manuálně potvrdit"
254 254
255#: html.c:1657 255#: html.c:1735
256msgid "Publish follower and following metrics" 256msgid "Publish follower and following metrics"
257msgstr "Zobrazit údaje o poÄtu sledovaných a sledujících" 257msgstr "Zobrazit údaje o poÄtu sledovaných a sledujících"
258 258
259#: html.c:1659 259#: html.c:1737
260msgid "Current location:" 260msgid "Current location:"
261msgstr "Geolokace:" 261msgstr "Geolokace:"
262 262
263#: html.c:1673 263#: html.c:1751
264msgid "Profile metadata (key=value pairs in each line):" 264msgid "Profile metadata (key=value pairs in each line):"
265msgstr "Metadata profilu (klíÄ=hodnota na jeden řádek):" 265msgstr "Metadata profilu (klíÄ=hodnota na jeden řádek):"
266 266
267#: html.c:1684 267#: html.c:1762
268msgid "Web interface language:" 268msgid "Web interface language:"
269msgstr "Jazyk rozhraní:" 269msgstr "Jazyk rozhraní:"
270 270
271#: html.c:1703 271#: html.c:1781
272msgid "New password:" 272msgid "New password:"
273msgstr "Nové heslo:" 273msgstr "Nové heslo:"
274 274
275#: html.c:1710 275#: html.c:1788
276msgid "Repeat new password:" 276msgid "Repeat new password:"
277msgstr "Zopakujte nové heslo:" 277msgstr "Nové heslo znovu:"
278 278
279#: html.c:1720 279#: html.c:1798
280msgid "Update user info" 280msgid "Update user info"
281msgstr "Uložit" 281msgstr "Uložit"
282 282
283#: html.c:1731 283#: html.c:1809
284msgid "Followed hashtags..." 284msgid "Followed hashtags..."
285msgstr "Sledované hashtagy..." 285msgstr "Sledované hashtagy..."
286 286
287#: html.c:1733 html.c:1766 287#: html.c:1811 html.c:1844
288msgid "One hashtag per line" 288msgid "One hashtag per line"
289msgstr "Jeden hashtag na řádek" 289msgstr "Jeden hashtag na řádek"
290 290
291#: html.c:1755 html.c:1787 291#: html.c:1833 html.c:1865
292msgid "Update hashtags" 292msgid "Update hashtags"
293msgstr "Aktualizovat hashtagy" 293msgstr "Aktualizovat hashtagy"
294 294
295#: html.c:1904 295#: html.c:1982
296msgid "Say you like this post" 296msgid "Say you like this post"
297msgstr "Dát najevo, že se vám příspěvek líbí" 297msgstr "Dát najevo, že se vám příspěvek líbí"
298 298
299#: html.c:1909 html.c:4775 299#: html.c:1987 html.c:5219
300msgid "Unlike" 300msgid "Unlike"
301msgstr "Nelíbí" 301msgstr "Nelíbí"
302 302
303#: html.c:1909 303#: html.c:1987
304msgid "Nah don't like it that much" 304msgid "Nah don't like it that much"
305msgstr "Vlastně se mi to zas tak nelíbí" 305msgstr "Vlastně se mi to zas tak nelíbí"
306 306
307#: html.c:1915 html.c:4912 307#: html.c:1993 html.c:5356
308msgid "Unpin" 308msgid "Unpin"
309msgstr "Odepnout" 309msgstr "Odepnout"
310 310
311#: html.c:1915 311#: html.c:1993
312msgid "Unpin this post from your timeline" 312msgid "Unpin this post from your timeline"
313msgstr "Odepnout tento příspěvek z vaší osy" 313msgstr "Odepnout tento příspěvek z vaší osy"
314 314
315#: html.c:1918 html.c:4907 315#: html.c:1996 html.c:5351
316msgid "Pin" 316msgid "Pin"
317msgstr "Připnout" 317msgstr "Připnout"
318 318
319#: html.c:1918 319#: html.c:1996
320msgid "Pin this post to the top of your timeline" 320msgid "Pin this post to the top of your timeline"
321msgstr "PÅ™ipnout tento příspÄ›vÄ›k na zaÄátek vaší osy" 321msgstr "PÅ™ipnout tento příspÄ›vÄ›k na zaÄátek vaší osy"
322 322
323#: html.c:1925 323#: html.c:2003
324msgid "Announce this post to your followers" 324msgid "Announce this post to your followers"
325msgstr "Ukázat tento příspěvek vaším sledujícím" 325msgstr "Ukázat tento příspěvek vaším sledujícím"
326 326
327#: html.c:1930 html.c:4783 327#: html.c:2008 html.c:5227
328msgid "Unboost" 328msgid "Unboost"
329msgstr "Odboostit" 329msgstr "Odboostit"
330 330
331#: html.c:1930 331#: html.c:2008
332msgid "I regret I boosted this" 332msgid "I regret I boosted this"
333msgstr "Boostit to byl blbej nápad" 333msgstr "Boostit to byl špatný nápad"
334 334
335#: html.c:1936 html.c:4922 335#: html.c:2014 html.c:5366
336msgid "Unbookmark" 336msgid "Unbookmark"
337msgstr "Zahodit" 337msgstr "Zahodit"
338 338
339#: html.c:1936 339#: html.c:2014
340msgid "Delete this post from your bookmarks" 340msgid "Delete this post from your bookmarks"
341msgstr "Odstranit tento příspěvěk ze záložek" 341msgstr "Odstranit tento příspěvěk ze záložek"
342 342
343#: html.c:1939 html.c:4917 343#: html.c:2017 html.c:5361
344msgid "Bookmark" 344msgid "Bookmark"
345msgstr "Uložit" 345msgstr "Uložit"
346 346
347#: html.c:1939 347#: html.c:2017
348msgid "Add this post to your bookmarks" 348msgid "Add this post to your bookmarks"
349msgstr "Uložit tento příspěvek do záložek" 349msgstr "Uložit tento příspěvek do záložek"
350 350
351#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 351#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
352msgid "Unfollow" 352msgid "Unfollow"
353msgstr "Přestat sledovat" 353msgstr "Přestat sledovat"
354 354
355#: html.c:1945 html.c:3387 355#: html.c:2023 html.c:3763 html.c:4042
356msgid "Stop following this user's activity" 356msgid "Stop following this user's activity"
357msgstr "Přestat sledovat tohoto uživatele" 357msgstr "Přestat sledovat tohoto uživatele"
358 358
359#: html.c:1949 html.c:3401 359#: html.c:2027 html.c:3777 html.c:4044
360msgid "Start following this user's activity" 360msgid "Start following this user's activity"
361msgstr "ZaÄít sledovat tohoto uživatele" 361msgstr "ZaÄít sledovat tohoto uživatele"
362 362
363#: html.c:1955 html.c:4860 363#: html.c:2033 html.c:5304
364msgid "Unfollow Group" 364msgid "Unfollow Group"
365msgstr "Přestat Sledovat Skupinu" 365msgstr "Přestat Sledovat Skupinu"
366 366
367#: html.c:1956 367#: html.c:2034
368msgid "Stop following this group or channel" 368msgid "Stop following this group or channel"
369msgstr "Přestat sledovat tuto skupinu nebo kanál" 369msgstr "Přestat sledovat tuto skupinu nebo kanál"
370 370
371#: html.c:1960 html.c:4847 371#: html.c:2038 html.c:5291
372msgid "Follow Group" 372msgid "Follow Group"
373msgstr "Sledovat Skupinu" 373msgstr "Sledovat Skupinu"
374 374
375#: html.c:1961 375#: html.c:2039
376msgid "Start following this group or channel" 376msgid "Start following this group or channel"
377msgstr "ZaÄít sledovat tuto skupinu nebo kanál" 377msgstr "ZaÄít sledovat tuto skupinu nebo kanál"
378 378
379#: html.c:1966 html.c:3423 html.c:4791 379#: html.c:2044 html.c:3799 html.c:5235
380msgid "MUTE" 380msgid "MUTE"
381msgstr "ZTIÅ IT" 381msgstr "ZTIÅ IT"
382 382
383#: html.c:1967 383#: html.c:2045
384msgid "Block any activity from this user forever" 384msgid "Block any activity from this user forever"
385msgstr "Jednou provždy zablokovat všechno od tohoto uživatele" 385msgstr "Jednou provždy zablokovat všechno od tohoto uživatele"
386 386
387#: html.c:1972 html.c:3405 html.c:4877 387#: html.c:2050 html.c:3781 html.c:5321
388msgid "Delete" 388msgid "Delete"
389msgstr "Smazat" 389msgstr "Smazat"
390 390
391#: html.c:1972 391#: html.c:2050
392msgid "Delete this post" 392msgid "Delete this post"
393msgstr "Smazat tento příspěvek" 393msgstr "Smazat tento příspěvek"
394 394
395#: html.c:1975 html.c:4799 395#: html.c:2053 html.c:5243
396msgid "Hide" 396msgid "Hide"
397msgstr "Schovat" 397msgstr "Schovat"
398 398
399#: html.c:1975 399#: html.c:2053
400msgid "Hide this post and its children" 400msgid "Hide this post and its children"
401msgstr "Schovat tento příspěvek a příspěvky pod ním" 401msgstr "Schovat tento příspěvek a příspěvky pod ním"
402 402
403#: html.c:2017 403#: html.c:2095
404msgid "Edit..." 404msgid "Edit..."
405msgstr "Editovat..." 405msgstr "Editovat..."
406 406
407#: html.c:2039 407#: html.c:2133
408msgid "Reply..." 408msgid "Reply..."
409msgstr "Odpovědět..." 409msgstr "Odpovědět..."
410 410
411#: html.c:2090 411#: html.c:2184
412msgid "Truncated (too deep)" 412msgid "Truncated (too deep)"
413msgstr "Ořezáno (moc hluboké)" 413msgstr "Ořezáno (moc hluboké)"
414 414
415#: html.c:2108 415#: html.c:2202
416msgid "follows you" 416msgid "follows you"
417msgstr "sleduje vás" 417msgstr "sleduje vás"
418 418
419#: html.c:2182 419#: html.c:2276
420msgid "Pinned" 420msgid "Pinned"
421msgstr "Připnuto" 421msgstr "Připnuto"
422 422
423#: html.c:2190 423#: html.c:2284
424msgid "Bookmarked" 424msgid "Bookmarked"
425msgstr "Zazáložkováno" 425msgstr "Zazáložkováno"
426 426
427#: html.c:2198 427#: html.c:2292
428msgid "Poll" 428msgid "Poll"
429msgstr "Anketa" 429msgstr "Anketa"
430 430
431#: html.c:2205 431#: html.c:2299
432msgid "Voted" 432msgid "Voted"
433msgstr "Odhlasováno" 433msgstr "Odhlasováno"
434 434
435#: html.c:2214 435#: html.c:2308
436msgid "Event" 436msgid "Event"
437msgstr "Událost" 437msgstr "Událost"
438 438
439#: html.c:2246 html.c:2275 439#: html.c:2340 html.c:2369
440msgid "boosted" 440msgid "boosted"
441msgstr "boostuje" 441msgstr "boostí"
442 442
443#: html.c:2289 443#: html.c:2383
444msgid "in reply to" 444msgid "in reply to"
445msgstr "odpovÄ›Ä pro" 445msgstr "odpovÄ›Ä pro"
446 446
447#: html.c:2345 447#: html.c:2439
448msgid " [SENSITIVE CONTENT]" 448msgid " [SENSITIVE CONTENT]"
449msgstr "[CITLIVÃ OBSAH]" 449msgstr "[CITLIVÃ OBSAH]"
450 450
451#: html.c:2512 451#: html.c:2796
452msgid "Vote" 452msgid "Vote"
453msgstr "Hlasuj" 453msgstr "Hlasuj"
454 454
455#: html.c:2522 455#: html.c:2806
456msgid "Closed" 456msgid "Closed"
457msgstr "Uzavřeno" 457msgstr "Uzavřeno"
458 458
459#: html.c:2547 459#: html.c:2831
460msgid "Closes in" 460msgid "Closes in"
461msgstr "KonÄí za" 461msgstr "KonÄí za"
462 462
463#: html.c:2627 463#: html.c:2911
464msgid "Video" 464msgid "Video"
465msgstr "Video" 465msgstr "Video"
466 466
467#: html.c:2642 467#: html.c:2926
468msgid "Audio" 468msgid "Audio"
469msgstr "Audio" 469msgstr "Audio"
470 470
471#: html.c:2670 471#: html.c:2954
472msgid "Attachment" 472msgid "Attachment"
473msgstr "Příloha" 473msgstr "Příloha"
474 474
475#: html.c:2684 475#: html.c:2968
476msgid "Alt..." 476msgid "Alt..."
477msgstr "Popisek..." 477msgstr "Popisek..."
478 478
479#: html.c:2697 479#: html.c:2981
480msgid "Source channel or community" 480msgid "Source channel or community"
481msgstr "" 481msgstr "Původní kanál nebo komunita"
482 482
483#: html.c:2791 483#: html.c:3075
484msgid "Time: " 484msgid "Time: "
485msgstr "ÄŒas:" 485msgstr "ÄŒas:"
486 486
487#: html.c:2872 487#: html.c:3156
488msgid "Older..." 488msgid "Older..."
489msgstr "Starší..." 489msgstr "Starší..."
490 490
491#: html.c:2974 491#: html.c:3258
492msgid "about this site" 492msgid "about this site"
493msgstr "o této stránce" 493msgstr "o této stránce"
494 494
495#: html.c:2976 495#: html.c:3260
496msgid "powered by " 496msgid "powered by "
497msgstr "pohání " 497msgstr "pohání "
498 498
499#: html.c:3041 499#: html.c:3329
500msgid "Dismiss" 500msgid "Dismiss"
501msgstr "Zahodit" 501msgstr "Zahodit"
502 502
503#: html.c:3058 503#: html.c:3346
504#, c-format 504#, c-format
505msgid "Timeline for list '%s'" 505msgid "Timeline for list '%s'"
506msgstr "Časová osa pro seznam '%s'" 506msgstr "Časová osa pro seznam '%s'"
507 507
508#: html.c:3077 html.c:4169 508#: html.c:3365 html.c:4589
509msgid "Pinned posts" 509msgid "Pinned posts"
510msgstr "Připnuté příspěvky" 510msgstr "Připnuté příspěvky"
511 511
512#: html.c:3089 html.c:4184 512#: html.c:3377 html.c:4604
513msgid "Bookmarked posts" 513msgid "Bookmarked posts"
514msgstr "Záložky" 514msgstr "Záložky"
515 515
516#: html.c:3101 html.c:4199 516#: html.c:3389 html.c:4619
517msgid "Post drafts" 517msgid "Post drafts"
518msgstr "Rozepsané příspěvky" 518msgstr "Rozepsané příspěvky"
519 519
520#: html.c:3177 520#: html.c:3465
521msgid "No more unseen posts" 521msgid "No more unseen posts"
522msgstr "Nic víc nového" 522msgstr "Nic nového"
523 523
524#: html.c:3181 html.c:3290 524#: html.c:3469 html.c:3578
525msgid "Back to top" 525msgid "Back to top"
526msgstr "Zpátky nahoru" 526msgstr "Zpátky nahoru"
527 527
528#: html.c:3243 528#: html.c:3531
529msgid "History" 529msgid "History"
530msgstr "Historie" 530msgstr "Historie"
531 531
532#: html.c:3295 html.c:3734 532#: html.c:3583 html.c:4149
533msgid "More..." 533msgid "More..."
534msgstr "Více..." 534msgstr "Více..."
535 535
536#: html.c:3391 html.c:4813 536#: html.c:3767 html.c:5257
537msgid "Unlimit" 537msgid "Unlimit"
538msgstr "Povolit boosty" 538msgstr "Povolit boosty"
539 539
540#: html.c:3392 540#: html.c:3768
541msgid "Allow announces (boosts) from this user" 541msgid "Allow announces (boosts) from this user"
542msgstr "Zobrazovat boosty od tohoto uživatele" 542msgstr "Zobrazovat boosty od tohoto uživatele"
543 543
544#: html.c:3395 html.c:4809 544#: html.c:3771 html.c:5253
545msgid "Limit" 545msgid "Limit"
546msgstr "Skrýt boosty" 546msgstr "Skrýt boosty"
547 547
548#: html.c:3396 548#: html.c:3772
549msgid "Block announces (boosts) from this user" 549msgid "Block announces (boosts) from this user"
550msgstr "Ztišit boosty od tohoto uživatele" 550msgstr "Ztišit boosty od tohoto uživatele"
551 551
552#: html.c:3405 552#: html.c:3781
553msgid "Delete this user" 553msgid "Delete this user"
554msgstr "Smazat tohoto uživatele" 554msgstr "Smazat tohoto uživatele"
555 555
556#: html.c:3410 html.c:4927 556#: html.c:3786 html.c:5371
557msgid "Approve" 557msgid "Approve"
558msgstr "Schválit" 558msgstr "Schválit"
559 559
560#: html.c:3411 560#: html.c:3787
561msgid "Approve this follow request" 561msgid "Approve this follow request"
562msgstr "Schválit žádost o sledování" 562msgstr "Schválit žádost o sledování"
563 563
564#: html.c:3414 html.c:4951 564#: html.c:3790 html.c:5395
565msgid "Discard" 565msgid "Discard"
566msgstr "Zahodit" 566msgstr "Zahodit"
567 567
568#: html.c:3414 568#: html.c:3790
569msgid "Discard this follow request" 569msgid "Discard this follow request"
570msgstr "Zahodit žádost o sledování" 570msgstr "Zahodit žádost o sledování"
571 571
572#: html.c:3419 html.c:4795 572#: html.c:3795 html.c:5239
573msgid "Unmute" 573msgid "Unmute"
574msgstr "Zrušit ztišení" 574msgstr "Zrušit ztišení"
575 575
576#: html.c:3420 576#: html.c:3796
577msgid "Stop blocking activities from this user" 577msgid "Stop blocking activities from this user"
578msgstr "Přestat blokovat tohoto uživatele" 578msgstr "Přestat blokovat tohoto uživatele"
579 579
580#: html.c:3424 580#: html.c:3800
581msgid "Block any activity from this user" 581msgid "Block any activity from this user"
582msgstr "Zablokovat všechno od tohoto uživatele" 582msgstr "Zablokovat všechno od tohoto uživatele"
583 583
584#: html.c:3432 584#: html.c:3808
585msgid "Direct Message..." 585msgid "Direct Message..."
586msgstr "Soukomá zpráva..." 586msgstr "Soukomá zpráva..."
587 587
588#: html.c:3467 588#: html.c:3843
589msgid "Pending follow confirmations" 589msgid "Pending follow confirmations"
590msgstr "Dosud nepotvrzené žádosti o sledování" 590msgstr "Dosud nepotvrzené žádosti o sledování"
591 591
592#: html.c:3471 592#: html.c:3847
593msgid "People you follow" 593msgid "People you follow"
594msgstr "Lidé, které sledujete" 594msgstr "Lidé, které sledujete"
595 595
596#: html.c:3472 596#: html.c:3848
597msgid "People that follow you" 597msgid "People that follow you"
598msgstr "Lidé, kteří vás sledují" 598msgstr "Lidé, kteří vás sledují"
599 599
600#: html.c:3511 600#: html.c:3887
601msgid "Clear all" 601msgid "Clear all"
602msgstr "Smazat vše" 602msgstr "Smazat vše"
603 603
604#: html.c:3571 604#: html.c:3951
605msgid "Mention" 605msgid "Mention"
606msgstr "Zmínil vás" 606msgstr "Zmínil vás"
607 607
608#: html.c:3574 608#: html.c:3954
609msgid "Finished poll" 609msgid "Finished poll"
610msgstr "UkonÄená anketa" 610msgstr "UkonÄená anketa"
611 611
612#: html.c:3590 612#: html.c:3979
613msgid "Follow Request" 613msgid "Follow Request"
614msgstr "Žádost o sledování" 614msgstr "Žádost o sledování"
615 615
616#: html.c:3674 616#: html.c:4089
617msgid "Context" 617msgid "Context"
618msgstr "Kontext" 618msgstr "Kontext"
619 619
620#: html.c:3692 620#: html.c:4107
621msgid "New" 621msgid "New"
622msgstr "Nové" 622msgstr "Nové"
623 623
624#: html.c:3707 624#: html.c:4122
625msgid "Already seen" 625msgid "Already seen"
626msgstr "Zobrazeno dříve" 626msgstr "Již viděno"
627 627
628#: html.c:3722 628#: html.c:4137
629msgid "None" 629msgid "None"
630msgstr "Nic" 630msgstr "Nic"
631 631
632#: html.c:3994 632#: html.c:4414
633#, c-format 633#, c-format
634msgid "Search results for account %s" 634msgid "Search results for account %s"
635msgstr "Výsledky vyhledávání úÄtu %s" 635msgstr "Výsledky vyhledávání úÄtu %s"
636 636
637#: html.c:4001 637#: html.c:4421
638#, c-format 638#, c-format
639msgid "Account %s not found" 639msgid "Account %s not found"
640msgstr "ÚÄet %s nenalezen" 640msgstr "ÚÄet %s nenalezen"
641 641
642#: html.c:4032 642#: html.c:4452
643#, c-format 643#, c-format
644msgid "Search results for tag %s" 644msgid "Search results for tag %s"
645msgstr "Výsledky k tagu %s" 645msgstr "Výsledky k tagu %s"
646 646
647#: html.c:4032 647#: html.c:4452
648#, c-format 648#, c-format
649msgid "Nothing found for tag %s" 649msgid "Nothing found for tag %s"
650msgstr "Nic k tagu %s" 650msgstr "Nic k tagu %s"
651 651
652#: html.c:4048 652#: html.c:4468
653#, c-format 653#, c-format
654msgid "Search results for '%s' (may be more)" 654msgid "Search results for '%s' (may be more)"
655msgstr "Výsledky vyhledávání pro '%s' (může toho být víc)" 655msgstr "Výsledky vyhledávání pro '%s' (může toho být víc)"
656 656
657#: html.c:4051 657#: html.c:4471
658#, c-format 658#, c-format
659msgid "Search results for '%s'" 659msgid "Search results for '%s'"
660msgstr "Výsledky vyhledávání pro '%s'" 660msgstr "Výsledky vyhledávání pro '%s'"
661 661
662#: html.c:4054 662#: html.c:4474
663#, c-format 663#, c-format
664msgid "No more matches for '%s'" 664msgid "No more matches for '%s'"
665msgstr "Nic víc pro '%s'" 665msgstr "Nic víc pro '%s'"
666 666
667#: html.c:4056 667#: html.c:4476
668#, c-format 668#, c-format
669msgid "Nothing found for '%s'" 669msgid "Nothing found for '%s'"
670msgstr "Žádný výsledek pro '%s'" 670msgstr "Žádný výsledek pro '%s'"
671 671
672#: html.c:4154 672#: html.c:4574
673msgid "Showing instance timeline" 673msgid "Showing instance timeline"
674msgstr "Časová osa místní instance" 674msgstr "Časová osa místní instance"
675 675
676#: html.c:4237 676#: html.c:4657
677#, c-format 677#, c-format
678msgid "Showing timeline for list '%s'" 678msgid "Showing timeline for list '%s'"
679msgstr "Časová osa pro seznam '%s'" 679msgstr "Časová osa pro seznam '%s'"
680 680
681#: httpd.c:258 681#: httpd.c:259
682#, c-format 682#, c-format
683msgid "Search results for tag #%s" 683msgid "Search results for tag #%s"
684msgstr "Výsledky vyhledávání tagu #%s" 684msgstr "Výsledky vyhledávání tagu #%s"
685 685
686#: httpd.c:267 686#: httpd.c:268
687msgid "Recent posts by users in this instance" 687msgid "Recent posts by users in this instance"
688msgstr "Nedávné příspěvky od uživatelů této instance" 688msgstr "Nedávné příspěvky od uživatelů této instance"
689 689
690#: html.c:1764 690#: html.c:1842
691msgid "Blocked hashtags..." 691msgid "Blocked hashtags..."
692msgstr "Blokované hashtagy..." 692msgstr "Blokované hashtagy..."
693 693
694#: html.c:518 694#: html.c:574
695msgid "Optional URL to reply to" 695msgid "Optional URL to reply to"
696msgstr "URL adresa příspěvku, na který odpovědět" 696msgstr "URL adresa příspěvku, na který odpovědět"
697 697
698#: html.c:695 698#: html.c:751
699msgid "" 699msgid ""
700"Option 1...\n" 700"Option 1...\n"
701"Option 2...\n" 701"Option 2...\n"
@@ -707,94 +707,106 @@ msgstr ""
707"Možnost 3...\n" 707"Možnost 3...\n"
708"..." 708"..."
709 709
710#: html.c:1558 710#: html.c:1636
711msgid "Bot API key" 711msgid "Bot API key"
712msgstr "API klÃ­Ä Bota" 712msgstr "API klÃ­Ä Bota"
713 713
714#: html.c:1564 714#: html.c:1642
715msgid "Chat id" 715msgid "Chat id"
716msgstr "Chat id" 716msgstr "Chat id"
717 717
718#: html.c:1572 718#: html.c:1650
719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
720msgstr "ntfy server - celá URL adresa (např: https://ntfy.sh/VaseTema)" 720msgstr "ntfy server - celá URL adresa (např: https://ntfy.sh/VaseTema)"
721 721
722#: html.c:1578 722#: html.c:1656
723msgid "ntfy token - if needed" 723msgid "ntfy token - if needed"
724msgstr "ntfy token - pokud je zapotřebí" 724msgstr "ntfy token - pokud je zapotřebí"
725 725
726#: html.c:3078 726#: html.c:3366
727msgid "pinned" 727msgid "pinned"
728msgstr "připnuté" 728msgstr "připnuté"
729 729
730#: html.c:3090 730#: html.c:3378
731msgid "bookmarks" 731msgid "bookmarks"
732msgstr "záložky" 732msgstr "záložky"
733 733
734#: html.c:3102 734#: html.c:3390
735msgid "drafts" 735msgid "drafts"
736msgstr "rozepsané" 736msgstr "rozepsané"
737 737
738#: html.c:584 738#: html.c:640
739msgid "Scheduled post..." 739msgid "Scheduled post..."
740msgstr "Naplánovat příspěvek..." 740msgstr "Naplánovat příspěvek..."
741 741
742msgid "Post date and time:" 742msgid "Post date and time:"
743msgstr "Den a Äas:" 743msgstr "Den a Äas:"
744 744
745#: html.c:3113 html.c:4214 745#: html.c:3401 html.c:4634
746msgid "Scheduled posts" 746msgid "Scheduled posts"
747msgstr "Naplánované příspěvky" 747msgstr "Naplánované příspěvky"
748 748
749#: html.c:3114 749#: html.c:3402
750msgid "scheduled posts" 750msgid "scheduled posts"
751msgstr "naplánované příspěvky" 751msgstr "naplánované příspěvky"
752 752
753#: html.c:578 753#: html.c:634
754#, c-format 754#, c-format
755msgid "Post date and time (timezone: %s):" 755msgid "Post date and time (timezone: %s):"
756msgstr "Den a Äas (Äasové pásmo: %s)" 756msgstr "Den a Äas (Äasové pásmo: %s)"
757 757
758#: html.c:1689 758#: html.c:1767
759msgid "Time zone:" 759msgid "Time zone:"
760msgstr "Časové pásmo:" 760msgstr "Časové pásmo:"
761 761
762#: html.c:559 762#: html.c:615
763msgid "Language:" 763msgid "Language:"
764msgstr "Jazyk:" 764msgstr "Jazyk:"
765 765
766#: html.c:1580 766#: html.c:1658
767msgid "Notify webhook:" 767msgid "Notify webhook:"
768msgstr "Notify webhook:" 768msgstr "Notify webhook:"
769 769
770#: html.c:1586 770#: html.c:1664
771msgid "http://example.com/webhook" 771msgid "http://example.com/webhook"
772msgstr "http://priklad.cz/webhook" 772msgstr "http://priklad.cz/webhook"
773 773
774#: html.c:1694 774#: html.c:1772
775msgid "Languages you usually post in:" 775msgid "Languages you usually post in:"
776msgstr "Jazyky ve kterých píšete:" 776msgstr "Jazyky ve kterých píšete:"
777 777
778#: html.c:1700 778#: html.c:1778
779msgid "en fr es de_AT" 779msgid "en fr es de_AT"
780msgstr "cs en fr de_AT" 780msgstr "cs en fr de_AT"
781 781
782#: html.c:460 782#: html.c:428
783msgid "Visibility: " 783msgid "Visibility: "
784msgstr "Viditelnost" 784msgstr "Viditelnost: "
785 785
786#: html.c:468
787msgid "Public" 786msgid "Public"
788msgstr "Veřejné" 787msgstr "Veřejné"
789 788
790#: html.c:477
791msgid "Unlisted" 789msgid "Unlisted"
792msgstr "Neveřejné" 790msgstr "Neveřejné"
793 791
794#: html.c:486
795msgid "Followers-only" 792msgid "Followers-only"
796msgstr "Pouze pro sledující" 793msgstr "Pouze pro sledující"
797 794
798#: html.c:495
799msgid "Direct Message" 795msgid "Direct Message"
800msgstr "Soukromá Zpráva" 796msgstr "Soukromá Zpráva"
797
798#: html.c:488 html.c:2534 html.c:2559 html.c:5177
799msgid "EmojiUnreact"
800msgstr "EmojiOdebrat"
801
802#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
803msgid "EmojiReact"
804msgstr "EmojiReakce"
805
806#: html.c:2115
807msgid "Emoji react..."
808msgstr "Reagovat emoji..."
809
810#: html.c:2609
811msgid "Emoji reactions: "
812msgstr "Emoji reakce: "
diff --git a/po/de_DE.po b/po/de_DE.po
index bb6876c..2db7ca3 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -7,119 +7,119 @@ msgstr ""
7"Language: de_DE\n" 7"Language: de_DE\n"
8"Content-Type: text/plain; charset=UTF-8\n" 8"Content-Type: text/plain; charset=UTF-8\n"
9 9
10#: html.c:440 10#: html.c:534
11msgid "Sensitive content: " 11msgid "Sensitive content: "
12msgstr "Sensibler Inhalt: " 12msgstr "Sensibler Inhalt: "
13 13
14#: html.c:448 14#: html.c:542
15msgid "Sensitive content description" 15msgid "Sensitive content description"
16msgstr "Beschreibung des sensiblen Inhalts" 16msgstr "Beschreibung des sensiblen Inhalts"
17 17
18msgid "Only for mentioned people: " 18msgid "Only for mentioned people: "
19msgstr "Nur für erwähnte Personen: " 19msgstr "Nur für erwähnte Personen: "
20 20
21#: html.c:514 21#: html.c:570
22msgid "Reply to (URL): " 22msgid "Reply to (URL): "
23msgstr "Antwort an (URL): " 23msgstr "Antwort an (URL): "
24 24
25#: html.c:523 25#: html.c:579
26msgid "Don't send, but store as a draft" 26msgid "Don't send, but store as a draft"
27msgstr "Nicht senden, aber als Entwurf speichern" 27msgstr "Nicht senden, aber als Entwurf speichern"
28 28
29#: html.c:524 29#: html.c:580
30msgid "Draft:" 30msgid "Draft:"
31msgstr "Entwurf: " 31msgstr "Entwurf: "
32 32
33#: html.c:614 33#: html.c:670
34msgid "Attachments..." 34msgid "Attachments..."
35msgstr "Anhänge..." 35msgstr "Anhänge..."
36 36
37#: html.c:637 37#: html.c:693
38msgid "File:" 38msgid "File:"
39msgstr "Datei:" 39msgstr "Datei:"
40 40
41#: html.c:641 41#: html.c:697
42msgid "Clear this field to delete the attachment" 42msgid "Clear this field to delete the attachment"
43msgstr "Feld löschen, um den Anhang zu löschen" 43msgstr "Feld löschen, um den Anhang zu löschen"
44 44
45#: html.c:650 html.c:675 45#: html.c:706 html.c:731
46msgid "Attachment description" 46msgid "Attachment description"
47msgstr "Beschreibung des Anhangs" 47msgstr "Beschreibung des Anhangs"
48 48
49#: html.c:686 49#: html.c:742
50msgid "Poll..." 50msgid "Poll..."
51msgstr "Umfrage..." 51msgstr "Umfrage..."
52 52
53#: html.c:688 53#: html.c:744
54msgid "Poll options (one per line, up to 8):" 54msgid "Poll options (one per line, up to 8):"
55msgstr "Umfrageoptionen (eine pro Zeile, bis zu 8):" 55msgstr "Umfrageoptionen (eine pro Zeile, bis zu 8):"
56 56
57#: html.c:700 57#: html.c:756
58msgid "One choice" 58msgid "One choice"
59msgstr "Einfachauswahl" 59msgstr "Einfachauswahl"
60 60
61#: html.c:703 61#: html.c:759
62msgid "Multiple choices" 62msgid "Multiple choices"
63msgstr "Mehrfachauswahl" 63msgstr "Mehrfachauswahl"
64 64
65#: html.c:709 65#: html.c:765
66msgid "End in 5 minutes" 66msgid "End in 5 minutes"
67msgstr "Endet in 5 Minuten" 67msgstr "Endet in 5 Minuten"
68 68
69#: html.c:713 69#: html.c:769
70msgid "End in 1 hour" 70msgid "End in 1 hour"
71msgstr "Endet in 1 Stunde" 71msgstr "Endet in 1 Stunde"
72 72
73#: html.c:716 73#: html.c:772
74msgid "End in 1 day" 74msgid "End in 1 day"
75msgstr "Endet in 1 Tag" 75msgstr "Endet in 1 Tag"
76 76
77#: html.c:724 77#: html.c:780
78msgid "Post" 78msgid "Post"
79msgstr "Beitrag veröffentlichen" 79msgstr "Beitrag veröffentlichen"
80 80
81#: html.c:826 html.c:833 81#: html.c:882 html.c:889
82msgid "Site description" 82msgid "Site description"
83msgstr "Seitenbeschreibung" 83msgstr "Seitenbeschreibung"
84 84
85#: html.c:844 85#: html.c:900
86msgid "Admin email" 86msgid "Admin email"
87msgstr "Admin E-Mail" 87msgstr "Admin E-Mail"
88 88
89#: html.c:857 89#: html.c:913
90msgid "Admin account" 90msgid "Admin account"
91msgstr "Admin-Konto" 91msgstr "Admin-Konto"
92 92
93#: html.c:922 html.c:1278 93#: html.c:978 html.c:1334
94#, c-format 94#, c-format
95msgid "%d following, %d followers" 95msgid "%d following, %d followers"
96msgstr "%d Gefolgte, %d Folgende" 96msgstr "%d Gefolgte, %d Folgende"
97 97
98#: html.c:1019 98#: html.c:1075
99msgid "RSS" 99msgid "RSS"
100msgstr "RSS" 100msgstr "RSS"
101 101
102#: html.c:1024 html.c:1063 102#: html.c:1080 html.c:1119
103msgid "private" 103msgid "private"
104msgstr "Privat" 104msgstr "Privat"
105 105
106#: html.c:1059 106#: html.c:1115
107msgid "public" 107msgid "public"
108msgstr "Öffentlich" 108msgstr "Öffentlich"
109 109
110#: html.c:1067 110#: html.c:1123
111msgid "notifications" 111msgid "notifications"
112msgstr "Benachrichtigungen" 112msgstr "Benachrichtigungen"
113 113
114#: html.c:1072 114#: html.c:1128
115msgid "people" 115msgid "people"
116msgstr "Personen" 116msgstr "Personen"
117 117
118#: html.c:1077 118#: html.c:1133
119msgid "instance" 119msgid "instance"
120msgstr "Instanz" 120msgstr "Instanz"
121 121
122#: html.c:1086 122#: html.c:1142
123msgid "" 123msgid ""
124"Search posts by URL or content (regular expression), @user@host accounts, or " 124"Search posts by URL or content (regular expression), @user@host accounts, or "
125"#tag" 125"#tag"
@@ -127,576 +127,576 @@ msgstr ""
127"Durchsuche Beiträge nach URL oder Inhalt (regulärer Ausdruck), @user@host " 127"Durchsuche Beiträge nach URL oder Inhalt (regulärer Ausdruck), @user@host "
128"Konten, oder #tag" 128"Konten, oder #tag"
129 129
130#: html.c:1087 130#: html.c:1143
131msgid "Content search" 131msgid "Content search"
132msgstr "Inhaltssuche" 132msgstr "Inhaltssuche"
133 133
134#: html.c:1213 134#: html.c:1269
135msgid "verified link" 135msgid "verified link"
136msgstr "verifizierter Link" 136msgstr "verifizierter Link"
137 137
138#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 138#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
139msgid "Location: " 139msgid "Location: "
140msgstr "Standort: " 140msgstr "Standort: "
141 141
142#: html.c:1302 142#: html.c:1358
143msgid "New Post..." 143msgid "New Post..."
144msgstr "Neuer Beitrag..." 144msgstr "Neuer Beitrag..."
145 145
146#: html.c:1304 146#: html.c:1360
147msgid "What's on your mind?" 147msgid "What's on your mind?"
148msgstr "Was beschäftigt dich?" 148msgstr "Was beschäftigt dich?"
149 149
150#: html.c:1313 150#: html.c:1369
151msgid "Operations..." 151msgid "Operations..."
152msgstr "Aktionen..." 152msgstr "Aktionen..."
153 153
154#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 154#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
155msgid "Follow" 155msgid "Follow"
156msgstr "Folgen" 156msgstr "Folgen"
157 157
158#: html.c:1330 158#: html.c:1386
159msgid "(by URL or user@host)" 159msgid "(by URL or user@host)"
160msgstr "(mit URL oder user@host)" 160msgstr "(mit URL oder user@host)"
161 161
162#: html.c:1345 html.c:1925 html.c:4766 162#: html.c:1401 html.c:2003 html.c:5210
163msgid "Boost" 163msgid "Boost"
164msgstr "Boosten" 164msgstr "Boosten"
165 165
166#: html.c:1347 html.c:1364 166#: html.c:1403 html.c:1420 html.c:1442
167msgid "(by URL)" 167msgid "(by URL)"
168msgstr "(mit URL)" 168msgstr "(mit URL)"
169 169
170#: html.c:1362 html.c:1904 html.c:4757 170#: html.c:1418 html.c:1982 html.c:5201
171msgid "Like" 171msgid "Like"
172msgstr "Gefällt mir" 172msgstr "Gefällt mir"
173 173
174#: html.c:1490 174#: html.c:1568
175msgid "User Settings..." 175msgid "User Settings..."
176msgstr "Einstellungen..." 176msgstr "Einstellungen..."
177 177
178#: html.c:1499 178#: html.c:1577
179msgid "Display name:" 179msgid "Display name:"
180msgstr "Anzeigename:" 180msgstr "Anzeigename:"
181 181
182#: html.c:1505 182#: html.c:1583
183msgid "Your name" 183msgid "Your name"
184msgstr "Dein Name" 184msgstr "Dein Name"
185 185
186#: html.c:1507 186#: html.c:1585
187msgid "Avatar: " 187msgid "Avatar: "
188msgstr "Avatar: " 188msgstr "Avatar: "
189 189
190#: html.c:1515 190#: html.c:1593
191msgid "Delete current avatar" 191msgid "Delete current avatar"
192msgstr "Aktuellen Avatar löschen" 192msgstr "Aktuellen Avatar löschen"
193 193
194#: html.c:1517 194#: html.c:1595
195msgid "Header image (banner): " 195msgid "Header image (banner): "
196msgstr "Titelbild (Banner): " 196msgstr "Titelbild (Banner): "
197 197
198#: html.c:1525 198#: html.c:1603
199msgid "Delete current header image" 199msgid "Delete current header image"
200msgstr "Aktuelles Titelbild löschen" 200msgstr "Aktuelles Titelbild löschen"
201 201
202#: html.c:1527 202#: html.c:1605
203msgid "Bio:" 203msgid "Bio:"
204msgstr "Über dich:" 204msgstr "Über dich:"
205 205
206#: html.c:1533 206#: html.c:1611
207msgid "Write about yourself here..." 207msgid "Write about yourself here..."
208msgstr "Erzähle etwas von dir..." 208msgstr "Erzähle etwas von dir..."
209 209
210#: html.c:1542 210#: html.c:1620
211msgid "Always show sensitive content" 211msgid "Always show sensitive content"
212msgstr "Sensible Inhalte immer anzeigen" 212msgstr "Sensible Inhalte immer anzeigen"
213 213
214#: html.c:1544 214#: html.c:1622
215msgid "Email address for notifications:" 215msgid "Email address for notifications:"
216msgstr "E-Mail Adresse für Benachrichtigungen:" 216msgstr "E-Mail Adresse für Benachrichtigungen:"
217 217
218#: html.c:1552 218#: html.c:1630
219msgid "Telegram notifications (bot key and chat id):" 219msgid "Telegram notifications (bot key and chat id):"
220msgstr "Telegram Benachrichtigungen (Bot Schlüssel und Chat ID):" 220msgstr "Telegram Benachrichtigungen (Bot Schlüssel und Chat ID):"
221 221
222#: html.c:1566 222#: html.c:1644
223msgid "ntfy notifications (ntfy server and token):" 223msgid "ntfy notifications (ntfy server and token):"
224msgstr "NTFY Benachrichtigungen (ntfy Server und Token):" 224msgstr "NTFY Benachrichtigungen (ntfy Server und Token):"
225 225
226#: html.c:1588 226#: html.c:1666
227msgid "Maximum days to keep posts (0: server settings):" 227msgid "Maximum days to keep posts (0: server settings):"
228msgstr "Aufbewahrungsfrist der Beiträge in Tagen (0 = Serverstandard):" 228msgstr "Aufbewahrungsfrist der Beiträge in Tagen (0 = Serverstandard):"
229 229
230#: html.c:1602 230#: html.c:1680
231msgid "Drop direct messages from people you don't follow" 231msgid "Drop direct messages from people you don't follow"
232msgstr "Blocke Direktnachrichten von Personen denen du nicht folgst" 232msgstr "Blocke Direktnachrichten von Personen denen du nicht folgst"
233 233
234#: html.c:1611 234#: html.c:1689
235msgid "This account is a bot" 235msgid "This account is a bot"
236msgstr "Dieses Konto ist ein Bot" 236msgstr "Dieses Konto ist ein Bot"
237 237
238#: html.c:1620 238#: html.c:1698
239msgid "Auto-boost all mentions to this account" 239msgid "Auto-boost all mentions to this account"
240msgstr "Automatisches Boosten bei Erwähnungen dieses Kontos" 240msgstr "Automatisches Boosten bei Erwähnungen dieses Kontos"
241 241
242#: html.c:1629 242#: html.c:1707
243msgid "This account is private (posts are not shown through the web)" 243msgid "This account is private (posts are not shown through the web)"
244msgstr "" 244msgstr ""
245"Dieses Konto ist privat (Beiträge werden nicht in der Weboberfläche " 245"Dieses Konto ist privat (Beiträge werden nicht in der Weboberfläche "
246"angezeigt)" 246"angezeigt)"
247 247
248#: html.c:1639 248#: html.c:1717
249msgid "Collapse top threads by default" 249msgid "Collapse top threads by default"
250msgstr "Themen standardmäßig einklappen" 250msgstr "Themen standardmäßig einklappen"
251 251
252#: html.c:1648 252#: html.c:1726
253msgid "Follow requests must be approved" 253msgid "Follow requests must be approved"
254msgstr "Folgeanfragen müssen genehmigt werden" 254msgstr "Folgeanfragen müssen genehmigt werden"
255 255
256#: html.c:1657 256#: html.c:1735
257msgid "Publish follower and following metrics" 257msgid "Publish follower and following metrics"
258msgstr "Veröffentliche die Anzahl von Followern und Gefolgten." 258msgstr "Veröffentliche die Anzahl von Followern und Gefolgten."
259 259
260#: html.c:1659 260#: html.c:1737
261msgid "Current location:" 261msgid "Current location:"
262msgstr "Standort:" 262msgstr "Standort:"
263 263
264#: html.c:1673 264#: html.c:1751
265msgid "Profile metadata (key=value pairs in each line):" 265msgid "Profile metadata (key=value pairs in each line):"
266msgstr "Profil-Metadaten (Begriff=Wert Paare, einer pro Zeile):" 266msgstr "Profil-Metadaten (Begriff=Wert Paare, einer pro Zeile):"
267 267
268#: html.c:1684 268#: html.c:1762
269msgid "Web interface language:" 269msgid "Web interface language:"
270msgstr "Sprache der Weboberfläche:" 270msgstr "Sprache der Weboberfläche:"
271 271
272#: html.c:1703 272#: html.c:1781
273msgid "New password:" 273msgid "New password:"
274msgstr "Neues Passwort:" 274msgstr "Neues Passwort:"
275 275
276#: html.c:1710 276#: html.c:1788
277msgid "Repeat new password:" 277msgid "Repeat new password:"
278msgstr "Neues Passwort wiederholen:" 278msgstr "Neues Passwort wiederholen:"
279 279
280#: html.c:1720 280#: html.c:1798
281msgid "Update user info" 281msgid "Update user info"
282msgstr "Benutzerinformationen aktualisieren" 282msgstr "Benutzerinformationen aktualisieren"
283 283
284#: html.c:1731 284#: html.c:1809
285msgid "Followed hashtags..." 285msgid "Followed hashtags..."
286msgstr "Gefolgte Hashtags..." 286msgstr "Gefolgte Hashtags..."
287 287
288#: html.c:1733 html.c:1766 288#: html.c:1811 html.c:1844
289msgid "One hashtag per line" 289msgid "One hashtag per line"
290msgstr "Ein Hashtag pro Zeile" 290msgstr "Ein Hashtag pro Zeile"
291 291
292#: html.c:1755 html.c:1787 292#: html.c:1833 html.c:1865
293msgid "Update hashtags" 293msgid "Update hashtags"
294msgstr "Hashtags aktualisieren" 294msgstr "Hashtags aktualisieren"
295 295
296#: html.c:1904 296#: html.c:1982
297msgid "Say you like this post" 297msgid "Say you like this post"
298msgstr "Sag, dass dir dieser Beiträg gefällt" 298msgstr "Sag, dass dir dieser Beiträg gefällt"
299 299
300#: html.c:1909 html.c:4775 300#: html.c:1987 html.c:5219
301msgid "Unlike" 301msgid "Unlike"
302msgstr "Gefällt mir zurücknehmen" 302msgstr "Gefällt mir zurücknehmen"
303 303
304#: html.c:1909 304#: html.c:1987
305msgid "Nah don't like it that much" 305msgid "Nah don't like it that much"
306msgstr "Nee, gefällt mir nicht so gut" 306msgstr "Nee, gefällt mir nicht so gut"
307 307
308#: html.c:1915 html.c:4912 308#: html.c:1993 html.c:5356
309msgid "Unpin" 309msgid "Unpin"
310msgstr "Pin entfernen" 310msgstr "Pin entfernen"
311 311
312#: html.c:1915 312#: html.c:1993
313msgid "Unpin this post from your timeline" 313msgid "Unpin this post from your timeline"
314msgstr "Pin für diesen Beitrag aus deiner Zeitleiste entfernen" 314msgstr "Pin für diesen Beitrag aus deiner Zeitleiste entfernen"
315 315
316#: html.c:1918 html.c:4907 316#: html.c:1996 html.c:5351
317msgid "Pin" 317msgid "Pin"
318msgstr "Anpinnen" 318msgstr "Anpinnen"
319 319
320#: html.c:1918 320#: html.c:1996
321msgid "Pin this post to the top of your timeline" 321msgid "Pin this post to the top of your timeline"
322msgstr "Pinne diesen Beitrag an den Anfang deiner Zeitleiste" 322msgstr "Pinne diesen Beitrag an den Anfang deiner Zeitleiste"
323 323
324#: html.c:1925 324#: html.c:2003
325msgid "Announce this post to your followers" 325msgid "Announce this post to your followers"
326msgstr "Diesen Beitrag an deine Follower weiterschicken" 326msgstr "Diesen Beitrag an deine Follower weiterschicken"
327 327
328#: html.c:1930 html.c:4783 328#: html.c:2008 html.c:5227
329msgid "Unboost" 329msgid "Unboost"
330msgstr "Boost zurücknehmen" 330msgstr "Boost zurücknehmen"
331 331
332#: html.c:1930 332#: html.c:2008
333msgid "I regret I boosted this" 333msgid "I regret I boosted this"
334msgstr "Ich bedauere, dass ich das weiterverschickt habe" 334msgstr "Ich bedauere, dass ich das weiterverschickt habe"
335 335
336#: html.c:1936 html.c:4922 336#: html.c:2014 html.c:5366
337msgid "Unbookmark" 337msgid "Unbookmark"
338msgstr "Lesezeichen entfernen" 338msgstr "Lesezeichen entfernen"
339 339
340#: html.c:1936 340#: html.c:2014
341msgid "Delete this post from your bookmarks" 341msgid "Delete this post from your bookmarks"
342msgstr "Diesen Beitrag aus den Lesezeichen entfernen" 342msgstr "Diesen Beitrag aus den Lesezeichen entfernen"
343 343
344#: html.c:1939 html.c:4917 344#: html.c:2017 html.c:5361
345msgid "Bookmark" 345msgid "Bookmark"
346msgstr "Lesezeichen" 346msgstr "Lesezeichen"
347 347
348#: html.c:1939 348#: html.c:2017
349msgid "Add this post to your bookmarks" 349msgid "Add this post to your bookmarks"
350msgstr "Diesen Beitrag zu deinen Lesezeichen hinzufügen" 350msgstr "Diesen Beitrag zu deinen Lesezeichen hinzufügen"
351 351
352#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 352#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
353msgid "Unfollow" 353msgid "Unfollow"
354msgstr "Nicht mehr folgen" 354msgstr "Nicht mehr folgen"
355 355
356#: html.c:1945 html.c:3387 356#: html.c:2023 html.c:3763 html.c:4042
357msgid "Stop following this user's activity" 357msgid "Stop following this user's activity"
358msgstr "Aktivitäten dieses Benutzers nicht mehr folgen" 358msgstr "Aktivitäten dieses Benutzers nicht mehr folgen"
359 359
360#: html.c:1949 html.c:3401 360#: html.c:2027 html.c:3777 html.c:4044
361msgid "Start following this user's activity" 361msgid "Start following this user's activity"
362msgstr "Folge den Aktivitäten dieses Benutzers" 362msgstr "Folge den Aktivitäten dieses Benutzers"
363 363
364#: html.c:1955 html.c:4860 364#: html.c:2033 html.c:5304
365msgid "Unfollow Group" 365msgid "Unfollow Group"
366msgstr "Der Gruppe nicht mehr folgen" 366msgstr "Der Gruppe nicht mehr folgen"
367 367
368#: html.c:1956 368#: html.c:2034
369msgid "Stop following this group or channel" 369msgid "Stop following this group or channel"
370msgstr "Der Gruppe oder dem Kanal nicht mehr folgen" 370msgstr "Der Gruppe oder dem Kanal nicht mehr folgen"
371 371
372#: html.c:1960 html.c:4847 372#: html.c:2038 html.c:5291
373msgid "Follow Group" 373msgid "Follow Group"
374msgstr "Der Gruppe folgen" 374msgstr "Der Gruppe folgen"
375 375
376#: html.c:1961 376#: html.c:2039
377msgid "Start following this group or channel" 377msgid "Start following this group or channel"
378msgstr "Der Gruppe oder dem Kanal folgen" 378msgstr "Der Gruppe oder dem Kanal folgen"
379 379
380#: html.c:1966 html.c:3423 html.c:4791 380#: html.c:2044 html.c:3799 html.c:5235
381msgid "MUTE" 381msgid "MUTE"
382msgstr "Stummschalten" 382msgstr "Stummschalten"
383 383
384#: html.c:1967 384#: html.c:2045
385msgid "Block any activity from this user forever" 385msgid "Block any activity from this user forever"
386msgstr "Alle Aktivitäten dieses Benutzers für immer blockieren" 386msgstr "Alle Aktivitäten dieses Benutzers für immer blockieren"
387 387
388#: html.c:1972 html.c:3405 html.c:4877 388#: html.c:2050 html.c:3781 html.c:5321
389msgid "Delete" 389msgid "Delete"
390msgstr "Löschen" 390msgstr "Löschen"
391 391
392#: html.c:1972 392#: html.c:2050
393msgid "Delete this post" 393msgid "Delete this post"
394msgstr "Diesen Beitrag löschen" 394msgstr "Diesen Beitrag löschen"
395 395
396#: html.c:1975 html.c:4799 396#: html.c:2053 html.c:5243
397msgid "Hide" 397msgid "Hide"
398msgstr "Verstecken" 398msgstr "Verstecken"
399 399
400#: html.c:1975 400#: html.c:2053
401msgid "Hide this post and its children" 401msgid "Hide this post and its children"
402msgstr "Verstecke diesen Beitrag und seine Kommentare" 402msgstr "Verstecke diesen Beitrag und seine Kommentare"
403 403
404#: html.c:2017 404#: html.c:2095
405msgid "Edit..." 405msgid "Edit..."
406msgstr "Bearbeiten..." 406msgstr "Bearbeiten..."
407 407
408#: html.c:2039 408#: html.c:2133
409msgid "Reply..." 409msgid "Reply..."
410msgstr "Antworten..." 410msgstr "Antworten..."
411 411
412#: html.c:2090 412#: html.c:2184
413msgid "Truncated (too deep)" 413msgid "Truncated (too deep)"
414msgstr "Abgeschnitten (zu tief)" 414msgstr "Abgeschnitten (zu tief)"
415 415
416#: html.c:2108 416#: html.c:2202
417msgid "follows you" 417msgid "follows you"
418msgstr "folgt dir" 418msgstr "folgt dir"
419 419
420#: html.c:2182 420#: html.c:2276
421msgid "Pinned" 421msgid "Pinned"
422msgstr "Angeheftet" 422msgstr "Angeheftet"
423 423
424#: html.c:2190 424#: html.c:2284
425msgid "Bookmarked" 425msgid "Bookmarked"
426msgstr "Lesezeichen gesetzt" 426msgstr "Lesezeichen gesetzt"
427 427
428#: html.c:2198 428#: html.c:2292
429msgid "Poll" 429msgid "Poll"
430msgstr "Umfrage" 430msgstr "Umfrage"
431 431
432#: html.c:2205 432#: html.c:2299
433msgid "Voted" 433msgid "Voted"
434msgstr "Abgestimmt" 434msgstr "Abgestimmt"
435 435
436#: html.c:2214 436#: html.c:2308
437msgid "Event" 437msgid "Event"
438msgstr "Ereignis" 438msgstr "Ereignis"
439 439
440#: html.c:2246 html.c:2275 440#: html.c:2340 html.c:2369
441msgid "boosted" 441msgid "boosted"
442msgstr "teilte" 442msgstr "teilte"
443 443
444#: html.c:2289 444#: html.c:2383
445msgid "in reply to" 445msgid "in reply to"
446msgstr "als Antwort auf" 446msgstr "als Antwort auf"
447 447
448#: html.c:2345 448#: html.c:2439
449msgid " [SENSITIVE CONTENT]" 449msgid " [SENSITIVE CONTENT]"
450msgstr " [SENSIBLER INHALT]" 450msgstr " [SENSIBLER INHALT]"
451 451
452#: html.c:2512 452#: html.c:2796
453msgid "Vote" 453msgid "Vote"
454msgstr "Abstimmen" 454msgstr "Abstimmen"
455 455
456#: html.c:2522 456#: html.c:2806
457msgid "Closed" 457msgid "Closed"
458msgstr "Geschlossen" 458msgstr "Geschlossen"
459 459
460#: html.c:2547 460#: html.c:2831
461msgid "Closes in" 461msgid "Closes in"
462msgstr "Beendet in" 462msgstr "Beendet in"
463 463
464#: html.c:2627 464#: html.c:2911
465msgid "Video" 465msgid "Video"
466msgstr "Video" 466msgstr "Video"
467 467
468#: html.c:2642 468#: html.c:2926
469msgid "Audio" 469msgid "Audio"
470msgstr "Audio" 470msgstr "Audio"
471 471
472#: html.c:2670 472#: html.c:2954
473msgid "Attachment" 473msgid "Attachment"
474msgstr "Anhang" 474msgstr "Anhang"
475 475
476#: html.c:2684 476#: html.c:2968
477msgid "Alt..." 477msgid "Alt..."
478msgstr "Alt.-Text..." 478msgstr "Alt.-Text..."
479 479
480#: html.c:2697 480#: html.c:2981
481msgid "Source channel or community" 481msgid "Source channel or community"
482msgstr "Ursprungskanal oder -gemeinschaft" 482msgstr "Ursprungskanal oder -gemeinschaft"
483 483
484#: html.c:2791 484#: html.c:3075
485msgid "Time: " 485msgid "Time: "
486msgstr "Zeit: " 486msgstr "Zeit: "
487 487
488#: html.c:2872 488#: html.c:3156
489msgid "Older..." 489msgid "Older..."
490msgstr "Älter..." 490msgstr "Älter..."
491 491
492#: html.c:2974 492#: html.c:3258
493msgid "about this site" 493msgid "about this site"
494msgstr "Über diese Seite" 494msgstr "Über diese Seite"
495 495
496#: html.c:2976 496#: html.c:3260
497msgid "powered by " 497msgid "powered by "
498msgstr "powered by " 498msgstr "powered by "
499 499
500#: html.c:3041 500#: html.c:3329
501msgid "Dismiss" 501msgid "Dismiss"
502msgstr "Ablehnen" 502msgstr "Ablehnen"
503 503
504#: html.c:3058 504#: html.c:3346
505#, c-format 505#, c-format
506msgid "Timeline for list '%s'" 506msgid "Timeline for list '%s'"
507msgstr "Zeitleiste für Liste '%s'" 507msgstr "Zeitleiste für Liste '%s'"
508 508
509#: html.c:3077 html.c:4169 509#: html.c:3365 html.c:4589
510msgid "Pinned posts" 510msgid "Pinned posts"
511msgstr "Angeheftete Beiträge" 511msgstr "Angeheftete Beiträge"
512 512
513#: html.c:3089 html.c:4184 513#: html.c:3377 html.c:4604
514msgid "Bookmarked posts" 514msgid "Bookmarked posts"
515msgstr "Beiträge mit Lesezeichen" 515msgstr "Beiträge mit Lesezeichen"
516 516
517#: html.c:3101 html.c:4199 517#: html.c:3389 html.c:4619
518msgid "Post drafts" 518msgid "Post drafts"
519msgstr "Entwurf veröffentlichen" 519msgstr "Entwurf veröffentlichen"
520 520
521#: html.c:3177 521#: html.c:3465
522msgid "No more unseen posts" 522msgid "No more unseen posts"
523msgstr "Keine weiteren ungesehenen Beiträge" 523msgstr "Keine weiteren ungesehenen Beiträge"
524 524
525#: html.c:3181 html.c:3290 525#: html.c:3469 html.c:3578
526msgid "Back to top" 526msgid "Back to top"
527msgstr "Nach oben" 527msgstr "Nach oben"
528 528
529#: html.c:3243 529#: html.c:3531
530msgid "History" 530msgid "History"
531msgstr "Historie" 531msgstr "Historie"
532 532
533#: html.c:3295 html.c:3734 533#: html.c:3583 html.c:4149
534msgid "More..." 534msgid "More..."
535msgstr "Mehr..." 535msgstr "Mehr..."
536 536
537#: html.c:3391 html.c:4813 537#: html.c:3767 html.c:5257
538msgid "Unlimit" 538msgid "Unlimit"
539msgstr "Nicht mehr limitieren" 539msgstr "Nicht mehr limitieren"
540 540
541#: html.c:3392 541#: html.c:3768
542msgid "Allow announces (boosts) from this user" 542msgid "Allow announces (boosts) from this user"
543msgstr "Erlaube Boosts dieses Benutzers" 543msgstr "Erlaube Boosts dieses Benutzers"
544 544
545#: html.c:3395 html.c:4809 545#: html.c:3771 html.c:5253
546msgid "Limit" 546msgid "Limit"
547msgstr "Limitieren" 547msgstr "Limitieren"
548 548
549#: html.c:3396 549#: html.c:3772
550msgid "Block announces (boosts) from this user" 550msgid "Block announces (boosts) from this user"
551msgstr "Blocke Boosts dieses Benutzers" 551msgstr "Blocke Boosts dieses Benutzers"
552 552
553#: html.c:3405 553#: html.c:3781
554msgid "Delete this user" 554msgid "Delete this user"
555msgstr "Benutzer löschen" 555msgstr "Benutzer löschen"
556 556
557#: html.c:3410 html.c:4927 557#: html.c:3786 html.c:5371
558msgid "Approve" 558msgid "Approve"
559msgstr "Bestätigen" 559msgstr "Bestätigen"
560 560
561#: html.c:3411 561#: html.c:3787
562msgid "Approve this follow request" 562msgid "Approve this follow request"
563msgstr "Diese Folgeanfrage bestätigen" 563msgstr "Diese Folgeanfrage bestätigen"
564 564
565#: html.c:3414 html.c:4951 565#: html.c:3790 html.c:5395
566msgid "Discard" 566msgid "Discard"
567msgstr "Verwerfen" 567msgstr "Verwerfen"
568 568
569#: html.c:3414 569#: html.c:3790
570msgid "Discard this follow request" 570msgid "Discard this follow request"
571msgstr "Diese Folgeanfrage verwerfen" 571msgstr "Diese Folgeanfrage verwerfen"
572 572
573#: html.c:3419 html.c:4795 573#: html.c:3795 html.c:5239
574msgid "Unmute" 574msgid "Unmute"
575msgstr "Stummschaltung aufheben" 575msgstr "Stummschaltung aufheben"
576 576
577#: html.c:3420 577#: html.c:3796
578msgid "Stop blocking activities from this user" 578msgid "Stop blocking activities from this user"
579msgstr "Aktivitäten dieses Benutzers nicht mehr blockieren" 579msgstr "Aktivitäten dieses Benutzers nicht mehr blockieren"
580 580
581#: html.c:3424 581#: html.c:3800
582msgid "Block any activity from this user" 582msgid "Block any activity from this user"
583msgstr "Alle Aktivitäten dieses Benutzers blockieren" 583msgstr "Alle Aktivitäten dieses Benutzers blockieren"
584 584
585#: html.c:3432 585#: html.c:3808
586msgid "Direct Message..." 586msgid "Direct Message..."
587msgstr "Direktnachricht..." 587msgstr "Direktnachricht..."
588 588
589#: html.c:3467 589#: html.c:3843
590msgid "Pending follow confirmations" 590msgid "Pending follow confirmations"
591msgstr "Ausstehende Folgebestätigungen" 591msgstr "Ausstehende Folgebestätigungen"
592 592
593#: html.c:3471 593#: html.c:3847
594msgid "People you follow" 594msgid "People you follow"
595msgstr "Personen denen du folgst" 595msgstr "Personen denen du folgst"
596 596
597#: html.c:3472 597#: html.c:3848
598msgid "People that follow you" 598msgid "People that follow you"
599msgstr "Personen die dir folgen" 599msgstr "Personen die dir folgen"
600 600
601#: html.c:3511 601#: html.c:3887
602msgid "Clear all" 602msgid "Clear all"
603msgstr "Aufräumen" 603msgstr "Aufräumen"
604 604
605#: html.c:3571 605#: html.c:3951
606msgid "Mention" 606msgid "Mention"
607msgstr "Erwähnung" 607msgstr "Erwähnung"
608 608
609#: html.c:3574 609#: html.c:3954
610msgid "Finished poll" 610msgid "Finished poll"
611msgstr "Beendete Umfrage" 611msgstr "Beendete Umfrage"
612 612
613#: html.c:3590 613#: html.c:3979
614msgid "Follow Request" 614msgid "Follow Request"
615msgstr "Folge-Anfrage" 615msgstr "Folge-Anfrage"
616 616
617#: html.c:3674 617#: html.c:4089
618msgid "Context" 618msgid "Context"
619msgstr "Zusammenhang anzeigen" 619msgstr "Zusammenhang anzeigen"
620 620
621#: html.c:3692 621#: html.c:4107
622msgid "New" 622msgid "New"
623msgstr "Neu" 623msgstr "Neu"
624 624
625#: html.c:3707 625#: html.c:4122
626msgid "Already seen" 626msgid "Already seen"
627msgstr "Bereits gesehen" 627msgstr "Bereits gesehen"
628 628
629#: html.c:3722 629#: html.c:4137
630msgid "None" 630msgid "None"
631msgstr "Nichts" 631msgstr "Nichts"
632 632
633#: html.c:3994 633#: html.c:4414
634#, c-format 634#, c-format
635msgid "Search results for account %s" 635msgid "Search results for account %s"
636msgstr "Suchergebnisse für Konto %s" 636msgstr "Suchergebnisse für Konto %s"
637 637
638#: html.c:4001 638#: html.c:4421
639#, c-format 639#, c-format
640msgid "Account %s not found" 640msgid "Account %s not found"
641msgstr "Konto %s wurde nicht gefunden" 641msgstr "Konto %s wurde nicht gefunden"
642 642
643#: html.c:4032 643#: html.c:4452
644#, c-format 644#, c-format
645msgid "Search results for tag %s" 645msgid "Search results for tag %s"
646msgstr "Suchergebnisse für Hashtag %s" 646msgstr "Suchergebnisse für Hashtag %s"
647 647
648#: html.c:4032 648#: html.c:4452
649#, c-format 649#, c-format
650msgid "Nothing found for tag %s" 650msgid "Nothing found for tag %s"
651msgstr "Nicht gefunden zu Hashtag %s" 651msgstr "Nicht gefunden zu Hashtag %s"
652 652
653#: html.c:4048 653#: html.c:4468
654#, c-format 654#, c-format
655msgid "Search results for '%s' (may be more)" 655msgid "Search results for '%s' (may be more)"
656msgstr "Suchergebnisse für '%s' (könnten mehr sein)" 656msgstr "Suchergebnisse für '%s' (könnten mehr sein)"
657 657
658#: html.c:4051 658#: html.c:4471
659#, c-format 659#, c-format
660msgid "Search results for '%s'" 660msgid "Search results for '%s'"
661msgstr "Keine Suchergebnisse für '%s'" 661msgstr "Keine Suchergebnisse für '%s'"
662 662
663#: html.c:4054 663#: html.c:4474
664#, c-format 664#, c-format
665msgid "No more matches for '%s'" 665msgid "No more matches for '%s'"
666msgstr "Keine weiteren Treffer für '%s'" 666msgstr "Keine weiteren Treffer für '%s'"
667 667
668#: html.c:4056 668#: html.c:4476
669#, c-format 669#, c-format
670msgid "Nothing found for '%s'" 670msgid "Nothing found for '%s'"
671msgstr "Nichts gefunden für '%s'" 671msgstr "Nichts gefunden für '%s'"
672 672
673#: html.c:4154 673#: html.c:4574
674msgid "Showing instance timeline" 674msgid "Showing instance timeline"
675msgstr "Zeitleiste der Instanz anzeigen" 675msgstr "Zeitleiste der Instanz anzeigen"
676 676
677#: html.c:4237 677#: html.c:4657
678#, c-format 678#, c-format
679msgid "Showing timeline for list '%s'" 679msgid "Showing timeline for list '%s'"
680msgstr "Zeitleiste der Liste '%s' anzeigen" 680msgstr "Zeitleiste der Liste '%s' anzeigen"
681 681
682#: httpd.c:258 682#: httpd.c:259
683#, c-format 683#, c-format
684msgid "Search results for tag #%s" 684msgid "Search results for tag #%s"
685msgstr "Suchergebnisse für Hashtag #%s" 685msgstr "Suchergebnisse für Hashtag #%s"
686 686
687#: httpd.c:267 687#: httpd.c:268
688msgid "Recent posts by users in this instance" 688msgid "Recent posts by users in this instance"
689msgstr "Neueste Beiträge von Benutzern dieser Instanz" 689msgstr "Neueste Beiträge von Benutzern dieser Instanz"
690 690
691#: html.c:1764 691#: html.c:1842
692msgid "Blocked hashtags..." 692msgid "Blocked hashtags..."
693msgstr "Geblockte Hashtags..." 693msgstr "Geblockte Hashtags..."
694 694
695#: html.c:518 695#: html.c:574
696msgid "Optional URL to reply to" 696msgid "Optional URL to reply to"
697msgstr "Optionale URL zum Antworten" 697msgstr "Optionale URL zum Antworten"
698 698
699#: html.c:695 699#: html.c:751
700msgid "" 700msgid ""
701"Option 1...\n" 701"Option 1...\n"
702"Option 2...\n" 702"Option 2...\n"
@@ -708,94 +708,106 @@ msgstr ""
708"Option 3...\n" 708"Option 3...\n"
709"..." 709"..."
710 710
711#: html.c:1558 711#: html.c:1636
712msgid "Bot API key" 712msgid "Bot API key"
713msgstr "Bot API Schlüssel" 713msgstr "Bot API Schlüssel"
714 714
715#: html.c:1564 715#: html.c:1642
716msgid "Chat id" 716msgid "Chat id"
717msgstr "Chat ID" 717msgstr "Chat ID"
718 718
719#: html.c:1572 719#: html.c:1650
720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
721msgstr "ntfy Server - vollständige URL (Bsp.: https://ntfy.sh/YourTopic)" 721msgstr "ntfy Server - vollständige URL (Bsp.: https://ntfy.sh/YourTopic)"
722 722
723#: html.c:1578 723#: html.c:1656
724msgid "ntfy token - if needed" 724msgid "ntfy token - if needed"
725msgstr "ntfy Token - falls nötig" 725msgstr "ntfy Token - falls nötig"
726 726
727#: html.c:3078 727#: html.c:3366
728msgid "pinned" 728msgid "pinned"
729msgstr "Angeheftet" 729msgstr "Angeheftet"
730 730
731#: html.c:3090 731#: html.c:3378
732msgid "bookmarks" 732msgid "bookmarks"
733msgstr "Lesezeichen" 733msgstr "Lesezeichen"
734 734
735#: html.c:3102 735#: html.c:3390
736msgid "drafts" 736msgid "drafts"
737msgstr "Entwürfe" 737msgstr "Entwürfe"
738 738
739#: html.c:584 739#: html.c:640
740msgid "Scheduled post..." 740msgid "Scheduled post..."
741msgstr "Geplanter Beitrag..." 741msgstr "Geplanter Beitrag..."
742 742
743msgid "Post date and time:" 743msgid "Post date and time:"
744msgstr "Datum und Uhrzeit des Beitrags:" 744msgstr "Datum und Uhrzeit des Beitrags:"
745 745
746#: html.c:3113 html.c:4214 746#: html.c:3401 html.c:4634
747msgid "Scheduled posts" 747msgid "Scheduled posts"
748msgstr "Geplante Beiträge" 748msgstr "Geplante Beiträge"
749 749
750#: html.c:3114 750#: html.c:3402
751msgid "scheduled posts" 751msgid "scheduled posts"
752msgstr "Geplante Beiträge" 752msgstr "Geplante Beiträge"
753 753
754#: html.c:578 754#: html.c:634
755#, c-format 755#, c-format
756msgid "Post date and time (timezone: %s):" 756msgid "Post date and time (timezone: %s):"
757msgstr "Datum und Uhrzeit des Beitrags (Zeitzone: %s):" 757msgstr "Datum und Uhrzeit des Beitrags (Zeitzone: %s):"
758 758
759#: html.c:1689 759#: html.c:1767
760msgid "Time zone:" 760msgid "Time zone:"
761msgstr "Zeitzone:" 761msgstr "Zeitzone:"
762 762
763#: html.c:559 763#: html.c:615
764msgid "Language:" 764msgid "Language:"
765msgstr "Sprache:" 765msgstr "Sprache:"
766 766
767#: html.c:1580 767#: html.c:1658
768msgid "Notify webhook:" 768msgid "Notify webhook:"
769msgstr "Notify webhook:" 769msgstr "Notify webhook:"
770 770
771#: html.c:1586 771#: html.c:1664
772msgid "http://example.com/webhook" 772msgid "http://example.com/webhook"
773msgstr "http://example.com/webhook" 773msgstr "http://example.com/webhook"
774 774
775#: html.c:1694 775#: html.c:1772
776msgid "Languages you usually post in:" 776msgid "Languages you usually post in:"
777msgstr "Sprache, in der du normalerweise schreibst:" 777msgstr "Sprache, in der du normalerweise schreibst:"
778 778
779#: html.c:1700 779#: html.c:1778
780msgid "en fr es de_AT" 780msgid "en fr es de_AT"
781msgstr "en fr es de_DE" 781msgstr "en fr es de_DE"
782 782
783#: html.c:460 783#: html.c:428
784msgid "Visibility: " 784msgid "Visibility: "
785msgstr "Sichtbarkeit" 785msgstr "Sichtbarkeit"
786 786
787#: html.c:468
788msgid "Public" 787msgid "Public"
789msgstr "Öffentlich" 788msgstr "Öffentlich"
790 789
791#: html.c:477
792msgid "Unlisted" 790msgid "Unlisted"
793msgstr "Ungelistete" 791msgstr "Ungelistete"
794 792
795#: html.c:486
796msgid "Followers-only" 793msgid "Followers-only"
797msgstr "Nur Follower" 794msgstr "Nur Follower"
798 795
799#: html.c:495
800msgid "Direct Message" 796msgid "Direct Message"
801msgstr "Direktnachricht" 797msgstr "Direktnachricht"
798
799#: html.c:488 html.c:2534 html.c:2559 html.c:5177
800msgid "EmojiUnreact"
801msgstr "Emoji-Reaktion löschen"
802
803#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
804msgid "EmojiReact"
805msgstr "Emoji-Reaktion"
806
807#: html.c:2115
808msgid "Emoji react..."
809msgstr "Emoji-Reaktion..."
810
811#: html.c:2609
812msgid "Emoji reactions: "
813msgstr "Emoji-Reaktionen:"
diff --git a/po/el_GR.po b/po/el_GR.po
index 84239f4..76e6d9d 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -14,119 +14,119 @@ msgstr ""
14"Content-Transfer-Encoding: 8bit\n" 14"Content-Transfer-Encoding: 8bit\n"
15"X-Generator: Poedit 3.5\n" 15"X-Generator: Poedit 3.5\n"
16 16
17#: html.c:440 17#: html.c:534
18msgid "Sensitive content: " 18msgid "Sensitive content: "
19msgstr "Ευαίσθητο πεÏιεχόμενο: " 19msgstr "Ευαίσθητο πεÏιεχόμενο: "
20 20
21#: html.c:448 21#: html.c:542
22msgid "Sensitive content description" 22msgid "Sensitive content description"
23msgstr "ΠεÏιγÏαφή ευαίσθητου πεÏιεχομένου" 23msgstr "ΠεÏιγÏαφή ευαίσθητου πεÏιεχομένου"
24 24
25msgid "Only for mentioned people: " 25msgid "Only for mentioned people: "
26msgstr "Μόνο για αναφεÏόμενα άτομα: " 26msgstr "Μόνο για αναφεÏόμενα άτομα: "
27 27
28#: html.c:514 28#: html.c:570
29msgid "Reply to (URL): " 29msgid "Reply to (URL): "
30msgstr "Απάντηση σε (URL): " 30msgstr "Απάντηση σε (URL): "
31 31
32#: html.c:523 32#: html.c:579
33msgid "Don't send, but store as a draft" 33msgid "Don't send, but store as a draft"
34msgstr "Μη δημοσιεÏσεις, αλλά αποθήκευσε σαν Ï€Ïοσχέδιο" 34msgstr "Μη δημοσιεÏσεις, αλλά αποθήκευσε σαν Ï€Ïοσχέδιο"
35 35
36#: html.c:524 36#: html.c:580
37msgid "Draft:" 37msgid "Draft:"
38msgstr "ΠÏοσχέδιο:" 38msgstr "ΠÏοσχέδιο:"
39 39
40#: html.c:614 40#: html.c:670
41msgid "Attachments..." 41msgid "Attachments..."
42msgstr "Επισυνάψεις..." 42msgstr "Επισυνάψεις..."
43 43
44#: html.c:637 44#: html.c:693
45msgid "File:" 45msgid "File:"
46msgstr "ΑÏχείο:" 46msgstr "ΑÏχείο:"
47 47
48#: html.c:641 48#: html.c:697
49msgid "Clear this field to delete the attachment" 49msgid "Clear this field to delete the attachment"
50msgstr "ΚαθάÏισε αυτό το πεδίο για να διαγÏάψεις την επισÏναψη" 50msgstr "ΚαθάÏισε αυτό το πεδίο για να διαγÏάψεις την επισÏναψη"
51 51
52#: html.c:650 html.c:675 52#: html.c:706 html.c:731
53msgid "Attachment description" 53msgid "Attachment description"
54msgstr "ΠεÏιγÏαφή επισÏναψης" 54msgstr "ΠεÏιγÏαφή επισÏναψης"
55 55
56#: html.c:686 56#: html.c:742
57msgid "Poll..." 57msgid "Poll..."
58msgstr "Δημοσκόπηση..." 58msgstr "Δημοσκόπηση..."
59 59
60#: html.c:688 60#: html.c:744
61msgid "Poll options (one per line, up to 8):" 61msgid "Poll options (one per line, up to 8):"
62msgstr "Επιλογές δημοσκόπησης (μία ανά σειÏά, μέχÏι 8):" 62msgstr "Επιλογές δημοσκόπησης (μία ανά σειÏά, μέχÏι 8):"
63 63
64#: html.c:700 64#: html.c:756
65msgid "One choice" 65msgid "One choice"
66msgstr "Μία επιλογή" 66msgstr "Μία επιλογή"
67 67
68#: html.c:703 68#: html.c:759
69msgid "Multiple choices" 69msgid "Multiple choices"
70msgstr "Πολλαπλές επιλογές" 70msgstr "Πολλαπλές επιλογές"
71 71
72#: html.c:709 72#: html.c:765
73msgid "End in 5 minutes" 73msgid "End in 5 minutes"
74msgstr "Τελειώνει σε 5 λεπτά" 74msgstr "Τελειώνει σε 5 λεπτά"
75 75
76#: html.c:713 76#: html.c:769
77msgid "End in 1 hour" 77msgid "End in 1 hour"
78msgstr "Τελειώνει σε 1 ÏŽÏα" 78msgstr "Τελειώνει σε 1 ÏŽÏα"
79 79
80#: html.c:716 80#: html.c:772
81msgid "End in 1 day" 81msgid "End in 1 day"
82msgstr "Τελειώνει σε 1 ημέÏα" 82msgstr "Τελειώνει σε 1 ημέÏα"
83 83
84#: html.c:724 84#: html.c:780
85msgid "Post" 85msgid "Post"
86msgstr "Δημοσίευση" 86msgstr "Δημοσίευση"
87 87
88#: html.c:826 html.c:833 88#: html.c:882 html.c:889
89msgid "Site description" 89msgid "Site description"
90msgstr "ΠεÏιγÏαφή ιστότοπου" 90msgstr "ΠεÏιγÏαφή ιστότοπου"
91 91
92#: html.c:844 92#: html.c:900
93msgid "Admin email" 93msgid "Admin email"
94msgstr "Email διαχειÏιστή" 94msgstr "Email διαχειÏιστή"
95 95
96#: html.c:857 96#: html.c:913
97msgid "Admin account" 97msgid "Admin account"
98msgstr "ΔιαχειÏιστής" 98msgstr "ΔιαχειÏιστής"
99 99
100#: html.c:922 html.c:1278 100#: html.c:978 html.c:1334
101#, c-format 101#, c-format
102msgid "%d following, %d followers" 102msgid "%d following, %d followers"
103msgstr "%d ακολουθείτε, %d ακόλουθοι" 103msgstr "%d ακολουθείτε, %d ακόλουθοι"
104 104
105#: html.c:1019 105#: html.c:1075
106msgid "RSS" 106msgid "RSS"
107msgstr "RSS" 107msgstr "RSS"
108 108
109#: html.c:1024 html.c:1063 109#: html.c:1080 html.c:1119
110msgid "private" 110msgid "private"
111msgstr "ιδιωτικό" 111msgstr "ιδιωτικό"
112 112
113#: html.c:1059 113#: html.c:1115
114msgid "public" 114msgid "public"
115msgstr "δημόσιο" 115msgstr "δημόσιο"
116 116
117#: html.c:1067 117#: html.c:1123
118msgid "notifications" 118msgid "notifications"
119msgstr "ειδοποιήσεις" 119msgstr "ειδοποιήσεις"
120 120
121#: html.c:1072 121#: html.c:1128
122msgid "people" 122msgid "people"
123msgstr "άνθÏωποι" 123msgstr "άνθÏωποι"
124 124
125#: html.c:1077 125#: html.c:1133
126msgid "instance" 126msgid "instance"
127msgstr "διακομιστής" 127msgstr "διακομιστής"
128 128
129#: html.c:1086 129#: html.c:1142
130msgid "" 130msgid ""
131"Search posts by URL or content (regular expression), @user@host accounts, or " 131"Search posts by URL or content (regular expression), @user@host accounts, or "
132"#tag" 132"#tag"
@@ -134,576 +134,576 @@ msgstr ""
134"Αναζήτηση δημοσιεÏσεων με URL ή πεÏιεχόμενο (κανονική έκφÏαση), " 134"Αναζήτηση δημοσιεÏσεων με URL ή πεÏιεχόμενο (κανονική έκφÏαση), "
135"@χÏήστης@διακομιστής, ή #ετικέτα" 135"@χÏήστης@διακομιστής, ή #ετικέτα"
136 136
137#: html.c:1087 137#: html.c:1143
138msgid "Content search" 138msgid "Content search"
139msgstr "Αναζήτηση πεÏιεχομένου" 139msgstr "Αναζήτηση πεÏιεχομένου"
140 140
141#: html.c:1213 141#: html.c:1269
142msgid "verified link" 142msgid "verified link"
143msgstr "πιστοποιημένος σÏνδεσμος" 143msgstr "πιστοποιημένος σÏνδεσμος"
144 144
145#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 145#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
146msgid "Location: " 146msgid "Location: "
147msgstr "Τοποθεσία: " 147msgstr "Τοποθεσία: "
148 148
149#: html.c:1302 149#: html.c:1358
150msgid "New Post..." 150msgid "New Post..."
151msgstr "Îέα Δημοσίευση..." 151msgstr "Îέα Δημοσίευση..."
152 152
153#: html.c:1304 153#: html.c:1360
154msgid "What's on your mind?" 154msgid "What's on your mind?"
155msgstr "Τι έχεις στο μυαλό σου;" 155msgstr "Τι έχεις στο μυαλό σου;"
156 156
157#: html.c:1313 157#: html.c:1369
158msgid "Operations..." 158msgid "Operations..."
159msgstr "ΛειτουÏγίες..." 159msgstr "ΛειτουÏγίες..."
160 160
161#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 161#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
162msgid "Follow" 162msgid "Follow"
163msgstr "ΑκολοÏθησε" 163msgstr "ΑκολοÏθησε"
164 164
165#: html.c:1330 165#: html.c:1386
166msgid "(by URL or user@host)" 166msgid "(by URL or user@host)"
167msgstr "(με URL ή user@host)" 167msgstr "(με URL ή user@host)"
168 168
169#: html.c:1345 html.c:1925 html.c:4766 169#: html.c:1401 html.c:2003 html.c:5210
170msgid "Boost" 170msgid "Boost"
171msgstr "Ενίσχυση" 171msgstr "Ενίσχυση"
172 172
173#: html.c:1347 html.c:1364 173#: html.c:1403 html.c:1420 html.c:1442
174msgid "(by URL)" 174msgid "(by URL)"
175msgstr "(από URL)" 175msgstr "(από URL)"
176 176
177#: html.c:1362 html.c:1904 html.c:4757 177#: html.c:1418 html.c:1982 html.c:5201
178msgid "Like" 178msgid "Like"
179msgstr "Μου αÏέσει" 179msgstr "Μου αÏέσει"
180 180
181#: html.c:1490 181#: html.c:1568
182msgid "User Settings..." 182msgid "User Settings..."
183msgstr "Ρυθμίσεις ΧÏήστη..." 183msgstr "Ρυθμίσεις ΧÏήστη..."
184 184
185#: html.c:1499 185#: html.c:1577
186msgid "Display name:" 186msgid "Display name:"
187msgstr "ΠÏοβαλλόμενο όνομα:" 187msgstr "ΠÏοβαλλόμενο όνομα:"
188 188
189#: html.c:1505 189#: html.c:1583
190msgid "Your name" 190msgid "Your name"
191msgstr "Το όνομα σου" 191msgstr "Το όνομα σου"
192 192
193#: html.c:1507 193#: html.c:1585
194msgid "Avatar: " 194msgid "Avatar: "
195msgstr "Εικόνα Ï€Ïοφίλ: " 195msgstr "Εικόνα Ï€Ïοφίλ: "
196 196
197#: html.c:1515 197#: html.c:1593
198msgid "Delete current avatar" 198msgid "Delete current avatar"
199msgstr "ΔιαγÏαφή Ï„Ïέχουσας εικόνας Ï€Ïοφίλ" 199msgstr "ΔιαγÏαφή Ï„Ïέχουσας εικόνας Ï€Ïοφίλ"
200 200
201#: html.c:1517 201#: html.c:1595
202msgid "Header image (banner): " 202msgid "Header image (banner): "
203msgstr "Εικόνα κεφαλίδας (banner): " 203msgstr "Εικόνα κεφαλίδας (banner): "
204 204
205#: html.c:1525 205#: html.c:1603
206msgid "Delete current header image" 206msgid "Delete current header image"
207msgstr "ΔιαγÏαφή Ï„Ïέχουσας εικόνας κεφαλίδας" 207msgstr "ΔιαγÏαφή Ï„Ïέχουσας εικόνας κεφαλίδας"
208 208
209#: html.c:1527 209#: html.c:1605
210msgid "Bio:" 210msgid "Bio:"
211msgstr "ΒιογÏαφικό:" 211msgstr "ΒιογÏαφικό:"
212 212
213#: html.c:1533 213#: html.c:1611
214msgid "Write about yourself here..." 214msgid "Write about yourself here..."
215msgstr "ΓÏάψε για τον εαυτό σου εδώ..." 215msgstr "ΓÏάψε για τον εαυτό σου εδώ..."
216 216
217#: html.c:1542 217#: html.c:1620
218msgid "Always show sensitive content" 218msgid "Always show sensitive content"
219msgstr "Πάντα Ï€Ïόβαλε ευαίσθητο πεÏιεχόμενο" 219msgstr "Πάντα Ï€Ïόβαλε ευαίσθητο πεÏιεχόμενο"
220 220
221#: html.c:1544 221#: html.c:1622
222msgid "Email address for notifications:" 222msgid "Email address for notifications:"
223msgstr "ΔιεÏθυνση email για ειδοποιήσεις:" 223msgstr "ΔιεÏθυνση email για ειδοποιήσεις:"
224 224
225#: html.c:1552 225#: html.c:1630
226msgid "Telegram notifications (bot key and chat id):" 226msgid "Telegram notifications (bot key and chat id):"
227msgstr "Ειδοποιήσεις Telegram (κλειδί bot και chat id):" 227msgstr "Ειδοποιήσεις Telegram (κλειδί bot και chat id):"
228 228
229#: html.c:1566 229#: html.c:1644
230msgid "ntfy notifications (ntfy server and token):" 230msgid "ntfy notifications (ntfy server and token):"
231msgstr "ειδοποιήσεις ntfy (διακομιστής ntfy και token):" 231msgstr "ειδοποιήσεις ntfy (διακομιστής ntfy και token):"
232 232
233#: html.c:1588 233#: html.c:1666
234msgid "Maximum days to keep posts (0: server settings):" 234msgid "Maximum days to keep posts (0: server settings):"
235msgstr "ΔιατήÏηση δημοσιεÏσεων για ημέÏες (0: Ïυθμίσεις διακομιστή):" 235msgstr "ΔιατήÏηση δημοσιεÏσεων για ημέÏες (0: Ïυθμίσεις διακομιστή):"
236 236
237#: html.c:1602 237#: html.c:1680
238msgid "Drop direct messages from people you don't follow" 238msgid "Drop direct messages from people you don't follow"
239msgstr "ΑπόÏÏιψη άμεσων μηνυμάτων από άτομα που δεν ακολουθείτε" 239msgstr "ΑπόÏÏιψη άμεσων μηνυμάτων από άτομα που δεν ακολουθείτε"
240 240
241#: html.c:1611 241#: html.c:1689
242msgid "This account is a bot" 242msgid "This account is a bot"
243msgstr "Αυτός ο λογαÏιασμός είναι αυτοματοποιημένος (bot)" 243msgstr "Αυτός ο λογαÏιασμός είναι αυτοματοποιημένος (bot)"
244 244
245#: html.c:1620 245#: html.c:1698
246msgid "Auto-boost all mentions to this account" 246msgid "Auto-boost all mentions to this account"
247msgstr "Αυτόματη ενίσχυση όλων των αναφοÏών σε αυτό το λογαÏιασμό" 247msgstr "Αυτόματη ενίσχυση όλων των αναφοÏών σε αυτό το λογαÏιασμό"
248 248
249#: html.c:1629 249#: html.c:1707
250msgid "This account is private (posts are not shown through the web)" 250msgid "This account is private (posts are not shown through the web)"
251msgstr "" 251msgstr ""
252"Αυτός ο λογαÏιασμός είναι ιδιωτικός (οι δημοσιεÏσεις δεν εμφανίζονται στο " 252"Αυτός ο λογαÏιασμός είναι ιδιωτικός (οι δημοσιεÏσεις δεν εμφανίζονται στο "
253"διαδίκτυο)" 253"διαδίκτυο)"
254 254
255#: html.c:1639 255#: html.c:1717
256msgid "Collapse top threads by default" 256msgid "Collapse top threads by default"
257msgstr "Αναδίπλωση κοÏυφαίων συζητήσεων εξ'οÏισμοÏ" 257msgstr "Αναδίπλωση κοÏυφαίων συζητήσεων εξ'οÏισμοÏ"
258 258
259#: html.c:1648 259#: html.c:1726
260msgid "Follow requests must be approved" 260msgid "Follow requests must be approved"
261msgstr "Τα αιτήματα ακόλουθων Ï€Ïέπει να εγκÏίνονται" 261msgstr "Τα αιτήματα ακόλουθων Ï€Ïέπει να εγκÏίνονται"
262 262
263#: html.c:1657 263#: html.c:1735
264msgid "Publish follower and following metrics" 264msgid "Publish follower and following metrics"
265msgstr "Δημοσίευση στατιστικών ακόλουθων και ακολουθοÏμενων" 265msgstr "Δημοσίευση στατιστικών ακόλουθων και ακολουθοÏμενων"
266 266
267#: html.c:1659 267#: html.c:1737
268msgid "Current location:" 268msgid "Current location:"
269msgstr "ΤÏέχουσα τοποθεσία:" 269msgstr "ΤÏέχουσα τοποθεσία:"
270 270
271#: html.c:1673 271#: html.c:1751
272msgid "Profile metadata (key=value pairs in each line):" 272msgid "Profile metadata (key=value pairs in each line):"
273msgstr "Μεταστοιχεία Ï€Ïοφίλ (κλειδί=τιμή ζευγάÏια σε κάθε γÏαμμή):" 273msgstr "Μεταστοιχεία Ï€Ïοφίλ (κλειδί=τιμή ζευγάÏια σε κάθε γÏαμμή):"
274 274
275#: html.c:1684 275#: html.c:1762
276msgid "Web interface language:" 276msgid "Web interface language:"
277msgstr "Γλώσσα πεÏιβάλλοντος web:" 277msgstr "Γλώσσα πεÏιβάλλοντος web:"
278 278
279#: html.c:1703 279#: html.c:1781
280msgid "New password:" 280msgid "New password:"
281msgstr "Îέος κωδικός:" 281msgstr "Îέος κωδικός:"
282 282
283#: html.c:1710 283#: html.c:1788
284msgid "Repeat new password:" 284msgid "Repeat new password:"
285msgstr "Επανάληψη νέου κωδικοÏ:" 285msgstr "Επανάληψη νέου κωδικοÏ:"
286 286
287#: html.c:1720 287#: html.c:1798
288msgid "Update user info" 288msgid "Update user info"
289msgstr "ΕνημέÏωση στοιχείων χÏήστη" 289msgstr "ΕνημέÏωση στοιχείων χÏήστη"
290 290
291#: html.c:1731 291#: html.c:1809
292msgid "Followed hashtags..." 292msgid "Followed hashtags..."
293msgstr "Ετικέτες που ακολουθείτε..." 293msgstr "Ετικέτες που ακολουθείτε..."
294 294
295#: html.c:1733 html.c:1766 295#: html.c:1811 html.c:1844
296msgid "One hashtag per line" 296msgid "One hashtag per line"
297msgstr "Μία ετικέτα ανά γÏαμμή" 297msgstr "Μία ετικέτα ανά γÏαμμή"
298 298
299#: html.c:1755 html.c:1787 299#: html.c:1833 html.c:1865
300msgid "Update hashtags" 300msgid "Update hashtags"
301msgstr "ΕνημέÏωση ετικετών" 301msgstr "ΕνημέÏωση ετικετών"
302 302
303#: html.c:1904 303#: html.c:1982
304msgid "Say you like this post" 304msgid "Say you like this post"
305msgstr "ΑνάφεÏε ότι σου αÏέσει αυτή η δημοσίευση" 305msgstr "ΑνάφεÏε ότι σου αÏέσει αυτή η δημοσίευση"
306 306
307#: html.c:1909 html.c:4775 307#: html.c:1987 html.c:5219
308msgid "Unlike" 308msgid "Unlike"
309msgstr "ΑναίÏεση μου αÏέσει" 309msgstr "ΑναίÏεση μου αÏέσει"
310 310
311#: html.c:1909 311#: html.c:1987
312msgid "Nah don't like it that much" 312msgid "Nah don't like it that much"
313msgstr "Μπα δεν μ' αÏέσει τόσο" 313msgstr "Μπα δεν μ' αÏέσει τόσο"
314 314
315#: html.c:1915 html.c:4912 315#: html.c:1993 html.c:5356
316msgid "Unpin" 316msgid "Unpin"
317msgstr "ΞεκαÏφίτσωμα" 317msgstr "ΞεκαÏφίτσωμα"
318 318
319#: html.c:1915 319#: html.c:1993
320msgid "Unpin this post from your timeline" 320msgid "Unpin this post from your timeline"
321msgstr "ΞεκαÏφίτσωμα αυτής της δημοσίευσης από τη Ïοή σας" 321msgstr "ΞεκαÏφίτσωμα αυτής της δημοσίευσης από τη Ïοή σας"
322 322
323#: html.c:1918 html.c:4907 323#: html.c:1996 html.c:5351
324msgid "Pin" 324msgid "Pin"
325msgstr "ΚαÏφίτσωμα" 325msgstr "ΚαÏφίτσωμα"
326 326
327#: html.c:1918 327#: html.c:1996
328msgid "Pin this post to the top of your timeline" 328msgid "Pin this post to the top of your timeline"
329msgstr "ΚαÏφίτσωμα αυτής της δημοσίευσης στη κοÏυφή της Ïοής σας" 329msgstr "ΚαÏφίτσωμα αυτής της δημοσίευσης στη κοÏυφή της Ïοής σας"
330 330
331#: html.c:1925 331#: html.c:2003
332msgid "Announce this post to your followers" 332msgid "Announce this post to your followers"
333msgstr "Ανακοίνωση αυτής της δημοσίευσης στους ακόλουθους σας" 333msgstr "Ανακοίνωση αυτής της δημοσίευσης στους ακόλουθους σας"
334 334
335#: html.c:1930 html.c:4783 335#: html.c:2008 html.c:5227
336msgid "Unboost" 336msgid "Unboost"
337msgstr "ΑφαίÏεση ενίσχυσης" 337msgstr "ΑφαίÏεση ενίσχυσης"
338 338
339#: html.c:1930 339#: html.c:2008
340msgid "I regret I boosted this" 340msgid "I regret I boosted this"
341msgstr "Μετάνιωσα που το ενίσχυσα" 341msgstr "Μετάνιωσα που το ενίσχυσα"
342 342
343#: html.c:1936 html.c:4922 343#: html.c:2014 html.c:5366
344msgid "Unbookmark" 344msgid "Unbookmark"
345msgstr "ΑφαίÏεση σελιδοδείκτη" 345msgstr "ΑφαίÏεση σελιδοδείκτη"
346 346
347#: html.c:1936 347#: html.c:2014
348msgid "Delete this post from your bookmarks" 348msgid "Delete this post from your bookmarks"
349msgstr "ΔιαγÏαφή αυτής της δημοσίευσης από τους σελιδοδείκτες σου" 349msgstr "ΔιαγÏαφή αυτής της δημοσίευσης από τους σελιδοδείκτες σου"
350 350
351#: html.c:1939 html.c:4917 351#: html.c:2017 html.c:5361
352msgid "Bookmark" 352msgid "Bookmark"
353msgstr "Εισαγωγή σελιδοδείκτη" 353msgstr "Εισαγωγή σελιδοδείκτη"
354 354
355#: html.c:1939 355#: html.c:2017
356msgid "Add this post to your bookmarks" 356msgid "Add this post to your bookmarks"
357msgstr "ΠÏοσθήκη αυτής της δημοσίευσης στους σελιδοδείκτες σου" 357msgstr "ΠÏοσθήκη αυτής της δημοσίευσης στους σελιδοδείκτες σου"
358 358
359#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 359#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
360msgid "Unfollow" 360msgid "Unfollow"
361msgstr "ΑναίÏεση ακολουθίας" 361msgstr "ΑναίÏεση ακολουθίας"
362 362
363#: html.c:1945 html.c:3387 363#: html.c:2023 html.c:3763 html.c:4042
364msgid "Stop following this user's activity" 364msgid "Stop following this user's activity"
365msgstr "Σταμάτα να ακολουθείς τη δÏαστηÏιότητα Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη" 365msgstr "Σταμάτα να ακολουθείς τη δÏαστηÏιότητα Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη"
366 366
367#: html.c:1949 html.c:3401 367#: html.c:2027 html.c:3777 html.c:4044
368msgid "Start following this user's activity" 368msgid "Start following this user's activity"
369msgstr "Ξεκίνα να ακολουθείς τη δÏαστηÏιότητα Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη" 369msgstr "Ξεκίνα να ακολουθείς τη δÏαστηÏιότητα Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη"
370 370
371#: html.c:1955 html.c:4860 371#: html.c:2033 html.c:5304
372msgid "Unfollow Group" 372msgid "Unfollow Group"
373msgstr "ΑναίÏεση ακολουθίας ομάδας" 373msgstr "ΑναίÏεση ακολουθίας ομάδας"
374 374
375#: html.c:1956 375#: html.c:2034
376msgid "Stop following this group or channel" 376msgid "Stop following this group or channel"
377msgstr "Σταμάτα να ακολουθείς αυτή την ομάδα ή κανάλι" 377msgstr "Σταμάτα να ακολουθείς αυτή την ομάδα ή κανάλι"
378 378
379#: html.c:1960 html.c:4847 379#: html.c:2038 html.c:5291
380msgid "Follow Group" 380msgid "Follow Group"
381msgstr "ΑκολοÏθησε την Ομάδα" 381msgstr "ΑκολοÏθησε την Ομάδα"
382 382
383#: html.c:1961 383#: html.c:2039
384msgid "Start following this group or channel" 384msgid "Start following this group or channel"
385msgstr "Ξεκίνα να ακολουθείς αυτή την ομάδα ή κανάλι" 385msgstr "Ξεκίνα να ακολουθείς αυτή την ομάδα ή κανάλι"
386 386
387#: html.c:1966 html.c:3423 html.c:4791 387#: html.c:2044 html.c:3799 html.c:5235
388msgid "MUTE" 388msgid "MUTE"
389msgstr "ΣΙΓΑΣΗ" 389msgstr "ΣΙΓΑΣΗ"
390 390
391#: html.c:1967 391#: html.c:2045
392msgid "Block any activity from this user forever" 392msgid "Block any activity from this user forever"
393msgstr "Αποκλεισμός οποιασδήποτε δÏαστηÏιότητας από αυτόν τον χÏήστη για πάντα" 393msgstr "Αποκλεισμός οποιασδήποτε δÏαστηÏιότητας από αυτόν τον χÏήστη για πάντα"
394 394
395#: html.c:1972 html.c:3405 html.c:4877 395#: html.c:2050 html.c:3781 html.c:5321
396msgid "Delete" 396msgid "Delete"
397msgstr "ΔιαγÏαφή" 397msgstr "ΔιαγÏαφή"
398 398
399#: html.c:1972 399#: html.c:2050
400msgid "Delete this post" 400msgid "Delete this post"
401msgstr "ΔιαγÏαφή αυτής της δημοσίευσης" 401msgstr "ΔιαγÏαφή αυτής της δημοσίευσης"
402 402
403#: html.c:1975 html.c:4799 403#: html.c:2053 html.c:5243
404msgid "Hide" 404msgid "Hide"
405msgstr "ΑπόκÏυψη" 405msgstr "ΑπόκÏυψη"
406 406
407#: html.c:1975 407#: html.c:2053
408msgid "Hide this post and its children" 408msgid "Hide this post and its children"
409msgstr "ΑπόκÏυψη αυτής της δημοσίευσης και των απαντήσεων της" 409msgstr "ΑπόκÏυψη αυτής της δημοσίευσης και των απαντήσεων της"
410 410
411#: html.c:2017 411#: html.c:2095
412msgid "Edit..." 412msgid "Edit..."
413msgstr "ΕπεξεÏγασία..." 413msgstr "ΕπεξεÏγασία..."
414 414
415#: html.c:2039 415#: html.c:2133
416msgid "Reply..." 416msgid "Reply..."
417msgstr "Απάντηση..." 417msgstr "Απάντηση..."
418 418
419#: html.c:2090 419#: html.c:2184
420msgid "Truncated (too deep)" 420msgid "Truncated (too deep)"
421msgstr "Έγινε πεÏικοπή (Ï€Î¿Î»Ï Î²Î±Î¸Ï)" 421msgstr "Έγινε πεÏικοπή (Ï€Î¿Î»Ï Î²Î±Î¸Ï)"
422 422
423#: html.c:2108 423#: html.c:2202
424msgid "follows you" 424msgid "follows you"
425msgstr "σε ακολουθεί" 425msgstr "σε ακολουθεί"
426 426
427#: html.c:2182 427#: html.c:2276
428msgid "Pinned" 428msgid "Pinned"
429msgstr "ΚαÏφιτσωμένο" 429msgstr "ΚαÏφιτσωμένο"
430 430
431#: html.c:2190 431#: html.c:2284
432msgid "Bookmarked" 432msgid "Bookmarked"
433msgstr "Εισήχθηκε σελιδοδείκτης" 433msgstr "Εισήχθηκε σελιδοδείκτης"
434 434
435#: html.c:2198 435#: html.c:2292
436msgid "Poll" 436msgid "Poll"
437msgstr "Δημοσκόπηση" 437msgstr "Δημοσκόπηση"
438 438
439#: html.c:2205 439#: html.c:2299
440msgid "Voted" 440msgid "Voted"
441msgstr "Ψήφισες" 441msgstr "Ψήφισες"
442 442
443#: html.c:2214 443#: html.c:2308
444msgid "Event" 444msgid "Event"
445msgstr "Εκδήλωση" 445msgstr "Εκδήλωση"
446 446
447#: html.c:2246 html.c:2275 447#: html.c:2340 html.c:2369
448msgid "boosted" 448msgid "boosted"
449msgstr "ενισχÏθηκε" 449msgstr "ενισχÏθηκε"
450 450
451#: html.c:2289 451#: html.c:2383
452msgid "in reply to" 452msgid "in reply to"
453msgstr "σε απάντηση του" 453msgstr "σε απάντηση του"
454 454
455#: html.c:2345 455#: html.c:2439
456msgid " [SENSITIVE CONTENT]" 456msgid " [SENSITIVE CONTENT]"
457msgstr " [ΕΥΑΙΣΘΗΤΟ ΠΕΡΙΕΧΟΜΕÎΟ]" 457msgstr " [ΕΥΑΙΣΘΗΤΟ ΠΕΡΙΕΧΟΜΕÎΟ]"
458 458
459#: html.c:2512 459#: html.c:2796
460msgid "Vote" 460msgid "Vote"
461msgstr "Ψήφισε" 461msgstr "Ψήφισε"
462 462
463#: html.c:2522 463#: html.c:2806
464msgid "Closed" 464msgid "Closed"
465msgstr "Έκλεισε" 465msgstr "Έκλεισε"
466 466
467#: html.c:2547 467#: html.c:2831
468msgid "Closes in" 468msgid "Closes in"
469msgstr "Κλείνει σε" 469msgstr "Κλείνει σε"
470 470
471#: html.c:2627 471#: html.c:2911
472msgid "Video" 472msgid "Video"
473msgstr "Βίντεο" 473msgstr "Βίντεο"
474 474
475#: html.c:2642 475#: html.c:2926
476msgid "Audio" 476msgid "Audio"
477msgstr "Ήχος" 477msgstr "Ήχος"
478 478
479#: html.c:2670 479#: html.c:2954
480msgid "Attachment" 480msgid "Attachment"
481msgstr "ΕπισÏναψη" 481msgstr "ΕπισÏναψη"
482 482
483#: html.c:2684 483#: html.c:2968
484msgid "Alt..." 484msgid "Alt..."
485msgstr "Εναλλακτικό κείμενο..." 485msgstr "Εναλλακτικό κείμενο..."
486 486
487#: html.c:2697 487#: html.c:2981
488msgid "Source channel or community" 488msgid "Source channel or community"
489msgstr "Πηγή κανάλι ή κοινότητα" 489msgstr "Πηγή κανάλι ή κοινότητα"
490 490
491#: html.c:2791 491#: html.c:3075
492msgid "Time: " 492msgid "Time: "
493msgstr "ÎÏα: " 493msgstr "ÎÏα: "
494 494
495#: html.c:2872 495#: html.c:3156
496msgid "Older..." 496msgid "Older..."
497msgstr "ΠαλαιότεÏα..." 497msgstr "ΠαλαιότεÏα..."
498 498
499#: html.c:2974 499#: html.c:3258
500msgid "about this site" 500msgid "about this site"
501msgstr "σχετικά με αυτό τον ιστότοπο" 501msgstr "σχετικά με αυτό τον ιστότοπο"
502 502
503#: html.c:2976 503#: html.c:3260
504msgid "powered by " 504msgid "powered by "
505msgstr "λειτουÏγεί με " 505msgstr "λειτουÏγεί με "
506 506
507#: html.c:3041 507#: html.c:3329
508msgid "Dismiss" 508msgid "Dismiss"
509msgstr "ΑπόÏÏιψη" 509msgstr "ΑπόÏÏιψη"
510 510
511#: html.c:3058 511#: html.c:3346
512#, c-format 512#, c-format
513msgid "Timeline for list '%s'" 513msgid "Timeline for list '%s'"
514msgstr "Ροή για λίστα '%s'" 514msgstr "Ροή για λίστα '%s'"
515 515
516#: html.c:3077 html.c:4169 516#: html.c:3365 html.c:4589
517msgid "Pinned posts" 517msgid "Pinned posts"
518msgstr "ΚαÏφιτσωμένες δημοσιεÏσεις" 518msgstr "ΚαÏφιτσωμένες δημοσιεÏσεις"
519 519
520#: html.c:3089 html.c:4184 520#: html.c:3377 html.c:4604
521msgid "Bookmarked posts" 521msgid "Bookmarked posts"
522msgstr "Σελιδοδείκτες" 522msgstr "Σελιδοδείκτες"
523 523
524#: html.c:3101 html.c:4199 524#: html.c:3389 html.c:4619
525msgid "Post drafts" 525msgid "Post drafts"
526msgstr "ΠÏοσχέδια δημοσιεÏσεων" 526msgstr "ΠÏοσχέδια δημοσιεÏσεων"
527 527
528#: html.c:3177 528#: html.c:3465
529msgid "No more unseen posts" 529msgid "No more unseen posts"
530msgstr "Δεν υπάÏχουν άλλες αδιάβαστες δημοσιεÏσεις" 530msgstr "Δεν υπάÏχουν άλλες αδιάβαστες δημοσιεÏσεις"
531 531
532#: html.c:3181 html.c:3290 532#: html.c:3469 html.c:3578
533msgid "Back to top" 533msgid "Back to top"
534msgstr "Πίσω στη κοÏυφή" 534msgstr "Πίσω στη κοÏυφή"
535 535
536#: html.c:3243 536#: html.c:3531
537msgid "History" 537msgid "History"
538msgstr "ΙστοÏικό" 538msgstr "ΙστοÏικό"
539 539
540#: html.c:3295 html.c:3734 540#: html.c:3583 html.c:4149
541msgid "More..." 541msgid "More..."
542msgstr "ΠεÏισσότεÏα..." 542msgstr "ΠεÏισσότεÏα..."
543 543
544#: html.c:3391 html.c:4813 544#: html.c:3767 html.c:5257
545msgid "Unlimit" 545msgid "Unlimit"
546msgstr "ΑφαίÏεση πεÏιοÏισμοÏ" 546msgstr "ΑφαίÏεση πεÏιοÏισμοÏ"
547 547
548#: html.c:3392 548#: html.c:3768
549msgid "Allow announces (boosts) from this user" 549msgid "Allow announces (boosts) from this user"
550msgstr "ΕπέτÏεψε ανακοινώσεις (ενισχÏσεις) από αυτό το χÏήστη" 550msgstr "ΕπέτÏεψε ανακοινώσεις (ενισχÏσεις) από αυτό το χÏήστη"
551 551
552#: html.c:3395 html.c:4809 552#: html.c:3771 html.c:5253
553msgid "Limit" 553msgid "Limit"
554msgstr "ΠεÏιοÏισμός" 554msgstr "ΠεÏιοÏισμός"
555 555
556#: html.c:3396 556#: html.c:3772
557msgid "Block announces (boosts) from this user" 557msgid "Block announces (boosts) from this user"
558msgstr "Απέκλεισε ανακοινώσεις (ενισχÏσεις) από αυτό το χÏήστη" 558msgstr "Απέκλεισε ανακοινώσεις (ενισχÏσεις) από αυτό το χÏήστη"
559 559
560#: html.c:3405 560#: html.c:3781
561msgid "Delete this user" 561msgid "Delete this user"
562msgstr "ΔιαγÏαφή Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη" 562msgstr "ΔιαγÏαφή Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη"
563 563
564#: html.c:3410 html.c:4927 564#: html.c:3786 html.c:5371
565msgid "Approve" 565msgid "Approve"
566msgstr "ΈγκÏιση" 566msgstr "ΈγκÏιση"
567 567
568#: html.c:3411 568#: html.c:3787
569msgid "Approve this follow request" 569msgid "Approve this follow request"
570msgstr "ΈγκÏιση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αιτήματος ακόλουθου" 570msgstr "ΈγκÏιση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αιτήματος ακόλουθου"
571 571
572#: html.c:3414 html.c:4951 572#: html.c:3790 html.c:5395
573msgid "Discard" 573msgid "Discard"
574msgstr "ΑπόÏÏιψη" 574msgstr "ΑπόÏÏιψη"
575 575
576#: html.c:3414 576#: html.c:3790
577msgid "Discard this follow request" 577msgid "Discard this follow request"
578msgstr "ΑπόÏÏιψη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αιτήματος ακόλουθου" 578msgstr "ΑπόÏÏιψη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αιτήματος ακόλουθου"
579 579
580#: html.c:3419 html.c:4795 580#: html.c:3795 html.c:5239
581msgid "Unmute" 581msgid "Unmute"
582msgstr "ΑφαίÏεση σίγασης" 582msgstr "ΑφαίÏεση σίγασης"
583 583
584#: html.c:3420 584#: html.c:3796
585msgid "Stop blocking activities from this user" 585msgid "Stop blocking activities from this user"
586msgstr "Διακοπή Î±Ï€Î¿ÎºÎ»ÎµÎ¹ÏƒÎ¼Î¿Ï Î´ÏαστηÏιοτήτων από αυτό το χÏήστη" 586msgstr "Διακοπή Î±Ï€Î¿ÎºÎ»ÎµÎ¹ÏƒÎ¼Î¿Ï Î´ÏαστηÏιοτήτων από αυτό το χÏήστη"
587 587
588#: html.c:3424 588#: html.c:3800
589msgid "Block any activity from this user" 589msgid "Block any activity from this user"
590msgstr "Αποκλεισμός οποιασδήποτε δÏαστηÏιότητας από αυτό τον χÏήστη" 590msgstr "Αποκλεισμός οποιασδήποτε δÏαστηÏιότητας από αυτό τον χÏήστη"
591 591
592#: html.c:3432 592#: html.c:3808
593msgid "Direct Message..." 593msgid "Direct Message..."
594msgstr "Απευθείας Μήνυμα..." 594msgstr "Απευθείας Μήνυμα..."
595 595
596#: html.c:3467 596#: html.c:3843
597msgid "Pending follow confirmations" 597msgid "Pending follow confirmations"
598msgstr "Εκκεμείς επιβεβαιώσεις ακολουθήσεων" 598msgstr "Εκκεμείς επιβεβαιώσεις ακολουθήσεων"
599 599
600#: html.c:3471 600#: html.c:3847
601msgid "People you follow" 601msgid "People you follow"
602msgstr "ΆνθÏωποι που ακολουθείτε" 602msgstr "ΆνθÏωποι που ακολουθείτε"
603 603
604#: html.c:3472 604#: html.c:3848
605msgid "People that follow you" 605msgid "People that follow you"
606msgstr "ΆνθÏωποι που σας ακολουθοÏν" 606msgstr "ΆνθÏωποι που σας ακολουθοÏν"
607 607
608#: html.c:3511 608#: html.c:3887
609msgid "Clear all" 609msgid "Clear all"
610msgstr "ΕκκαθάÏιση όλων" 610msgstr "ΕκκαθάÏιση όλων"
611 611
612#: html.c:3571 612#: html.c:3951
613msgid "Mention" 613msgid "Mention"
614msgstr "ΑναφοÏά" 614msgstr "ΑναφοÏά"
615 615
616#: html.c:3574 616#: html.c:3954
617msgid "Finished poll" 617msgid "Finished poll"
618msgstr "ΟλοκληÏωμένη δημοσκόπηση" 618msgstr "ΟλοκληÏωμένη δημοσκόπηση"
619 619
620#: html.c:3590 620#: html.c:3979
621msgid "Follow Request" 621msgid "Follow Request"
622msgstr "Αίτημα Ακόλουθου" 622msgstr "Αίτημα Ακόλουθου"
623 623
624#: html.c:3674 624#: html.c:4089
625msgid "Context" 625msgid "Context"
626msgstr "ΠεÏιεχόμενο" 626msgstr "ΠεÏιεχόμενο"
627 627
628#: html.c:3692 628#: html.c:4107
629msgid "New" 629msgid "New"
630msgstr "Îέο" 630msgstr "Îέο"
631 631
632#: html.c:3707 632#: html.c:4122
633msgid "Already seen" 633msgid "Already seen"
634msgstr "Έχει ήδη Ï€Ïοβληθεί" 634msgstr "Έχει ήδη Ï€Ïοβληθεί"
635 635
636#: html.c:3722 636#: html.c:4137
637msgid "None" 637msgid "None"
638msgstr "Κανένα" 638msgstr "Κανένα"
639 639
640#: html.c:3994 640#: html.c:4414
641#, c-format 641#, c-format
642msgid "Search results for account %s" 642msgid "Search results for account %s"
643msgstr "Αποτελέσματα αναζήτηση για λογαÏιασμό %s" 643msgstr "Αποτελέσματα αναζήτηση για λογαÏιασμό %s"
644 644
645#: html.c:4001 645#: html.c:4421
646#, c-format 646#, c-format
647msgid "Account %s not found" 647msgid "Account %s not found"
648msgstr "Ο λογαÏιασμός %s δεν βÏέθηκε" 648msgstr "Ο λογαÏιασμός %s δεν βÏέθηκε"
649 649
650#: html.c:4032 650#: html.c:4452
651#, c-format 651#, c-format
652msgid "Search results for tag %s" 652msgid "Search results for tag %s"
653msgstr "Αποτελέσματα αναζήτησης για ετικέτα %s" 653msgstr "Αποτελέσματα αναζήτησης για ετικέτα %s"
654 654
655#: html.c:4032 655#: html.c:4452
656#, c-format 656#, c-format
657msgid "Nothing found for tag %s" 657msgid "Nothing found for tag %s"
658msgstr "Δε βÏέθηκε κάτι για ετικέτα %s" 658msgstr "Δε βÏέθηκε κάτι για ετικέτα %s"
659 659
660#: html.c:4048 660#: html.c:4468
661#, c-format 661#, c-format
662msgid "Search results for '%s' (may be more)" 662msgid "Search results for '%s' (may be more)"
663msgstr "Αποτελέσματα αναζήτησης για '%s' (μποÏεί να υπάÏχουν πεÏισσότεÏα)" 663msgstr "Αποτελέσματα αναζήτησης για '%s' (μποÏεί να υπάÏχουν πεÏισσότεÏα)"
664 664
665#: html.c:4051 665#: html.c:4471
666#, c-format 666#, c-format
667msgid "Search results for '%s'" 667msgid "Search results for '%s'"
668msgstr "Αποτελέσματα αναζήτησης για '%s'" 668msgstr "Αποτελέσματα αναζήτησης για '%s'"
669 669
670#: html.c:4054 670#: html.c:4474
671#, c-format 671#, c-format
672msgid "No more matches for '%s'" 672msgid "No more matches for '%s'"
673msgstr "Δεν υπάÏχουν άλλα αποτελέσματα για '%s'" 673msgstr "Δεν υπάÏχουν άλλα αποτελέσματα για '%s'"
674 674
675#: html.c:4056 675#: html.c:4476
676#, c-format 676#, c-format
677msgid "Nothing found for '%s'" 677msgid "Nothing found for '%s'"
678msgstr "Δε βÏέθηκε κάτι για '%s'" 678msgstr "Δε βÏέθηκε κάτι για '%s'"
679 679
680#: html.c:4154 680#: html.c:4574
681msgid "Showing instance timeline" 681msgid "Showing instance timeline"
682msgstr "ΠÏοβάλλεται η Ïοή του διακομιστή" 682msgstr "ΠÏοβάλλεται η Ïοή του διακομιστή"
683 683
684#: html.c:4237 684#: html.c:4657
685#, c-format 685#, c-format
686msgid "Showing timeline for list '%s'" 686msgid "Showing timeline for list '%s'"
687msgstr "ΠÏοβάλετε η Ïοή της λίστας '%s'" 687msgstr "ΠÏοβάλετε η Ïοή της λίστας '%s'"
688 688
689#: httpd.c:258 689#: httpd.c:259
690#, c-format 690#, c-format
691msgid "Search results for tag #%s" 691msgid "Search results for tag #%s"
692msgstr "Αποτελέσματα αναζήτησης για ετικέτα #%s" 692msgstr "Αποτελέσματα αναζήτησης για ετικέτα #%s"
693 693
694#: httpd.c:267 694#: httpd.c:268
695msgid "Recent posts by users in this instance" 695msgid "Recent posts by users in this instance"
696msgstr "ΠÏόσφατες αναÏτήσεις από χÏήστες σε αυτό τον ιστότοπο" 696msgstr "ΠÏόσφατες αναÏτήσεις από χÏήστες σε αυτό τον ιστότοπο"
697 697
698#: html.c:1764 698#: html.c:1842
699msgid "Blocked hashtags..." 699msgid "Blocked hashtags..."
700msgstr "Αποκλεισμένες ετικέτες..." 700msgstr "Αποκλεισμένες ετικέτες..."
701 701
702#: html.c:518 702#: html.c:574
703msgid "Optional URL to reply to" 703msgid "Optional URL to reply to"
704msgstr "" 704msgstr ""
705 705
706#: html.c:695 706#: html.c:751
707msgid "" 707msgid ""
708"Option 1...\n" 708"Option 1...\n"
709"Option 2...\n" 709"Option 2...\n"
@@ -711,94 +711,106 @@ msgid ""
711"..." 711"..."
712msgstr "" 712msgstr ""
713 713
714#: html.c:1558 714#: html.c:1636
715msgid "Bot API key" 715msgid "Bot API key"
716msgstr "" 716msgstr ""
717 717
718#: html.c:1564 718#: html.c:1642
719msgid "Chat id" 719msgid "Chat id"
720msgstr "" 720msgstr ""
721 721
722#: html.c:1572 722#: html.c:1650
723msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 723msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
724msgstr "" 724msgstr ""
725 725
726#: html.c:1578 726#: html.c:1656
727msgid "ntfy token - if needed" 727msgid "ntfy token - if needed"
728msgstr "" 728msgstr ""
729 729
730#: html.c:3078 730#: html.c:3366
731msgid "pinned" 731msgid "pinned"
732msgstr "" 732msgstr ""
733 733
734#: html.c:3090 734#: html.c:3378
735msgid "bookmarks" 735msgid "bookmarks"
736msgstr "" 736msgstr ""
737 737
738#: html.c:3102 738#: html.c:3390
739msgid "drafts" 739msgid "drafts"
740msgstr "" 740msgstr ""
741 741
742#: html.c:584 742#: html.c:640
743msgid "Scheduled post..." 743msgid "Scheduled post..."
744msgstr "" 744msgstr ""
745 745
746msgid "Post date and time:" 746msgid "Post date and time:"
747msgstr "" 747msgstr ""
748 748
749#: html.c:3113 html.c:4214 749#: html.c:3401 html.c:4634
750msgid "Scheduled posts" 750msgid "Scheduled posts"
751msgstr "" 751msgstr ""
752 752
753#: html.c:3114 753#: html.c:3402
754msgid "scheduled posts" 754msgid "scheduled posts"
755msgstr "" 755msgstr ""
756 756
757#: html.c:578 757#: html.c:634
758#, c-format 758#, c-format
759msgid "Post date and time (timezone: %s):" 759msgid "Post date and time (timezone: %s):"
760msgstr "" 760msgstr ""
761 761
762#: html.c:1689 762#: html.c:1767
763msgid "Time zone:" 763msgid "Time zone:"
764msgstr "" 764msgstr ""
765 765
766#: html.c:559 766#: html.c:615
767msgid "Language:" 767msgid "Language:"
768msgstr "" 768msgstr ""
769 769
770#: html.c:1580 770#: html.c:1658
771msgid "Notify webhook:" 771msgid "Notify webhook:"
772msgstr "" 772msgstr ""
773 773
774#: html.c:1586 774#: html.c:1664
775msgid "http://example.com/webhook" 775msgid "http://example.com/webhook"
776msgstr "" 776msgstr ""
777 777
778#: html.c:1694 778#: html.c:1772
779msgid "Languages you usually post in:" 779msgid "Languages you usually post in:"
780msgstr "" 780msgstr ""
781 781
782#: html.c:1700 782#: html.c:1778
783msgid "en fr es de_AT" 783msgid "en fr es de_AT"
784msgstr "" 784msgstr ""
785 785
786#: html.c:460 786#: html.c:428
787msgid "Visibility: " 787msgid "Visibility: "
788msgstr "" 788msgstr ""
789 789
790#: html.c:468
791msgid "Public" 790msgid "Public"
792msgstr "" 791msgstr ""
793 792
794#: html.c:477
795msgid "Unlisted" 793msgid "Unlisted"
796msgstr "" 794msgstr ""
797 795
798#: html.c:486
799msgid "Followers-only" 796msgid "Followers-only"
800msgstr "" 797msgstr ""
801 798
802#: html.c:495
803msgid "Direct Message" 799msgid "Direct Message"
804msgstr "" 800msgstr ""
801
802#: html.c:488 html.c:2534 html.c:2559 html.c:5177
803msgid "EmojiUnreact"
804msgstr ""
805
806#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
807msgid "EmojiReact"
808msgstr ""
809
810#: html.c:2115
811msgid "Emoji react..."
812msgstr ""
813
814#: html.c:2609
815msgid "Emoji reactions: "
816msgstr ""
diff --git a/po/en.po b/po/en.po
index d18f979..0f8abe1 100644
--- a/po/en.po
+++ b/po/en.po
@@ -8,692 +8,692 @@ msgstr ""
8"Language: en\n" 8"Language: en\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "" 13msgstr ""
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "" 17msgstr ""
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "" 20msgstr ""
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "" 24msgstr ""
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "" 28msgstr ""
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "" 32msgstr ""
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "" 36msgstr ""
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "" 40msgstr ""
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "" 44msgstr ""
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "" 48msgstr ""
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "" 52msgstr ""
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "" 56msgstr ""
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "" 60msgstr ""
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "" 64msgstr ""
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "" 68msgstr ""
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "" 72msgstr ""
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "" 76msgstr ""
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "" 80msgstr ""
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "" 84msgstr ""
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "" 88msgstr ""
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "" 92msgstr ""
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "" 97msgstr ""
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "" 101msgstr ""
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "" 105msgstr ""
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "" 109msgstr ""
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "" 113msgstr ""
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "" 117msgstr ""
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "" 121msgstr ""
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
127msgstr "" 127msgstr ""
128 128
129#: html.c:1087 129#: html.c:1143
130msgid "Content search" 130msgid "Content search"
131msgstr "" 131msgstr ""
132 132
133#: html.c:1213 133#: html.c:1269
134msgid "verified link" 134msgid "verified link"
135msgstr "" 135msgstr ""
136 136
137#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 137#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
138msgid "Location: " 138msgid "Location: "
139msgstr "" 139msgstr ""
140 140
141#: html.c:1302 141#: html.c:1358
142msgid "New Post..." 142msgid "New Post..."
143msgstr "" 143msgstr ""
144 144
145#: html.c:1304 145#: html.c:1360
146msgid "What's on your mind?" 146msgid "What's on your mind?"
147msgstr "" 147msgstr ""
148 148
149#: html.c:1313 149#: html.c:1369
150msgid "Operations..." 150msgid "Operations..."
151msgstr "" 151msgstr ""
152 152
153#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 153#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
154msgid "Follow" 154msgid "Follow"
155msgstr "" 155msgstr ""
156 156
157#: html.c:1330 157#: html.c:1386
158msgid "(by URL or user@host)" 158msgid "(by URL or user@host)"
159msgstr "" 159msgstr ""
160 160
161#: html.c:1345 html.c:1925 html.c:4766 161#: html.c:1401 html.c:2003 html.c:5210
162msgid "Boost" 162msgid "Boost"
163msgstr "" 163msgstr ""
164 164
165#: html.c:1347 html.c:1364 165#: html.c:1403 html.c:1420 html.c:1442
166msgid "(by URL)" 166msgid "(by URL)"
167msgstr "" 167msgstr ""
168 168
169#: html.c:1362 html.c:1904 html.c:4757 169#: html.c:1418 html.c:1982 html.c:5201
170msgid "Like" 170msgid "Like"
171msgstr "" 171msgstr ""
172 172
173#: html.c:1490 173#: html.c:1568
174msgid "User Settings..." 174msgid "User Settings..."
175msgstr "" 175msgstr ""
176 176
177#: html.c:1499 177#: html.c:1577
178msgid "Display name:" 178msgid "Display name:"
179msgstr "" 179msgstr ""
180 180
181#: html.c:1505 181#: html.c:1583
182msgid "Your name" 182msgid "Your name"
183msgstr "" 183msgstr ""
184 184
185#: html.c:1507 185#: html.c:1585
186msgid "Avatar: " 186msgid "Avatar: "
187msgstr "" 187msgstr ""
188 188
189#: html.c:1515 189#: html.c:1593
190msgid "Delete current avatar" 190msgid "Delete current avatar"
191msgstr "" 191msgstr ""
192 192
193#: html.c:1517 193#: html.c:1595
194msgid "Header image (banner): " 194msgid "Header image (banner): "
195msgstr "" 195msgstr ""
196 196
197#: html.c:1525 197#: html.c:1603
198msgid "Delete current header image" 198msgid "Delete current header image"
199msgstr "" 199msgstr ""
200 200
201#: html.c:1527 201#: html.c:1605
202msgid "Bio:" 202msgid "Bio:"
203msgstr "" 203msgstr ""
204 204
205#: html.c:1533 205#: html.c:1611
206msgid "Write about yourself here..." 206msgid "Write about yourself here..."
207msgstr "" 207msgstr ""
208 208
209#: html.c:1542 209#: html.c:1620
210msgid "Always show sensitive content" 210msgid "Always show sensitive content"
211msgstr "" 211msgstr ""
212 212
213#: html.c:1544 213#: html.c:1622
214msgid "Email address for notifications:" 214msgid "Email address for notifications:"
215msgstr "" 215msgstr ""
216 216
217#: html.c:1552 217#: html.c:1630
218msgid "Telegram notifications (bot key and chat id):" 218msgid "Telegram notifications (bot key and chat id):"
219msgstr "" 219msgstr ""
220 220
221#: html.c:1566 221#: html.c:1644
222msgid "ntfy notifications (ntfy server and token):" 222msgid "ntfy notifications (ntfy server and token):"
223msgstr "" 223msgstr ""
224 224
225#: html.c:1588 225#: html.c:1666
226msgid "Maximum days to keep posts (0: server settings):" 226msgid "Maximum days to keep posts (0: server settings):"
227msgstr "" 227msgstr ""
228 228
229#: html.c:1602 229#: html.c:1680
230msgid "Drop direct messages from people you don't follow" 230msgid "Drop direct messages from people you don't follow"
231msgstr "" 231msgstr ""
232 232
233#: html.c:1611 233#: html.c:1689
234msgid "This account is a bot" 234msgid "This account is a bot"
235msgstr "" 235msgstr ""
236 236
237#: html.c:1620 237#: html.c:1698
238msgid "Auto-boost all mentions to this account" 238msgid "Auto-boost all mentions to this account"
239msgstr "" 239msgstr ""
240 240
241#: html.c:1629 241#: html.c:1707
242msgid "This account is private (posts are not shown through the web)" 242msgid "This account is private (posts are not shown through the web)"
243msgstr "" 243msgstr ""
244 244
245#: html.c:1639 245#: html.c:1717
246msgid "Collapse top threads by default" 246msgid "Collapse top threads by default"
247msgstr "" 247msgstr ""
248 248
249#: html.c:1648 249#: html.c:1726
250msgid "Follow requests must be approved" 250msgid "Follow requests must be approved"
251msgstr "" 251msgstr ""
252 252
253#: html.c:1657 253#: html.c:1735
254msgid "Publish follower and following metrics" 254msgid "Publish follower and following metrics"
255msgstr "" 255msgstr ""
256 256
257#: html.c:1659 257#: html.c:1737
258msgid "Current location:" 258msgid "Current location:"
259msgstr "" 259msgstr ""
260 260
261#: html.c:1673 261#: html.c:1751
262msgid "Profile metadata (key=value pairs in each line):" 262msgid "Profile metadata (key=value pairs in each line):"
263msgstr "" 263msgstr ""
264 264
265#: html.c:1684 265#: html.c:1762
266msgid "Web interface language:" 266msgid "Web interface language:"
267msgstr "" 267msgstr ""
268 268
269#: html.c:1703 269#: html.c:1781
270msgid "New password:" 270msgid "New password:"
271msgstr "" 271msgstr ""
272 272
273#: html.c:1710 273#: html.c:1788
274msgid "Repeat new password:" 274msgid "Repeat new password:"
275msgstr "" 275msgstr ""
276 276
277#: html.c:1720 277#: html.c:1798
278msgid "Update user info" 278msgid "Update user info"
279msgstr "" 279msgstr ""
280 280
281#: html.c:1731 281#: html.c:1809
282msgid "Followed hashtags..." 282msgid "Followed hashtags..."
283msgstr "" 283msgstr ""
284 284
285#: html.c:1733 html.c:1766 285#: html.c:1811 html.c:1844
286msgid "One hashtag per line" 286msgid "One hashtag per line"
287msgstr "" 287msgstr ""
288 288
289#: html.c:1755 html.c:1787 289#: html.c:1833 html.c:1865
290msgid "Update hashtags" 290msgid "Update hashtags"
291msgstr "" 291msgstr ""
292 292
293#: html.c:1904 293#: html.c:1982
294msgid "Say you like this post" 294msgid "Say you like this post"
295msgstr "" 295msgstr ""
296 296
297#: html.c:1909 html.c:4775 297#: html.c:1987 html.c:5219
298msgid "Unlike" 298msgid "Unlike"
299msgstr "" 299msgstr ""
300 300
301#: html.c:1909 301#: html.c:1987
302msgid "Nah don't like it that much" 302msgid "Nah don't like it that much"
303msgstr "" 303msgstr ""
304 304
305#: html.c:1915 html.c:4912 305#: html.c:1993 html.c:5356
306msgid "Unpin" 306msgid "Unpin"
307msgstr "" 307msgstr ""
308 308
309#: html.c:1915 309#: html.c:1993
310msgid "Unpin this post from your timeline" 310msgid "Unpin this post from your timeline"
311msgstr "" 311msgstr ""
312 312
313#: html.c:1918 html.c:4907 313#: html.c:1996 html.c:5351
314msgid "Pin" 314msgid "Pin"
315msgstr "" 315msgstr ""
316 316
317#: html.c:1918 317#: html.c:1996
318msgid "Pin this post to the top of your timeline" 318msgid "Pin this post to the top of your timeline"
319msgstr "" 319msgstr ""
320 320
321#: html.c:1925 321#: html.c:2003
322msgid "Announce this post to your followers" 322msgid "Announce this post to your followers"
323msgstr "" 323msgstr ""
324 324
325#: html.c:1930 html.c:4783 325#: html.c:2008 html.c:5227
326msgid "Unboost" 326msgid "Unboost"
327msgstr "" 327msgstr ""
328 328
329#: html.c:1930 329#: html.c:2008
330msgid "I regret I boosted this" 330msgid "I regret I boosted this"
331msgstr "" 331msgstr ""
332 332
333#: html.c:1936 html.c:4922 333#: html.c:2014 html.c:5366
334msgid "Unbookmark" 334msgid "Unbookmark"
335msgstr "" 335msgstr ""
336 336
337#: html.c:1936 337#: html.c:2014
338msgid "Delete this post from your bookmarks" 338msgid "Delete this post from your bookmarks"
339msgstr "" 339msgstr ""
340 340
341#: html.c:1939 html.c:4917 341#: html.c:2017 html.c:5361
342msgid "Bookmark" 342msgid "Bookmark"
343msgstr "" 343msgstr ""
344 344
345#: html.c:1939 345#: html.c:2017
346msgid "Add this post to your bookmarks" 346msgid "Add this post to your bookmarks"
347msgstr "" 347msgstr ""
348 348
349#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 349#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
350msgid "Unfollow" 350msgid "Unfollow"
351msgstr "" 351msgstr ""
352 352
353#: html.c:1945 html.c:3387 353#: html.c:2023 html.c:3763 html.c:4042
354msgid "Stop following this user's activity" 354msgid "Stop following this user's activity"
355msgstr "" 355msgstr ""
356 356
357#: html.c:1949 html.c:3401 357#: html.c:2027 html.c:3777 html.c:4044
358msgid "Start following this user's activity" 358msgid "Start following this user's activity"
359msgstr "" 359msgstr ""
360 360
361#: html.c:1955 html.c:4860 361#: html.c:2033 html.c:5304
362msgid "Unfollow Group" 362msgid "Unfollow Group"
363msgstr "" 363msgstr ""
364 364
365#: html.c:1956 365#: html.c:2034
366msgid "Stop following this group or channel" 366msgid "Stop following this group or channel"
367msgstr "" 367msgstr ""
368 368
369#: html.c:1960 html.c:4847 369#: html.c:2038 html.c:5291
370msgid "Follow Group" 370msgid "Follow Group"
371msgstr "" 371msgstr ""
372 372
373#: html.c:1961 373#: html.c:2039
374msgid "Start following this group or channel" 374msgid "Start following this group or channel"
375msgstr "" 375msgstr ""
376 376
377#: html.c:1966 html.c:3423 html.c:4791 377#: html.c:2044 html.c:3799 html.c:5235
378msgid "MUTE" 378msgid "MUTE"
379msgstr "" 379msgstr ""
380 380
381#: html.c:1967 381#: html.c:2045
382msgid "Block any activity from this user forever" 382msgid "Block any activity from this user forever"
383msgstr "" 383msgstr ""
384 384
385#: html.c:1972 html.c:3405 html.c:4877 385#: html.c:2050 html.c:3781 html.c:5321
386msgid "Delete" 386msgid "Delete"
387msgstr "" 387msgstr ""
388 388
389#: html.c:1972 389#: html.c:2050
390msgid "Delete this post" 390msgid "Delete this post"
391msgstr "" 391msgstr ""
392 392
393#: html.c:1975 html.c:4799 393#: html.c:2053 html.c:5243
394msgid "Hide" 394msgid "Hide"
395msgstr "" 395msgstr ""
396 396
397#: html.c:1975 397#: html.c:2053
398msgid "Hide this post and its children" 398msgid "Hide this post and its children"
399msgstr "" 399msgstr ""
400 400
401#: html.c:2017 401#: html.c:2095
402msgid "Edit..." 402msgid "Edit..."
403msgstr "" 403msgstr ""
404 404
405#: html.c:2039 405#: html.c:2133
406msgid "Reply..." 406msgid "Reply..."
407msgstr "" 407msgstr ""
408 408
409#: html.c:2090 409#: html.c:2184
410msgid "Truncated (too deep)" 410msgid "Truncated (too deep)"
411msgstr "" 411msgstr ""
412 412
413#: html.c:2108 413#: html.c:2202
414msgid "follows you" 414msgid "follows you"
415msgstr "" 415msgstr ""
416 416
417#: html.c:2182 417#: html.c:2276
418msgid "Pinned" 418msgid "Pinned"
419msgstr "" 419msgstr ""
420 420
421#: html.c:2190 421#: html.c:2284
422msgid "Bookmarked" 422msgid "Bookmarked"
423msgstr "" 423msgstr ""
424 424
425#: html.c:2198 425#: html.c:2292
426msgid "Poll" 426msgid "Poll"
427msgstr "" 427msgstr ""
428 428
429#: html.c:2205 429#: html.c:2299
430msgid "Voted" 430msgid "Voted"
431msgstr "" 431msgstr ""
432 432
433#: html.c:2214 433#: html.c:2308
434msgid "Event" 434msgid "Event"
435msgstr "" 435msgstr ""
436 436
437#: html.c:2246 html.c:2275 437#: html.c:2340 html.c:2369
438msgid "boosted" 438msgid "boosted"
439msgstr "" 439msgstr ""
440 440
441#: html.c:2289 441#: html.c:2383
442msgid "in reply to" 442msgid "in reply to"
443msgstr "" 443msgstr ""
444 444
445#: html.c:2345 445#: html.c:2439
446msgid " [SENSITIVE CONTENT]" 446msgid " [SENSITIVE CONTENT]"
447msgstr "" 447msgstr ""
448 448
449#: html.c:2512 449#: html.c:2796
450msgid "Vote" 450msgid "Vote"
451msgstr "" 451msgstr ""
452 452
453#: html.c:2522 453#: html.c:2806
454msgid "Closed" 454msgid "Closed"
455msgstr "" 455msgstr ""
456 456
457#: html.c:2547 457#: html.c:2831
458msgid "Closes in" 458msgid "Closes in"
459msgstr "" 459msgstr ""
460 460
461#: html.c:2627 461#: html.c:2911
462msgid "Video" 462msgid "Video"
463msgstr "" 463msgstr ""
464 464
465#: html.c:2642 465#: html.c:2926
466msgid "Audio" 466msgid "Audio"
467msgstr "" 467msgstr ""
468 468
469#: html.c:2670 469#: html.c:2954
470msgid "Attachment" 470msgid "Attachment"
471msgstr "" 471msgstr ""
472 472
473#: html.c:2684 473#: html.c:2968
474msgid "Alt..." 474msgid "Alt..."
475msgstr "" 475msgstr ""
476 476
477#: html.c:2697 477#: html.c:2981
478msgid "Source channel or community" 478msgid "Source channel or community"
479msgstr "" 479msgstr ""
480 480
481#: html.c:2791 481#: html.c:3075
482msgid "Time: " 482msgid "Time: "
483msgstr "" 483msgstr ""
484 484
485#: html.c:2872 485#: html.c:3156
486msgid "Older..." 486msgid "Older..."
487msgstr "" 487msgstr ""
488 488
489#: html.c:2974 489#: html.c:3258
490msgid "about this site" 490msgid "about this site"
491msgstr "" 491msgstr ""
492 492
493#: html.c:2976 493#: html.c:3260
494msgid "powered by " 494msgid "powered by "
495msgstr "" 495msgstr ""
496 496
497#: html.c:3041 497#: html.c:3329
498msgid "Dismiss" 498msgid "Dismiss"
499msgstr "" 499msgstr ""
500 500
501#: html.c:3058 501#: html.c:3346
502#, c-format 502#, c-format
503msgid "Timeline for list '%s'" 503msgid "Timeline for list '%s'"
504msgstr "" 504msgstr ""
505 505
506#: html.c:3077 html.c:4169 506#: html.c:3365 html.c:4589
507msgid "Pinned posts" 507msgid "Pinned posts"
508msgstr "" 508msgstr ""
509 509
510#: html.c:3089 html.c:4184 510#: html.c:3377 html.c:4604
511msgid "Bookmarked posts" 511msgid "Bookmarked posts"
512msgstr "" 512msgstr ""
513 513
514#: html.c:3101 html.c:4199 514#: html.c:3389 html.c:4619
515msgid "Post drafts" 515msgid "Post drafts"
516msgstr "" 516msgstr ""
517 517
518#: html.c:3177 518#: html.c:3465
519msgid "No more unseen posts" 519msgid "No more unseen posts"
520msgstr "" 520msgstr ""
521 521
522#: html.c:3181 html.c:3290 522#: html.c:3469 html.c:3578
523msgid "Back to top" 523msgid "Back to top"
524msgstr "" 524msgstr ""
525 525
526#: html.c:3243 526#: html.c:3531
527msgid "History" 527msgid "History"
528msgstr "" 528msgstr ""
529 529
530#: html.c:3295 html.c:3734 530#: html.c:3583 html.c:4149
531msgid "More..." 531msgid "More..."
532msgstr "" 532msgstr ""
533 533
534#: html.c:3391 html.c:4813 534#: html.c:3767 html.c:5257
535msgid "Unlimit" 535msgid "Unlimit"
536msgstr "" 536msgstr ""
537 537
538#: html.c:3392 538#: html.c:3768
539msgid "Allow announces (boosts) from this user" 539msgid "Allow announces (boosts) from this user"
540msgstr "" 540msgstr ""
541 541
542#: html.c:3395 html.c:4809 542#: html.c:3771 html.c:5253
543msgid "Limit" 543msgid "Limit"
544msgstr "" 544msgstr ""
545 545
546#: html.c:3396 546#: html.c:3772
547msgid "Block announces (boosts) from this user" 547msgid "Block announces (boosts) from this user"
548msgstr "" 548msgstr ""
549 549
550#: html.c:3405 550#: html.c:3781
551msgid "Delete this user" 551msgid "Delete this user"
552msgstr "" 552msgstr ""
553 553
554#: html.c:3410 html.c:4927 554#: html.c:3786 html.c:5371
555msgid "Approve" 555msgid "Approve"
556msgstr "" 556msgstr ""
557 557
558#: html.c:3411 558#: html.c:3787
559msgid "Approve this follow request" 559msgid "Approve this follow request"
560msgstr "" 560msgstr ""
561 561
562#: html.c:3414 html.c:4951 562#: html.c:3790 html.c:5395
563msgid "Discard" 563msgid "Discard"
564msgstr "" 564msgstr ""
565 565
566#: html.c:3414 566#: html.c:3790
567msgid "Discard this follow request" 567msgid "Discard this follow request"
568msgstr "" 568msgstr ""
569 569
570#: html.c:3419 html.c:4795 570#: html.c:3795 html.c:5239
571msgid "Unmute" 571msgid "Unmute"
572msgstr "" 572msgstr ""
573 573
574#: html.c:3420 574#: html.c:3796
575msgid "Stop blocking activities from this user" 575msgid "Stop blocking activities from this user"
576msgstr "" 576msgstr ""
577 577
578#: html.c:3424 578#: html.c:3800
579msgid "Block any activity from this user" 579msgid "Block any activity from this user"
580msgstr "" 580msgstr ""
581 581
582#: html.c:3432 582#: html.c:3808
583msgid "Direct Message..." 583msgid "Direct Message..."
584msgstr "" 584msgstr ""
585 585
586#: html.c:3467 586#: html.c:3843
587msgid "Pending follow confirmations" 587msgid "Pending follow confirmations"
588msgstr "" 588msgstr ""
589 589
590#: html.c:3471 590#: html.c:3847
591msgid "People you follow" 591msgid "People you follow"
592msgstr "" 592msgstr ""
593 593
594#: html.c:3472 594#: html.c:3848
595msgid "People that follow you" 595msgid "People that follow you"
596msgstr "" 596msgstr ""
597 597
598#: html.c:3511 598#: html.c:3887
599msgid "Clear all" 599msgid "Clear all"
600msgstr "" 600msgstr ""
601 601
602#: html.c:3571 602#: html.c:3951
603msgid "Mention" 603msgid "Mention"
604msgstr "" 604msgstr ""
605 605
606#: html.c:3574 606#: html.c:3954
607msgid "Finished poll" 607msgid "Finished poll"
608msgstr "" 608msgstr ""
609 609
610#: html.c:3590 610#: html.c:3979
611msgid "Follow Request" 611msgid "Follow Request"
612msgstr "" 612msgstr ""
613 613
614#: html.c:3674 614#: html.c:4089
615msgid "Context" 615msgid "Context"
616msgstr "" 616msgstr ""
617 617
618#: html.c:3692 618#: html.c:4107
619msgid "New" 619msgid "New"
620msgstr "" 620msgstr ""
621 621
622#: html.c:3707 622#: html.c:4122
623msgid "Already seen" 623msgid "Already seen"
624msgstr "" 624msgstr ""
625 625
626#: html.c:3722 626#: html.c:4137
627msgid "None" 627msgid "None"
628msgstr "" 628msgstr ""
629 629
630#: html.c:3994 630#: html.c:4414
631#, c-format 631#, c-format
632msgid "Search results for account %s" 632msgid "Search results for account %s"
633msgstr "" 633msgstr ""
634 634
635#: html.c:4001 635#: html.c:4421
636#, c-format 636#, c-format
637msgid "Account %s not found" 637msgid "Account %s not found"
638msgstr "" 638msgstr ""
639 639
640#: html.c:4032 640#: html.c:4452
641#, c-format 641#, c-format
642msgid "Search results for tag %s" 642msgid "Search results for tag %s"
643msgstr "" 643msgstr ""
644 644
645#: html.c:4032 645#: html.c:4452
646#, c-format 646#, c-format
647msgid "Nothing found for tag %s" 647msgid "Nothing found for tag %s"
648msgstr "" 648msgstr ""
649 649
650#: html.c:4048 650#: html.c:4468
651#, c-format 651#, c-format
652msgid "Search results for '%s' (may be more)" 652msgid "Search results for '%s' (may be more)"
653msgstr "" 653msgstr ""
654 654
655#: html.c:4051 655#: html.c:4471
656#, c-format 656#, c-format
657msgid "Search results for '%s'" 657msgid "Search results for '%s'"
658msgstr "" 658msgstr ""
659 659
660#: html.c:4054 660#: html.c:4474
661#, c-format 661#, c-format
662msgid "No more matches for '%s'" 662msgid "No more matches for '%s'"
663msgstr "" 663msgstr ""
664 664
665#: html.c:4056 665#: html.c:4476
666#, c-format 666#, c-format
667msgid "Nothing found for '%s'" 667msgid "Nothing found for '%s'"
668msgstr "" 668msgstr ""
669 669
670#: html.c:4154 670#: html.c:4574
671msgid "Showing instance timeline" 671msgid "Showing instance timeline"
672msgstr "" 672msgstr ""
673 673
674#: html.c:4237 674#: html.c:4657
675#, c-format 675#, c-format
676msgid "Showing timeline for list '%s'" 676msgid "Showing timeline for list '%s'"
677msgstr "" 677msgstr ""
678 678
679#: httpd.c:258 679#: httpd.c:259
680#, c-format 680#, c-format
681msgid "Search results for tag #%s" 681msgid "Search results for tag #%s"
682msgstr "" 682msgstr ""
683 683
684#: httpd.c:267 684#: httpd.c:268
685msgid "Recent posts by users in this instance" 685msgid "Recent posts by users in this instance"
686msgstr "" 686msgstr ""
687 687
688#: html.c:1764 688#: html.c:1842
689msgid "Blocked hashtags..." 689msgid "Blocked hashtags..."
690msgstr "" 690msgstr ""
691 691
692#: html.c:518 692#: html.c:574
693msgid "Optional URL to reply to" 693msgid "Optional URL to reply to"
694msgstr "" 694msgstr ""
695 695
696#: html.c:695 696#: html.c:751
697msgid "" 697msgid ""
698"Option 1...\n" 698"Option 1...\n"
699"Option 2...\n" 699"Option 2...\n"
@@ -701,94 +701,106 @@ msgid ""
701"..." 701"..."
702msgstr "" 702msgstr ""
703 703
704#: html.c:1558 704#: html.c:1636
705msgid "Bot API key" 705msgid "Bot API key"
706msgstr "" 706msgstr ""
707 707
708#: html.c:1564 708#: html.c:1642
709msgid "Chat id" 709msgid "Chat id"
710msgstr "" 710msgstr ""
711 711
712#: html.c:1572 712#: html.c:1650
713msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 713msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
714msgstr "" 714msgstr ""
715 715
716#: html.c:1578 716#: html.c:1656
717msgid "ntfy token - if needed" 717msgid "ntfy token - if needed"
718msgstr "" 718msgstr ""
719 719
720#: html.c:3078 720#: html.c:3366
721msgid "pinned" 721msgid "pinned"
722msgstr "" 722msgstr ""
723 723
724#: html.c:3090 724#: html.c:3378
725msgid "bookmarks" 725msgid "bookmarks"
726msgstr "" 726msgstr ""
727 727
728#: html.c:3102 728#: html.c:3390
729msgid "drafts" 729msgid "drafts"
730msgstr "" 730msgstr ""
731 731
732#: html.c:584 732#: html.c:640
733msgid "Scheduled post..." 733msgid "Scheduled post..."
734msgstr "" 734msgstr ""
735 735
736msgid "Post date and time:" 736msgid "Post date and time:"
737msgstr "" 737msgstr ""
738 738
739#: html.c:3113 html.c:4214 739#: html.c:3401 html.c:4634
740msgid "Scheduled posts" 740msgid "Scheduled posts"
741msgstr "" 741msgstr ""
742 742
743#: html.c:3114 743#: html.c:3402
744msgid "scheduled posts" 744msgid "scheduled posts"
745msgstr "" 745msgstr ""
746 746
747#: html.c:578 747#: html.c:634
748#, c-format 748#, c-format
749msgid "Post date and time (timezone: %s):" 749msgid "Post date and time (timezone: %s):"
750msgstr "" 750msgstr ""
751 751
752#: html.c:1689 752#: html.c:1767
753msgid "Time zone:" 753msgid "Time zone:"
754msgstr "" 754msgstr ""
755 755
756#: html.c:559 756#: html.c:615
757msgid "Language:" 757msgid "Language:"
758msgstr "" 758msgstr ""
759 759
760#: html.c:1580 760#: html.c:1658
761msgid "Notify webhook:" 761msgid "Notify webhook:"
762msgstr "" 762msgstr ""
763 763
764#: html.c:1586 764#: html.c:1664
765msgid "http://example.com/webhook" 765msgid "http://example.com/webhook"
766msgstr "" 766msgstr ""
767 767
768#: html.c:1694 768#: html.c:1772
769msgid "Languages you usually post in:" 769msgid "Languages you usually post in:"
770msgstr "" 770msgstr ""
771 771
772#: html.c:1700 772#: html.c:1778
773msgid "en fr es de_AT" 773msgid "en fr es de_AT"
774msgstr "" 774msgstr ""
775 775
776#: html.c:460 776#: html.c:428
777msgid "Visibility: " 777msgid "Visibility: "
778msgstr "" 778msgstr ""
779 779
780#: html.c:468
781msgid "Public" 780msgid "Public"
782msgstr "" 781msgstr ""
783 782
784#: html.c:477
785msgid "Unlisted" 783msgid "Unlisted"
786msgstr "" 784msgstr ""
787 785
788#: html.c:486
789msgid "Followers-only" 786msgid "Followers-only"
790msgstr "" 787msgstr ""
791 788
792#: html.c:495
793msgid "Direct Message" 789msgid "Direct Message"
794msgstr "" 790msgstr ""
791
792#: html.c:488 html.c:2534 html.c:2559 html.c:5177
793msgid "EmojiUnreact"
794msgstr ""
795
796#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
797msgid "EmojiReact"
798msgstr ""
799
800#: html.c:2115
801msgid "Emoji react..."
802msgstr ""
803
804#: html.c:2609
805msgid "Emoji reactions: "
806msgstr ""
diff --git a/po/es.po b/po/es.po
index 9086acc..b68bdc8 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: es\n" 8"Language: es\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Contenido sensible: " 13msgstr "Contenido sensible: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Descripción del contenido sensible" 17msgstr "Descripción del contenido sensible"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Solo personas mencionadas: " 20msgstr "Solo personas mencionadas: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Responder a (URL): " 24msgstr "Responder a (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "No enviar. Guardar como borrador" 28msgstr "No enviar. Guardar como borrador"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Borrador:" 32msgstr "Borrador:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Adjuntos..." 36msgstr "Adjuntos..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Archivo:" 40msgstr "Archivo:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Limpiar este campo para eliminar el adjunto" 44msgstr "Limpiar este campo para eliminar el adjunto"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Descripción del adjunto" 48msgstr "Descripción del adjunto"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Encuesta..." 52msgstr "Encuesta..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Opciones de encuesta (una por línea, hasta 8):" 56msgstr "Opciones de encuesta (una por línea, hasta 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Una opción" 60msgstr "Una opción"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Opciones múltiples" 64msgstr "Opciones múltiples"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Finalizar en 5 minutos" 68msgstr "Finalizar en 5 minutos"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Finalizar en 1 hora" 72msgstr "Finalizar en 1 hora"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Finalizar en 1 día" 76msgstr "Finalizar en 1 día"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Publicar" 80msgstr "Publicar"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Descripción del sitio" 84msgstr "Descripción del sitio"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email del Administrador" 88msgstr "Email del Administrador"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Cuenta del Administrador" 92msgstr "Cuenta del Administrador"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d siguiendo, %d seguidores" 97msgstr "%d siguiendo, %d seguidores"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privado" 105msgstr "privado"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "público" 109msgstr "público"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notificaciones" 113msgstr "notificaciones"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "personas" 117msgstr "personas"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instancia" 121msgstr "instancia"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,576 +128,576 @@ msgstr ""
128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta " 128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
129"@usuario@host , ó #etiqueta" 129"@usuario@host , ó #etiqueta"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Buscar contenido" 133msgstr "Buscar contenido"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "link verificado" 137msgstr "link verificado"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Ubicación: " 141msgstr "Ubicación: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nueva Publicación..." 145msgstr "Nueva Publicación..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "¿En qué estás pensando?" 149msgstr "¿En qué estás pensando?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Operaciones..." 153msgstr "Operaciones..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Seguir" 157msgstr "Seguir"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(por URL o usuario@host)" 161msgstr "(por URL o usuario@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Impulsar" 165msgstr "Impulsar"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(por URL)" 169msgstr "(por URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Me gusta" 173msgstr "Me gusta"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Configuración de usuario..." 177msgstr "Configuración de usuario..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Nombre para mostrar:" 181msgstr "Nombre para mostrar:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Su nombre" 185msgstr "Su nombre"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar: " 189msgstr "Avatar: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Eliminar avatar" 193msgstr "Eliminar avatar"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Imagen de cabecera (banner): " 197msgstr "Imagen de cabecera (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Eliminar imagen de cabecera" 201msgstr "Eliminar imagen de cabecera"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Escriba algo sobre usted aquí..." 209msgstr "Escriba algo sobre usted aquí..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Siempre mostrar contenido sensible" 213msgstr "Siempre mostrar contenido sensible"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Cuenta de email para las notificaciones:" 217msgstr "Cuenta de email para las notificaciones:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Notificaciones en Telegram (llave del bot e id del chat):" 221msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "Notificaciones en ntfy (servidor ntfy y token):" 225msgstr "Notificaciones en ntfy (servidor ntfy y token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "" 229msgstr ""
230"Plazo máximo de conservación de publicaciones en días (0: usar configuración " 230"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
231"del servidor):" 231"del servidor):"
232 232
233#: html.c:1602 233#: html.c:1680
234msgid "Drop direct messages from people you don't follow" 234msgid "Drop direct messages from people you don't follow"
235msgstr "Descartar mensajes directos de personas a las que no sigue" 235msgstr "Descartar mensajes directos de personas a las que no sigue"
236 236
237#: html.c:1611 237#: html.c:1689
238msgid "This account is a bot" 238msgid "This account is a bot"
239msgstr "Esta cuenta es un bot" 239msgstr "Esta cuenta es un bot"
240 240
241#: html.c:1620 241#: html.c:1698
242msgid "Auto-boost all mentions to this account" 242msgid "Auto-boost all mentions to this account"
243msgstr "Impulsar automáticamente todas las menciones a esta cuenta" 243msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
244 244
245#: html.c:1629 245#: html.c:1707
246msgid "This account is private (posts are not shown through the web)" 246msgid "This account is private (posts are not shown through the web)"
247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)" 247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
248 248
249#: html.c:1639 249#: html.c:1717
250msgid "Collapse top threads by default" 250msgid "Collapse top threads by default"
251msgstr "Contraer hilo de publicaciones por defecto" 251msgstr "Contraer hilo de publicaciones por defecto"
252 252
253#: html.c:1648 253#: html.c:1726
254msgid "Follow requests must be approved" 254msgid "Follow requests must be approved"
255msgstr "Las solicitudes de seguimiento deben ser aprobadas" 255msgstr "Las solicitudes de seguimiento deben ser aprobadas"
256 256
257#: html.c:1657 257#: html.c:1735
258msgid "Publish follower and following metrics" 258msgid "Publish follower and following metrics"
259msgstr "Mostrar cantidad de seguidores y seguidos" 259msgstr "Mostrar cantidad de seguidores y seguidos"
260 260
261#: html.c:1659 261#: html.c:1737
262msgid "Current location:" 262msgid "Current location:"
263msgstr "Ubicación actual:" 263msgstr "Ubicación actual:"
264 264
265#: html.c:1673 265#: html.c:1751
266msgid "Profile metadata (key=value pairs in each line):" 266msgid "Profile metadata (key=value pairs in each line):"
267msgstr "Metadata del perfil (pares llave=valor en cada línea):" 267msgstr "Metadata del perfil (pares llave=valor en cada línea):"
268 268
269#: html.c:1684 269#: html.c:1762
270msgid "Web interface language:" 270msgid "Web interface language:"
271msgstr "Idioma de la interfaz Web:" 271msgstr "Idioma de la interfaz Web:"
272 272
273#: html.c:1703 273#: html.c:1781
274msgid "New password:" 274msgid "New password:"
275msgstr "Nueva contraseña:" 275msgstr "Nueva contraseña:"
276 276
277#: html.c:1710 277#: html.c:1788
278msgid "Repeat new password:" 278msgid "Repeat new password:"
279msgstr "Repetir nueva contraseña:" 279msgstr "Repetir nueva contraseña:"
280 280
281#: html.c:1720 281#: html.c:1798
282msgid "Update user info" 282msgid "Update user info"
283msgstr "Actualizar información de usuario" 283msgstr "Actualizar información de usuario"
284 284
285#: html.c:1731 285#: html.c:1809
286msgid "Followed hashtags..." 286msgid "Followed hashtags..."
287msgstr "Etiquetas en seguimiento..." 287msgstr "Etiquetas en seguimiento..."
288 288
289#: html.c:1733 html.c:1766 289#: html.c:1811 html.c:1844
290msgid "One hashtag per line" 290msgid "One hashtag per line"
291msgstr "Una etiqueta por línea" 291msgstr "Una etiqueta por línea"
292 292
293#: html.c:1755 html.c:1787 293#: html.c:1833 html.c:1865
294msgid "Update hashtags" 294msgid "Update hashtags"
295msgstr "Actualizar etiquetas" 295msgstr "Actualizar etiquetas"
296 296
297#: html.c:1904 297#: html.c:1982
298msgid "Say you like this post" 298msgid "Say you like this post"
299msgstr "Decir que te gusta esta publicación" 299msgstr "Decir que te gusta esta publicación"
300 300
301#: html.c:1909 html.c:4775 301#: html.c:1987 html.c:5219
302msgid "Unlike" 302msgid "Unlike"
303msgstr "No me gusta" 303msgstr "No me gusta"
304 304
305#: html.c:1909 305#: html.c:1987
306msgid "Nah don't like it that much" 306msgid "Nah don't like it that much"
307msgstr "Nah, no me gusta tanto" 307msgstr "Nah, no me gusta tanto"
308 308
309#: html.c:1915 html.c:4912 309#: html.c:1993 html.c:5356
310msgid "Unpin" 310msgid "Unpin"
311msgstr "Desanclar" 311msgstr "Desanclar"
312 312
313#: html.c:1915 313#: html.c:1993
314msgid "Unpin this post from your timeline" 314msgid "Unpin this post from your timeline"
315msgstr "Desanclar esta publicación de su línea de tiempo" 315msgstr "Desanclar esta publicación de su línea de tiempo"
316 316
317#: html.c:1918 html.c:4907 317#: html.c:1996 html.c:5351
318msgid "Pin" 318msgid "Pin"
319msgstr "Anclar" 319msgstr "Anclar"
320 320
321#: html.c:1918 321#: html.c:1996
322msgid "Pin this post to the top of your timeline" 322msgid "Pin this post to the top of your timeline"
323msgstr "Anclar esta publicación al inicio de su línea de tiempo" 323msgstr "Anclar esta publicación al inicio de su línea de tiempo"
324 324
325#: html.c:1925 325#: html.c:2003
326msgid "Announce this post to your followers" 326msgid "Announce this post to your followers"
327msgstr "Anunciar esta publicación a sus seguidores" 327msgstr "Anunciar esta publicación a sus seguidores"
328 328
329#: html.c:1930 html.c:4783 329#: html.c:2008 html.c:5227
330msgid "Unboost" 330msgid "Unboost"
331msgstr "Eliminar impulso" 331msgstr "Eliminar impulso"
332 332
333#: html.c:1930 333#: html.c:2008
334msgid "I regret I boosted this" 334msgid "I regret I boosted this"
335msgstr "Me arrepiento de haber impulsado esto" 335msgstr "Me arrepiento de haber impulsado esto"
336 336
337#: html.c:1936 html.c:4922 337#: html.c:2014 html.c:5366
338msgid "Unbookmark" 338msgid "Unbookmark"
339msgstr "Eliminar marcador" 339msgstr "Eliminar marcador"
340 340
341#: html.c:1936 341#: html.c:2014
342msgid "Delete this post from your bookmarks" 342msgid "Delete this post from your bookmarks"
343msgstr "Eliminar marcador de esta publicación" 343msgstr "Eliminar marcador de esta publicación"
344 344
345#: html.c:1939 html.c:4917 345#: html.c:2017 html.c:5361
346msgid "Bookmark" 346msgid "Bookmark"
347msgstr "Marcador" 347msgstr "Marcador"
348 348
349#: html.c:1939 349#: html.c:2017
350msgid "Add this post to your bookmarks" 350msgid "Add this post to your bookmarks"
351msgstr "Agregar esta publicación a mis marcadores" 351msgstr "Agregar esta publicación a mis marcadores"
352 352
353#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 353#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
354msgid "Unfollow" 354msgid "Unfollow"
355msgstr "Dejar de seguir" 355msgstr "Dejar de seguir"
356 356
357#: html.c:1945 html.c:3387 357#: html.c:2023 html.c:3763 html.c:4042
358msgid "Stop following this user's activity" 358msgid "Stop following this user's activity"
359msgstr "Dejar de seguir la actividad de este usuario" 359msgstr "Dejar de seguir la actividad de este usuario"
360 360
361#: html.c:1949 html.c:3401 361#: html.c:2027 html.c:3777 html.c:4044
362msgid "Start following this user's activity" 362msgid "Start following this user's activity"
363msgstr "Seguir la actividad de este usuario" 363msgstr "Seguir la actividad de este usuario"
364 364
365#: html.c:1955 html.c:4860 365#: html.c:2033 html.c:5304
366msgid "Unfollow Group" 366msgid "Unfollow Group"
367msgstr "Dejar de seguir este Grupo" 367msgstr "Dejar de seguir este Grupo"
368 368
369#: html.c:1956 369#: html.c:2034
370msgid "Stop following this group or channel" 370msgid "Stop following this group or channel"
371msgstr "Dejar de seguir este grupo o canal" 371msgstr "Dejar de seguir este grupo o canal"
372 372
373#: html.c:1960 html.c:4847 373#: html.c:2038 html.c:5291
374msgid "Follow Group" 374msgid "Follow Group"
375msgstr "Seguir Grupo" 375msgstr "Seguir Grupo"
376 376
377#: html.c:1961 377#: html.c:2039
378msgid "Start following this group or channel" 378msgid "Start following this group or channel"
379msgstr "Seguir grupo o canal" 379msgstr "Seguir grupo o canal"
380 380
381#: html.c:1966 html.c:3423 html.c:4791 381#: html.c:2044 html.c:3799 html.c:5235
382msgid "MUTE" 382msgid "MUTE"
383msgstr "SILENCIAR" 383msgstr "SILENCIAR"
384 384
385#: html.c:1967 385#: html.c:2045
386msgid "Block any activity from this user forever" 386msgid "Block any activity from this user forever"
387msgstr "Bloquear toda la actividad de este usuario para siempre" 387msgstr "Bloquear toda la actividad de este usuario para siempre"
388 388
389#: html.c:1972 html.c:3405 html.c:4877 389#: html.c:2050 html.c:3781 html.c:5321
390msgid "Delete" 390msgid "Delete"
391msgstr "Eliminar" 391msgstr "Eliminar"
392 392
393#: html.c:1972 393#: html.c:2050
394msgid "Delete this post" 394msgid "Delete this post"
395msgstr "Eliminar esta publicación" 395msgstr "Eliminar esta publicación"
396 396
397#: html.c:1975 html.c:4799 397#: html.c:2053 html.c:5243
398msgid "Hide" 398msgid "Hide"
399msgstr "Ocultar" 399msgstr "Ocultar"
400 400
401#: html.c:1975 401#: html.c:2053
402msgid "Hide this post and its children" 402msgid "Hide this post and its children"
403msgstr "Ocultar esta publicación y sus respuestas" 403msgstr "Ocultar esta publicación y sus respuestas"
404 404
405#: html.c:2017 405#: html.c:2095
406msgid "Edit..." 406msgid "Edit..."
407msgstr "Editar..." 407msgstr "Editar..."
408 408
409#: html.c:2039 409#: html.c:2133
410msgid "Reply..." 410msgid "Reply..."
411msgstr "Responder..." 411msgstr "Responder..."
412 412
413#: html.c:2090 413#: html.c:2184
414msgid "Truncated (too deep)" 414msgid "Truncated (too deep)"
415msgstr "Truncado (demasiado profundo)" 415msgstr "Truncado (demasiado profundo)"
416 416
417#: html.c:2108 417#: html.c:2202
418msgid "follows you" 418msgid "follows you"
419msgstr "te sigue" 419msgstr "te sigue"
420 420
421#: html.c:2182 421#: html.c:2276
422msgid "Pinned" 422msgid "Pinned"
423msgstr "Anclado" 423msgstr "Anclado"
424 424
425#: html.c:2190 425#: html.c:2284
426msgid "Bookmarked" 426msgid "Bookmarked"
427msgstr "Marcado" 427msgstr "Marcado"
428 428
429#: html.c:2198 429#: html.c:2292
430msgid "Poll" 430msgid "Poll"
431msgstr "Encuesta" 431msgstr "Encuesta"
432 432
433#: html.c:2205 433#: html.c:2299
434msgid "Voted" 434msgid "Voted"
435msgstr "Votado" 435msgstr "Votado"
436 436
437#: html.c:2214 437#: html.c:2308
438msgid "Event" 438msgid "Event"
439msgstr "Evento" 439msgstr "Evento"
440 440
441#: html.c:2246 html.c:2275 441#: html.c:2340 html.c:2369
442msgid "boosted" 442msgid "boosted"
443msgstr "impulsado" 443msgstr "impulsado"
444 444
445#: html.c:2289 445#: html.c:2383
446msgid "in reply to" 446msgid "in reply to"
447msgstr "en respuesta a" 447msgstr "en respuesta a"
448 448
449#: html.c:2345 449#: html.c:2439
450msgid " [SENSITIVE CONTENT]" 450msgid " [SENSITIVE CONTENT]"
451msgstr " [CONTENIDO SENSIBLE]" 451msgstr " [CONTENIDO SENSIBLE]"
452 452
453#: html.c:2512 453#: html.c:2796
454msgid "Vote" 454msgid "Vote"
455msgstr "Votar" 455msgstr "Votar"
456 456
457#: html.c:2522 457#: html.c:2806
458msgid "Closed" 458msgid "Closed"
459msgstr "Cerrado" 459msgstr "Cerrado"
460 460
461#: html.c:2547 461#: html.c:2831
462msgid "Closes in" 462msgid "Closes in"
463msgstr "Cierra en" 463msgstr "Cierra en"
464 464
465#: html.c:2627 465#: html.c:2911
466msgid "Video" 466msgid "Video"
467msgstr "Video" 467msgstr "Video"
468 468
469#: html.c:2642 469#: html.c:2926
470msgid "Audio" 470msgid "Audio"
471msgstr "Audio" 471msgstr "Audio"
472 472
473#: html.c:2670 473#: html.c:2954
474msgid "Attachment" 474msgid "Attachment"
475msgstr "Adjunto" 475msgstr "Adjunto"
476 476
477#: html.c:2684 477#: html.c:2968
478msgid "Alt..." 478msgid "Alt..."
479msgstr "Alt..." 479msgstr "Alt..."
480 480
481#: html.c:2697 481#: html.c:2981
482msgid "Source channel or community" 482msgid "Source channel or community"
483msgstr "Canal o comunidad de origen" 483msgstr "Canal o comunidad de origen"
484 484
485#: html.c:2791 485#: html.c:3075
486msgid "Time: " 486msgid "Time: "
487msgstr "Hora: " 487msgstr "Hora: "
488 488
489#: html.c:2872 489#: html.c:3156
490msgid "Older..." 490msgid "Older..."
491msgstr "Más antiguo..." 491msgstr "Más antiguo..."
492 492
493#: html.c:2974 493#: html.c:3258
494msgid "about this site" 494msgid "about this site"
495msgstr "acerca de este sitio" 495msgstr "acerca de este sitio"
496 496
497#: html.c:2976 497#: html.c:3260
498msgid "powered by " 498msgid "powered by "
499msgstr "provisto por " 499msgstr "provisto por "
500 500
501#: html.c:3041 501#: html.c:3329
502msgid "Dismiss" 502msgid "Dismiss"
503msgstr "Descartar" 503msgstr "Descartar"
504 504
505#: html.c:3058 505#: html.c:3346
506#, c-format 506#, c-format
507msgid "Timeline for list '%s'" 507msgid "Timeline for list '%s'"
508msgstr "Línea de tiempo de la lista '%s'" 508msgstr "Línea de tiempo de la lista '%s'"
509 509
510#: html.c:3077 html.c:4169 510#: html.c:3365 html.c:4589
511msgid "Pinned posts" 511msgid "Pinned posts"
512msgstr "Publicaciones ancladas" 512msgstr "Publicaciones ancladas"
513 513
514#: html.c:3089 html.c:4184 514#: html.c:3377 html.c:4604
515msgid "Bookmarked posts" 515msgid "Bookmarked posts"
516msgstr "Publicaciones marcadas" 516msgstr "Publicaciones marcadas"
517 517
518#: html.c:3101 html.c:4199 518#: html.c:3389 html.c:4619
519msgid "Post drafts" 519msgid "Post drafts"
520msgstr "Borradores de publicaciones" 520msgstr "Borradores de publicaciones"
521 521
522#: html.c:3177 522#: html.c:3465
523msgid "No more unseen posts" 523msgid "No more unseen posts"
524msgstr "No quedan publicaciones sin ver" 524msgstr "No quedan publicaciones sin ver"
525 525
526#: html.c:3181 html.c:3290 526#: html.c:3469 html.c:3578
527msgid "Back to top" 527msgid "Back to top"
528msgstr "Volver al inicio" 528msgstr "Volver al inicio"
529 529
530#: html.c:3243 530#: html.c:3531
531msgid "History" 531msgid "History"
532msgstr "Historia" 532msgstr "Historia"
533 533
534#: html.c:3295 html.c:3734 534#: html.c:3583 html.c:4149
535msgid "More..." 535msgid "More..."
536msgstr "Más..." 536msgstr "Más..."
537 537
538#: html.c:3391 html.c:4813 538#: html.c:3767 html.c:5257
539msgid "Unlimit" 539msgid "Unlimit"
540msgstr "Sin límite" 540msgstr "Sin límite"
541 541
542#: html.c:3392 542#: html.c:3768
543msgid "Allow announces (boosts) from this user" 543msgid "Allow announces (boosts) from this user"
544msgstr "Permitir anuncios (impulsos) de este usuario" 544msgstr "Permitir anuncios (impulsos) de este usuario"
545 545
546#: html.c:3395 html.c:4809 546#: html.c:3771 html.c:5253
547msgid "Limit" 547msgid "Limit"
548msgstr "Límite" 548msgstr "Límite"
549 549
550#: html.c:3396 550#: html.c:3772
551msgid "Block announces (boosts) from this user" 551msgid "Block announces (boosts) from this user"
552msgstr "Bloquear anuncios (impulsos) de este usuario" 552msgstr "Bloquear anuncios (impulsos) de este usuario"
553 553
554#: html.c:3405 554#: html.c:3781
555msgid "Delete this user" 555msgid "Delete this user"
556msgstr "Eliminar este usuario" 556msgstr "Eliminar este usuario"
557 557
558#: html.c:3410 html.c:4927 558#: html.c:3786 html.c:5371
559msgid "Approve" 559msgid "Approve"
560msgstr "Aprobar" 560msgstr "Aprobar"
561 561
562#: html.c:3411 562#: html.c:3787
563msgid "Approve this follow request" 563msgid "Approve this follow request"
564msgstr "Aprobar solicitud de seguimiento" 564msgstr "Aprobar solicitud de seguimiento"
565 565
566#: html.c:3414 html.c:4951 566#: html.c:3790 html.c:5395
567msgid "Discard" 567msgid "Discard"
568msgstr "Descartar" 568msgstr "Descartar"
569 569
570#: html.c:3414 570#: html.c:3790
571msgid "Discard this follow request" 571msgid "Discard this follow request"
572msgstr "Descartar solicitud de seguimiento" 572msgstr "Descartar solicitud de seguimiento"
573 573
574#: html.c:3419 html.c:4795 574#: html.c:3795 html.c:5239
575msgid "Unmute" 575msgid "Unmute"
576msgstr "Dejar de SILENCIAR" 576msgstr "Dejar de SILENCIAR"
577 577
578#: html.c:3420 578#: html.c:3796
579msgid "Stop blocking activities from this user" 579msgid "Stop blocking activities from this user"
580msgstr "Dejar de bloquear actividad de este usuario" 580msgstr "Dejar de bloquear actividad de este usuario"
581 581
582#: html.c:3424 582#: html.c:3800
583msgid "Block any activity from this user" 583msgid "Block any activity from this user"
584msgstr "Bloquear toda actividad de este usuario" 584msgstr "Bloquear toda actividad de este usuario"
585 585
586#: html.c:3432 586#: html.c:3808
587msgid "Direct Message..." 587msgid "Direct Message..."
588msgstr "Mensaje Directo..." 588msgstr "Mensaje Directo..."
589 589
590#: html.c:3467 590#: html.c:3843
591msgid "Pending follow confirmations" 591msgid "Pending follow confirmations"
592msgstr "Confirmaciones de seguimiento pendientes" 592msgstr "Confirmaciones de seguimiento pendientes"
593 593
594#: html.c:3471 594#: html.c:3847
595msgid "People you follow" 595msgid "People you follow"
596msgstr "Personas que sigues" 596msgstr "Personas que sigues"
597 597
598#: html.c:3472 598#: html.c:3848
599msgid "People that follow you" 599msgid "People that follow you"
600msgstr "Personas que te siguen" 600msgstr "Personas que te siguen"
601 601
602#: html.c:3511 602#: html.c:3887
603msgid "Clear all" 603msgid "Clear all"
604msgstr "Limpiar todo" 604msgstr "Limpiar todo"
605 605
606#: html.c:3571 606#: html.c:3951
607msgid "Mention" 607msgid "Mention"
608msgstr "Mención" 608msgstr "Mención"
609 609
610#: html.c:3574 610#: html.c:3954
611msgid "Finished poll" 611msgid "Finished poll"
612msgstr "Encuesta finalizada" 612msgstr "Encuesta finalizada"
613 613
614#: html.c:3590 614#: html.c:3979
615msgid "Follow Request" 615msgid "Follow Request"
616msgstr "Solicitud de Seguimiento" 616msgstr "Solicitud de Seguimiento"
617 617
618#: html.c:3674 618#: html.c:4089
619msgid "Context" 619msgid "Context"
620msgstr "Contexto" 620msgstr "Contexto"
621 621
622#: html.c:3692 622#: html.c:4107
623msgid "New" 623msgid "New"
624msgstr "Nuevo" 624msgstr "Nuevo"
625 625
626#: html.c:3707 626#: html.c:4122
627msgid "Already seen" 627msgid "Already seen"
628msgstr "Ya visto" 628msgstr "Ya visto"
629 629
630#: html.c:3722 630#: html.c:4137
631msgid "None" 631msgid "None"
632msgstr "Ninguno" 632msgstr "Ninguno"
633 633
634#: html.c:3994 634#: html.c:4414
635#, c-format 635#, c-format
636msgid "Search results for account %s" 636msgid "Search results for account %s"
637msgstr "Buscar resultados para la cuenta %s" 637msgstr "Buscar resultados para la cuenta %s"
638 638
639#: html.c:4001 639#: html.c:4421
640#, c-format 640#, c-format
641msgid "Account %s not found" 641msgid "Account %s not found"
642msgstr "No se encontró la cuenta %s" 642msgstr "No se encontró la cuenta %s"
643 643
644#: html.c:4032 644#: html.c:4452
645#, c-format 645#, c-format
646msgid "Search results for tag %s" 646msgid "Search results for tag %s"
647msgstr "Buscar resultados para la etiqueta %s" 647msgstr "Buscar resultados para la etiqueta %s"
648 648
649#: html.c:4032 649#: html.c:4452
650#, c-format 650#, c-format
651msgid "Nothing found for tag %s" 651msgid "Nothing found for tag %s"
652msgstr "No se encontró nada con la etiqueta %s" 652msgstr "No se encontró nada con la etiqueta %s"
653 653
654#: html.c:4048 654#: html.c:4468
655#, c-format 655#, c-format
656msgid "Search results for '%s' (may be more)" 656msgid "Search results for '%s' (may be more)"
657msgstr "Resultados de búsqueda para '%s' (puede haber más)" 657msgstr "Resultados de búsqueda para '%s' (puede haber más)"
658 658
659#: html.c:4051 659#: html.c:4471
660#, c-format 660#, c-format
661msgid "Search results for '%s'" 661msgid "Search results for '%s'"
662msgstr "Resultados de búsqueda para '%s'" 662msgstr "Resultados de búsqueda para '%s'"
663 663
664#: html.c:4054 664#: html.c:4474
665#, c-format 665#, c-format
666msgid "No more matches for '%s'" 666msgid "No more matches for '%s'"
667msgstr "No hay más coincidencias para '%s'" 667msgstr "No hay más coincidencias para '%s'"
668 668
669#: html.c:4056 669#: html.c:4476
670#, c-format 670#, c-format
671msgid "Nothing found for '%s'" 671msgid "Nothing found for '%s'"
672msgstr "No se encontró nada para '%s'" 672msgstr "No se encontró nada para '%s'"
673 673
674#: html.c:4154 674#: html.c:4574
675msgid "Showing instance timeline" 675msgid "Showing instance timeline"
676msgstr "Mostrando línea de tiempo de la instancia" 676msgstr "Mostrando línea de tiempo de la instancia"
677 677
678#: html.c:4237 678#: html.c:4657
679#, c-format 679#, c-format
680msgid "Showing timeline for list '%s'" 680msgid "Showing timeline for list '%s'"
681msgstr "Mostrando línea de tiempo de la lista '%s'" 681msgstr "Mostrando línea de tiempo de la lista '%s'"
682 682
683#: httpd.c:258 683#: httpd.c:259
684#, c-format 684#, c-format
685msgid "Search results for tag #%s" 685msgid "Search results for tag #%s"
686msgstr "Resultado de búsqueda para la etiqueta #%s" 686msgstr "Resultado de búsqueda para la etiqueta #%s"
687 687
688#: httpd.c:267 688#: httpd.c:268
689msgid "Recent posts by users in this instance" 689msgid "Recent posts by users in this instance"
690msgstr "Publicaciones recientes de los usuarios de esta instancia" 690msgstr "Publicaciones recientes de los usuarios de esta instancia"
691 691
692#: html.c:1764 692#: html.c:1842
693msgid "Blocked hashtags..." 693msgid "Blocked hashtags..."
694msgstr "Etiquetas bloqueadas..." 694msgstr "Etiquetas bloqueadas..."
695 695
696#: html.c:518 696#: html.c:574
697msgid "Optional URL to reply to" 697msgid "Optional URL to reply to"
698msgstr "URL opcional a la que responder" 698msgstr "URL opcional a la que responder"
699 699
700#: html.c:695 700#: html.c:751
701msgid "" 701msgid ""
702"Option 1...\n" 702"Option 1...\n"
703"Option 2...\n" 703"Option 2...\n"
@@ -709,91 +709,103 @@ msgstr ""
709"Opción 3...\n" 709"Opción 3...\n"
710"..." 710"..."
711 711
712#: html.c:1558 712#: html.c:1636
713msgid "Bot API key" 713msgid "Bot API key"
714msgstr "Clave del API del Bot" 714msgstr "Clave del API del Bot"
715 715
716#: html.c:1564 716#: html.c:1642
717msgid "Chat id" 717msgid "Chat id"
718msgstr "Identificador de chat" 718msgstr "Identificador de chat"
719 719
720#: html.c:1572 720#: html.c:1650
721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)" 722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
723 723
724#: html.c:1578 724#: html.c:1656
725msgid "ntfy token - if needed" 725msgid "ntfy token - if needed"
726msgstr "Token ntft - si es necesario" 726msgstr "Token ntft - si es necesario"
727 727
728#: html.c:3078 728#: html.c:3366
729msgid "pinned" 729msgid "pinned"
730msgstr "Anclados" 730msgstr "Anclados"
731 731
732#: html.c:3090 732#: html.c:3378
733msgid "bookmarks" 733msgid "bookmarks"
734msgstr "Marcados" 734msgstr "Marcados"
735 735
736#: html.c:3102 736#: html.c:3390
737msgid "drafts" 737msgid "drafts"
738msgstr "Borradores" 738msgstr "Borradores"
739 739
740#: html.c:584 740#: html.c:640
741msgid "Scheduled post..." 741msgid "Scheduled post..."
742msgstr "Envío programado..." 742msgstr "Envío programado..."
743 743
744#: html.c:3113 html.c:4214 744#: html.c:3401 html.c:4634
745msgid "Scheduled posts" 745msgid "Scheduled posts"
746msgstr "Envíos programados" 746msgstr "Envíos programados"
747 747
748#: html.c:3114 748#: html.c:3402
749msgid "scheduled posts" 749msgid "scheduled posts"
750msgstr "envíos programados" 750msgstr "envíos programados"
751 751
752#: html.c:578 752#: html.c:634
753#, c-format 753#, c-format
754msgid "Post date and time (timezone: %s):" 754msgid "Post date and time (timezone: %s):"
755msgstr "Fecha y hora de publicación (zona horaria: %s):" 755msgstr "Fecha y hora de publicación (zona horaria: %s):"
756 756
757#: html.c:1689 757#: html.c:1767
758msgid "Time zone:" 758msgid "Time zone:"
759msgstr "Zona horaria:" 759msgstr "Zona horaria:"
760 760
761#: html.c:559 761#: html.c:615
762msgid "Language:" 762msgid "Language:"
763msgstr "Idioma:" 763msgstr "Idioma:"
764 764
765#: html.c:1580 765#: html.c:1658
766msgid "Notify webhook:" 766msgid "Notify webhook:"
767msgstr "Webhook de notificación:" 767msgstr "Webhook de notificación:"
768 768
769#: html.c:1586 769#: html.c:1664
770msgid "http://example.com/webhook" 770msgid "http://example.com/webhook"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1694 773#: html.c:1772
774msgid "Languages you usually post in:" 774msgid "Languages you usually post in:"
775msgstr "Idiomas en los que sueles escribir:" 775msgstr "Idiomas en los que sueles escribir:"
776 776
777#: html.c:1700 777#: html.c:1778
778msgid "en fr es de_AT" 778msgid "en fr es de_AT"
779msgstr "" 779msgstr ""
780 780
781#: html.c:460 781#: html.c:428
782msgid "Visibility: " 782msgid "Visibility: "
783msgstr "Visibilidad: " 783msgstr "Visibilidad: "
784 784
785#: html.c:468
786msgid "Public" 785msgid "Public"
787msgstr "Público" 786msgstr "Público"
788 787
789#: html.c:477
790msgid "Unlisted" 788msgid "Unlisted"
791msgstr "No listado" 789msgstr "No listado"
792 790
793#: html.c:486
794msgid "Followers-only" 791msgid "Followers-only"
795msgstr "Solo seguidores" 792msgstr "Solo seguidores"
796 793
797#: html.c:495
798msgid "Direct Message" 794msgid "Direct Message"
799msgstr "Mensaje directo" 795msgstr "Mensaje directo"
796
797#: html.c:488 html.c:2534 html.c:2559 html.c:5177
798msgid "EmojiUnreact"
799msgstr ""
800
801#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
802msgid "EmojiReact"
803msgstr ""
804
805#: html.c:2115
806msgid "Emoji react..."
807msgstr "Reaccionar con un emoji..."
808
809#: html.c:2609
810msgid "Emoji reactions: "
811msgstr "Reacciones con emoji: "
diff --git a/po/es_AR.po b/po/es_AR.po
index 2579865..3b43fe5 100644
--- a/po/es_AR.po
+++ b/po/es_AR.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: es_AR\n" 8"Language: es_AR\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Contenido sensible: " 13msgstr "Contenido sensible: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Descripción del contenido sensible" 17msgstr "Descripción del contenido sensible"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Solo personas mencionadas: " 20msgstr "Solo personas mencionadas: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Responder a (URL): " 24msgstr "Responder a (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "No enviar. Guardar como borrador" 28msgstr "No enviar. Guardar como borrador"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Borrador:" 32msgstr "Borrador:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Adjuntos..." 36msgstr "Adjuntos..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Archivo:" 40msgstr "Archivo:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Limpiar este campo para eliminar el adjunto" 44msgstr "Limpiar este campo para eliminar el adjunto"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Descripción del adjunto" 48msgstr "Descripción del adjunto"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Encuesta..." 52msgstr "Encuesta..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Opciones de encuesta (una por línea, hasta 8):" 56msgstr "Opciones de encuesta (una por línea, hasta 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Una opción" 60msgstr "Una opción"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Opciones múltiples" 64msgstr "Opciones múltiples"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Finalizar en 5 minutos" 68msgstr "Finalizar en 5 minutos"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Finalizar en 1 hora" 72msgstr "Finalizar en 1 hora"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Finalizar en 1 día" 76msgstr "Finalizar en 1 día"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Publicar" 80msgstr "Publicar"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Descripción del sitio" 84msgstr "Descripción del sitio"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email del Administrador" 88msgstr "Email del Administrador"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Cuenta del Administrador" 92msgstr "Cuenta del Administrador"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d siguiendo, %d seguidores" 97msgstr "%d siguiendo, %d seguidores"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privado" 105msgstr "privado"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "público" 109msgstr "público"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notificaciones" 113msgstr "notificaciones"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "personas" 117msgstr "personas"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instancia" 121msgstr "instancia"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,576 +128,576 @@ msgstr ""
128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta " 128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
129"@usuario@host , ó #etiqueta" 129"@usuario@host , ó #etiqueta"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Buscar contenido" 133msgstr "Buscar contenido"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "link verificado" 137msgstr "link verificado"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Ubicación: " 141msgstr "Ubicación: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nueva Publicación..." 145msgstr "Nueva Publicación..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "¿En qué estás pensando?" 149msgstr "¿En qué estás pensando?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Operaciones..." 153msgstr "Operaciones..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Seguir" 157msgstr "Seguir"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(por URL o usuario@host)" 161msgstr "(por URL o usuario@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Impulsar" 165msgstr "Impulsar"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(por URL)" 169msgstr "(por URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Me gusta" 173msgstr "Me gusta"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Configuración de usuario..." 177msgstr "Configuración de usuario..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Nombre para mostrar:" 181msgstr "Nombre para mostrar:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Su nombre" 185msgstr "Su nombre"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar: " 189msgstr "Avatar: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Eliminar avatar" 193msgstr "Eliminar avatar"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Imagen de cabecera (banner): " 197msgstr "Imagen de cabecera (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Eliminar imagen de cabecera" 201msgstr "Eliminar imagen de cabecera"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Escriba algo sobre usted aquí..." 209msgstr "Escriba algo sobre usted aquí..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Siempre mostrar contenido sensible" 213msgstr "Siempre mostrar contenido sensible"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Cuenta de email para las notificaciones:" 217msgstr "Cuenta de email para las notificaciones:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Notificaciones en Telegram (llave del bot e id del chat):" 221msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "Notificaciones en ntfy (servidor ntfy y token):" 225msgstr "Notificaciones en ntfy (servidor ntfy y token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "" 229msgstr ""
230"Plazo máximo de conservación de publicaciones en días (0: usar configuración " 230"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
231"del servidor):" 231"del servidor):"
232 232
233#: html.c:1602 233#: html.c:1680
234msgid "Drop direct messages from people you don't follow" 234msgid "Drop direct messages from people you don't follow"
235msgstr "Descartar mensajes directos de personas a las que no sigue" 235msgstr "Descartar mensajes directos de personas a las que no sigue"
236 236
237#: html.c:1611 237#: html.c:1689
238msgid "This account is a bot" 238msgid "This account is a bot"
239msgstr "Esta cuenta es un bot" 239msgstr "Esta cuenta es un bot"
240 240
241#: html.c:1620 241#: html.c:1698
242msgid "Auto-boost all mentions to this account" 242msgid "Auto-boost all mentions to this account"
243msgstr "Impulsar automáticamente todas las menciones a esta cuenta" 243msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
244 244
245#: html.c:1629 245#: html.c:1707
246msgid "This account is private (posts are not shown through the web)" 246msgid "This account is private (posts are not shown through the web)"
247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)" 247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
248 248
249#: html.c:1639 249#: html.c:1717
250msgid "Collapse top threads by default" 250msgid "Collapse top threads by default"
251msgstr "Contraer hilo de publicaciones por defecto" 251msgstr "Contraer hilo de publicaciones por defecto"
252 252
253#: html.c:1648 253#: html.c:1726
254msgid "Follow requests must be approved" 254msgid "Follow requests must be approved"
255msgstr "Las solicitudes de seguimiento deben ser aprobadas" 255msgstr "Las solicitudes de seguimiento deben ser aprobadas"
256 256
257#: html.c:1657 257#: html.c:1735
258msgid "Publish follower and following metrics" 258msgid "Publish follower and following metrics"
259msgstr "Mostrar cantidad de seguidores y seguidos" 259msgstr "Mostrar cantidad de seguidores y seguidos"
260 260
261#: html.c:1659 261#: html.c:1737
262msgid "Current location:" 262msgid "Current location:"
263msgstr "Ubicación actual:" 263msgstr "Ubicación actual:"
264 264
265#: html.c:1673 265#: html.c:1751
266msgid "Profile metadata (key=value pairs in each line):" 266msgid "Profile metadata (key=value pairs in each line):"
267msgstr "Metadata del perfil (pares llave=valor en cada línea):" 267msgstr "Metadata del perfil (pares llave=valor en cada línea):"
268 268
269#: html.c:1684 269#: html.c:1762
270msgid "Web interface language:" 270msgid "Web interface language:"
271msgstr "Idioma de la interfaz Web:" 271msgstr "Idioma de la interfaz Web:"
272 272
273#: html.c:1703 273#: html.c:1781
274msgid "New password:" 274msgid "New password:"
275msgstr "Nueva contraseña:" 275msgstr "Nueva contraseña:"
276 276
277#: html.c:1710 277#: html.c:1788
278msgid "Repeat new password:" 278msgid "Repeat new password:"
279msgstr "Repetir nueva contraseña:" 279msgstr "Repetir nueva contraseña:"
280 280
281#: html.c:1720 281#: html.c:1798
282msgid "Update user info" 282msgid "Update user info"
283msgstr "Actualizar información de usuario" 283msgstr "Actualizar información de usuario"
284 284
285#: html.c:1731 285#: html.c:1809
286msgid "Followed hashtags..." 286msgid "Followed hashtags..."
287msgstr "Etiquetas en seguimiento..." 287msgstr "Etiquetas en seguimiento..."
288 288
289#: html.c:1733 html.c:1766 289#: html.c:1811 html.c:1844
290msgid "One hashtag per line" 290msgid "One hashtag per line"
291msgstr "Una etiqueta por línea" 291msgstr "Una etiqueta por línea"
292 292
293#: html.c:1755 html.c:1787 293#: html.c:1833 html.c:1865
294msgid "Update hashtags" 294msgid "Update hashtags"
295msgstr "Actualizar etiquetas" 295msgstr "Actualizar etiquetas"
296 296
297#: html.c:1904 297#: html.c:1982
298msgid "Say you like this post" 298msgid "Say you like this post"
299msgstr "Decir que te gusta esta publicación" 299msgstr "Decir que te gusta esta publicación"
300 300
301#: html.c:1909 html.c:4775 301#: html.c:1987 html.c:5219
302msgid "Unlike" 302msgid "Unlike"
303msgstr "No me gusta" 303msgstr "No me gusta"
304 304
305#: html.c:1909 305#: html.c:1987
306msgid "Nah don't like it that much" 306msgid "Nah don't like it that much"
307msgstr "Nah, no me gusta tanto" 307msgstr "Nah, no me gusta tanto"
308 308
309#: html.c:1915 html.c:4912 309#: html.c:1993 html.c:5356
310msgid "Unpin" 310msgid "Unpin"
311msgstr "Desanclar" 311msgstr "Desanclar"
312 312
313#: html.c:1915 313#: html.c:1993
314msgid "Unpin this post from your timeline" 314msgid "Unpin this post from your timeline"
315msgstr "Desanclar esta publicación de su línea de tiempo" 315msgstr "Desanclar esta publicación de su línea de tiempo"
316 316
317#: html.c:1918 html.c:4907 317#: html.c:1996 html.c:5351
318msgid "Pin" 318msgid "Pin"
319msgstr "Anclar" 319msgstr "Anclar"
320 320
321#: html.c:1918 321#: html.c:1996
322msgid "Pin this post to the top of your timeline" 322msgid "Pin this post to the top of your timeline"
323msgstr "Anclar esta publicación al inicio de su línea de tiempo" 323msgstr "Anclar esta publicación al inicio de su línea de tiempo"
324 324
325#: html.c:1925 325#: html.c:2003
326msgid "Announce this post to your followers" 326msgid "Announce this post to your followers"
327msgstr "Anunciar esta publicación a sus seguidores" 327msgstr "Anunciar esta publicación a sus seguidores"
328 328
329#: html.c:1930 html.c:4783 329#: html.c:2008 html.c:5227
330msgid "Unboost" 330msgid "Unboost"
331msgstr "Eliminar impulso" 331msgstr "Eliminar impulso"
332 332
333#: html.c:1930 333#: html.c:2008
334msgid "I regret I boosted this" 334msgid "I regret I boosted this"
335msgstr "Me arrepiento de haber impulsado esto" 335msgstr "Me arrepiento de haber impulsado esto"
336 336
337#: html.c:1936 html.c:4922 337#: html.c:2014 html.c:5366
338msgid "Unbookmark" 338msgid "Unbookmark"
339msgstr "Eliminar marcador" 339msgstr "Eliminar marcador"
340 340
341#: html.c:1936 341#: html.c:2014
342msgid "Delete this post from your bookmarks" 342msgid "Delete this post from your bookmarks"
343msgstr "Eliminar marcador de esta publicación" 343msgstr "Eliminar marcador de esta publicación"
344 344
345#: html.c:1939 html.c:4917 345#: html.c:2017 html.c:5361
346msgid "Bookmark" 346msgid "Bookmark"
347msgstr "Marcador" 347msgstr "Marcador"
348 348
349#: html.c:1939 349#: html.c:2017
350msgid "Add this post to your bookmarks" 350msgid "Add this post to your bookmarks"
351msgstr "Agregar esta publicación a mis marcadores" 351msgstr "Agregar esta publicación a mis marcadores"
352 352
353#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 353#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
354msgid "Unfollow" 354msgid "Unfollow"
355msgstr "Dejar de seguir" 355msgstr "Dejar de seguir"
356 356
357#: html.c:1945 html.c:3387 357#: html.c:2023 html.c:3763 html.c:4042
358msgid "Stop following this user's activity" 358msgid "Stop following this user's activity"
359msgstr "Dejar de seguir la actividad de este usuario" 359msgstr "Dejar de seguir la actividad de este usuario"
360 360
361#: html.c:1949 html.c:3401 361#: html.c:2027 html.c:3777 html.c:4044
362msgid "Start following this user's activity" 362msgid "Start following this user's activity"
363msgstr "Seguir la actividad de este usuario" 363msgstr "Seguir la actividad de este usuario"
364 364
365#: html.c:1955 html.c:4860 365#: html.c:2033 html.c:5304
366msgid "Unfollow Group" 366msgid "Unfollow Group"
367msgstr "Dejar de seguir este Grupo" 367msgstr "Dejar de seguir este Grupo"
368 368
369#: html.c:1956 369#: html.c:2034
370msgid "Stop following this group or channel" 370msgid "Stop following this group or channel"
371msgstr "Dejar de seguir este grupo o canal" 371msgstr "Dejar de seguir este grupo o canal"
372 372
373#: html.c:1960 html.c:4847 373#: html.c:2038 html.c:5291
374msgid "Follow Group" 374msgid "Follow Group"
375msgstr "Seguir Grupo" 375msgstr "Seguir Grupo"
376 376
377#: html.c:1961 377#: html.c:2039
378msgid "Start following this group or channel" 378msgid "Start following this group or channel"
379msgstr "Seguir grupo o canal" 379msgstr "Seguir grupo o canal"
380 380
381#: html.c:1966 html.c:3423 html.c:4791 381#: html.c:2044 html.c:3799 html.c:5235
382msgid "MUTE" 382msgid "MUTE"
383msgstr "SILENCIAR" 383msgstr "SILENCIAR"
384 384
385#: html.c:1967 385#: html.c:2045
386msgid "Block any activity from this user forever" 386msgid "Block any activity from this user forever"
387msgstr "Bloquear toda la actividad de este usuario para siempre" 387msgstr "Bloquear toda la actividad de este usuario para siempre"
388 388
389#: html.c:1972 html.c:3405 html.c:4877 389#: html.c:2050 html.c:3781 html.c:5321
390msgid "Delete" 390msgid "Delete"
391msgstr "Eliminar" 391msgstr "Eliminar"
392 392
393#: html.c:1972 393#: html.c:2050
394msgid "Delete this post" 394msgid "Delete this post"
395msgstr "Eliminar esta publicación" 395msgstr "Eliminar esta publicación"
396 396
397#: html.c:1975 html.c:4799 397#: html.c:2053 html.c:5243
398msgid "Hide" 398msgid "Hide"
399msgstr "Ocultar" 399msgstr "Ocultar"
400 400
401#: html.c:1975 401#: html.c:2053
402msgid "Hide this post and its children" 402msgid "Hide this post and its children"
403msgstr "Ocultar esta publicación y sus respuestas" 403msgstr "Ocultar esta publicación y sus respuestas"
404 404
405#: html.c:2017 405#: html.c:2095
406msgid "Edit..." 406msgid "Edit..."
407msgstr "Editar..." 407msgstr "Editar..."
408 408
409#: html.c:2039 409#: html.c:2133
410msgid "Reply..." 410msgid "Reply..."
411msgstr "Responder..." 411msgstr "Responder..."
412 412
413#: html.c:2090 413#: html.c:2184
414msgid "Truncated (too deep)" 414msgid "Truncated (too deep)"
415msgstr "Truncado (demasiado profundo)" 415msgstr "Truncado (demasiado profundo)"
416 416
417#: html.c:2108 417#: html.c:2202
418msgid "follows you" 418msgid "follows you"
419msgstr "te sigue" 419msgstr "te sigue"
420 420
421#: html.c:2182 421#: html.c:2276
422msgid "Pinned" 422msgid "Pinned"
423msgstr "Anclado" 423msgstr "Anclado"
424 424
425#: html.c:2190 425#: html.c:2284
426msgid "Bookmarked" 426msgid "Bookmarked"
427msgstr "Marcado" 427msgstr "Marcado"
428 428
429#: html.c:2198 429#: html.c:2292
430msgid "Poll" 430msgid "Poll"
431msgstr "Encuesta" 431msgstr "Encuesta"
432 432
433#: html.c:2205 433#: html.c:2299
434msgid "Voted" 434msgid "Voted"
435msgstr "Votado" 435msgstr "Votado"
436 436
437#: html.c:2214 437#: html.c:2308
438msgid "Event" 438msgid "Event"
439msgstr "Evento" 439msgstr "Evento"
440 440
441#: html.c:2246 html.c:2275 441#: html.c:2340 html.c:2369
442msgid "boosted" 442msgid "boosted"
443msgstr "impulsado" 443msgstr "impulsado"
444 444
445#: html.c:2289 445#: html.c:2383
446msgid "in reply to" 446msgid "in reply to"
447msgstr "en respuesta a" 447msgstr "en respuesta a"
448 448
449#: html.c:2345 449#: html.c:2439
450msgid " [SENSITIVE CONTENT]" 450msgid " [SENSITIVE CONTENT]"
451msgstr " [CONTENIDO SENSIBLE]" 451msgstr " [CONTENIDO SENSIBLE]"
452 452
453#: html.c:2512 453#: html.c:2796
454msgid "Vote" 454msgid "Vote"
455msgstr "Votar" 455msgstr "Votar"
456 456
457#: html.c:2522 457#: html.c:2806
458msgid "Closed" 458msgid "Closed"
459msgstr "Cerrado" 459msgstr "Cerrado"
460 460
461#: html.c:2547 461#: html.c:2831
462msgid "Closes in" 462msgid "Closes in"
463msgstr "Cierra en" 463msgstr "Cierra en"
464 464
465#: html.c:2627 465#: html.c:2911
466msgid "Video" 466msgid "Video"
467msgstr "Video" 467msgstr "Video"
468 468
469#: html.c:2642 469#: html.c:2926
470msgid "Audio" 470msgid "Audio"
471msgstr "Audio" 471msgstr "Audio"
472 472
473#: html.c:2670 473#: html.c:2954
474msgid "Attachment" 474msgid "Attachment"
475msgstr "Adjunto" 475msgstr "Adjunto"
476 476
477#: html.c:2684 477#: html.c:2968
478msgid "Alt..." 478msgid "Alt..."
479msgstr "Alt..." 479msgstr "Alt..."
480 480
481#: html.c:2697 481#: html.c:2981
482msgid "Source channel or community" 482msgid "Source channel or community"
483msgstr "Canal o comunidad de origen" 483msgstr "Canal o comunidad de origen"
484 484
485#: html.c:2791 485#: html.c:3075
486msgid "Time: " 486msgid "Time: "
487msgstr "Hora: " 487msgstr "Hora: "
488 488
489#: html.c:2872 489#: html.c:3156
490msgid "Older..." 490msgid "Older..."
491msgstr "Más antiguo..." 491msgstr "Más antiguo..."
492 492
493#: html.c:2974 493#: html.c:3258
494msgid "about this site" 494msgid "about this site"
495msgstr "acerca de este sitio" 495msgstr "acerca de este sitio"
496 496
497#: html.c:2976 497#: html.c:3260
498msgid "powered by " 498msgid "powered by "
499msgstr "provisto por " 499msgstr "provisto por "
500 500
501#: html.c:3041 501#: html.c:3329
502msgid "Dismiss" 502msgid "Dismiss"
503msgstr "Descartar" 503msgstr "Descartar"
504 504
505#: html.c:3058 505#: html.c:3346
506#, c-format 506#, c-format
507msgid "Timeline for list '%s'" 507msgid "Timeline for list '%s'"
508msgstr "Línea de tiempo de la lista '%s'" 508msgstr "Línea de tiempo de la lista '%s'"
509 509
510#: html.c:3077 html.c:4169 510#: html.c:3365 html.c:4589
511msgid "Pinned posts" 511msgid "Pinned posts"
512msgstr "Publicaciones ancladas" 512msgstr "Publicaciones ancladas"
513 513
514#: html.c:3089 html.c:4184 514#: html.c:3377 html.c:4604
515msgid "Bookmarked posts" 515msgid "Bookmarked posts"
516msgstr "Publicaciones marcadas" 516msgstr "Publicaciones marcadas"
517 517
518#: html.c:3101 html.c:4199 518#: html.c:3389 html.c:4619
519msgid "Post drafts" 519msgid "Post drafts"
520msgstr "Borradores de publicaciones" 520msgstr "Borradores de publicaciones"
521 521
522#: html.c:3177 522#: html.c:3465
523msgid "No more unseen posts" 523msgid "No more unseen posts"
524msgstr "No quedan publicaciones sin ver" 524msgstr "No quedan publicaciones sin ver"
525 525
526#: html.c:3181 html.c:3290 526#: html.c:3469 html.c:3578
527msgid "Back to top" 527msgid "Back to top"
528msgstr "Volver al inicio" 528msgstr "Volver al inicio"
529 529
530#: html.c:3243 530#: html.c:3531
531msgid "History" 531msgid "History"
532msgstr "Historia" 532msgstr "Historia"
533 533
534#: html.c:3295 html.c:3734 534#: html.c:3583 html.c:4149
535msgid "More..." 535msgid "More..."
536msgstr "Más..." 536msgstr "Más..."
537 537
538#: html.c:3391 html.c:4813 538#: html.c:3767 html.c:5257
539msgid "Unlimit" 539msgid "Unlimit"
540msgstr "Sin límite" 540msgstr "Sin límite"
541 541
542#: html.c:3392 542#: html.c:3768
543msgid "Allow announces (boosts) from this user" 543msgid "Allow announces (boosts) from this user"
544msgstr "Permitir anuncios (impulsos) de este usuario" 544msgstr "Permitir anuncios (impulsos) de este usuario"
545 545
546#: html.c:3395 html.c:4809 546#: html.c:3771 html.c:5253
547msgid "Limit" 547msgid "Limit"
548msgstr "Límite" 548msgstr "Límite"
549 549
550#: html.c:3396 550#: html.c:3772
551msgid "Block announces (boosts) from this user" 551msgid "Block announces (boosts) from this user"
552msgstr "Bloquear anuncios (impulsos) de este usuario" 552msgstr "Bloquear anuncios (impulsos) de este usuario"
553 553
554#: html.c:3405 554#: html.c:3781
555msgid "Delete this user" 555msgid "Delete this user"
556msgstr "Eliminar este usuario" 556msgstr "Eliminar este usuario"
557 557
558#: html.c:3410 html.c:4927 558#: html.c:3786 html.c:5371
559msgid "Approve" 559msgid "Approve"
560msgstr "Aprobar" 560msgstr "Aprobar"
561 561
562#: html.c:3411 562#: html.c:3787
563msgid "Approve this follow request" 563msgid "Approve this follow request"
564msgstr "Aprobar solicitud de seguimiento" 564msgstr "Aprobar solicitud de seguimiento"
565 565
566#: html.c:3414 html.c:4951 566#: html.c:3790 html.c:5395
567msgid "Discard" 567msgid "Discard"
568msgstr "Descartar" 568msgstr "Descartar"
569 569
570#: html.c:3414 570#: html.c:3790
571msgid "Discard this follow request" 571msgid "Discard this follow request"
572msgstr "Descartar solicitud de seguimiento" 572msgstr "Descartar solicitud de seguimiento"
573 573
574#: html.c:3419 html.c:4795 574#: html.c:3795 html.c:5239
575msgid "Unmute" 575msgid "Unmute"
576msgstr "Dejar de SILENCIAR" 576msgstr "Dejar de SILENCIAR"
577 577
578#: html.c:3420 578#: html.c:3796
579msgid "Stop blocking activities from this user" 579msgid "Stop blocking activities from this user"
580msgstr "Dejar de bloquear actividad de este usuario" 580msgstr "Dejar de bloquear actividad de este usuario"
581 581
582#: html.c:3424 582#: html.c:3800
583msgid "Block any activity from this user" 583msgid "Block any activity from this user"
584msgstr "Bloquear toda actividad de este usuario" 584msgstr "Bloquear toda actividad de este usuario"
585 585
586#: html.c:3432 586#: html.c:3808
587msgid "Direct Message..." 587msgid "Direct Message..."
588msgstr "Mensaje Directo..." 588msgstr "Mensaje Directo..."
589 589
590#: html.c:3467 590#: html.c:3843
591msgid "Pending follow confirmations" 591msgid "Pending follow confirmations"
592msgstr "Confirmaciones de seguimiento pendientes" 592msgstr "Confirmaciones de seguimiento pendientes"
593 593
594#: html.c:3471 594#: html.c:3847
595msgid "People you follow" 595msgid "People you follow"
596msgstr "Personas que sigues" 596msgstr "Personas que sigues"
597 597
598#: html.c:3472 598#: html.c:3848
599msgid "People that follow you" 599msgid "People that follow you"
600msgstr "Personas que te siguen" 600msgstr "Personas que te siguen"
601 601
602#: html.c:3511 602#: html.c:3887
603msgid "Clear all" 603msgid "Clear all"
604msgstr "Limpiar todo" 604msgstr "Limpiar todo"
605 605
606#: html.c:3571 606#: html.c:3951
607msgid "Mention" 607msgid "Mention"
608msgstr "Mención" 608msgstr "Mención"
609 609
610#: html.c:3574 610#: html.c:3954
611msgid "Finished poll" 611msgid "Finished poll"
612msgstr "Encuesta finalizada" 612msgstr "Encuesta finalizada"
613 613
614#: html.c:3590 614#: html.c:3979
615msgid "Follow Request" 615msgid "Follow Request"
616msgstr "Solicitud de Seguimiento" 616msgstr "Solicitud de Seguimiento"
617 617
618#: html.c:3674 618#: html.c:4089
619msgid "Context" 619msgid "Context"
620msgstr "Contexto" 620msgstr "Contexto"
621 621
622#: html.c:3692 622#: html.c:4107
623msgid "New" 623msgid "New"
624msgstr "Nuevo" 624msgstr "Nuevo"
625 625
626#: html.c:3707 626#: html.c:4122
627msgid "Already seen" 627msgid "Already seen"
628msgstr "Ya visto" 628msgstr "Ya visto"
629 629
630#: html.c:3722 630#: html.c:4137
631msgid "None" 631msgid "None"
632msgstr "Ninguno" 632msgstr "Ninguno"
633 633
634#: html.c:3994 634#: html.c:4414
635#, c-format 635#, c-format
636msgid "Search results for account %s" 636msgid "Search results for account %s"
637msgstr "Buscar resultados para la cuenta %s" 637msgstr "Buscar resultados para la cuenta %s"
638 638
639#: html.c:4001 639#: html.c:4421
640#, c-format 640#, c-format
641msgid "Account %s not found" 641msgid "Account %s not found"
642msgstr "No se encontró la cuenta %s" 642msgstr "No se encontró la cuenta %s"
643 643
644#: html.c:4032 644#: html.c:4452
645#, c-format 645#, c-format
646msgid "Search results for tag %s" 646msgid "Search results for tag %s"
647msgstr "Buscar resultados para la etiqueta %s" 647msgstr "Buscar resultados para la etiqueta %s"
648 648
649#: html.c:4032 649#: html.c:4452
650#, c-format 650#, c-format
651msgid "Nothing found for tag %s" 651msgid "Nothing found for tag %s"
652msgstr "No se encontró nada con la etiqueta %s" 652msgstr "No se encontró nada con la etiqueta %s"
653 653
654#: html.c:4048 654#: html.c:4468
655#, c-format 655#, c-format
656msgid "Search results for '%s' (may be more)" 656msgid "Search results for '%s' (may be more)"
657msgstr "Resultados de búsqueda para '%s' (puede haber más)" 657msgstr "Resultados de búsqueda para '%s' (puede haber más)"
658 658
659#: html.c:4051 659#: html.c:4471
660#, c-format 660#, c-format
661msgid "Search results for '%s'" 661msgid "Search results for '%s'"
662msgstr "Resultados de búsqueda para '%s'" 662msgstr "Resultados de búsqueda para '%s'"
663 663
664#: html.c:4054 664#: html.c:4474
665#, c-format 665#, c-format
666msgid "No more matches for '%s'" 666msgid "No more matches for '%s'"
667msgstr "No hay más coincidencias para '%s'" 667msgstr "No hay más coincidencias para '%s'"
668 668
669#: html.c:4056 669#: html.c:4476
670#, c-format 670#, c-format
671msgid "Nothing found for '%s'" 671msgid "Nothing found for '%s'"
672msgstr "No se encontró nada para '%s'" 672msgstr "No se encontró nada para '%s'"
673 673
674#: html.c:4154 674#: html.c:4574
675msgid "Showing instance timeline" 675msgid "Showing instance timeline"
676msgstr "Mostrando línea de tiempo de la instancia" 676msgstr "Mostrando línea de tiempo de la instancia"
677 677
678#: html.c:4237 678#: html.c:4657
679#, c-format 679#, c-format
680msgid "Showing timeline for list '%s'" 680msgid "Showing timeline for list '%s'"
681msgstr "Mostrando línea de tiempo de la lista '%s'" 681msgstr "Mostrando línea de tiempo de la lista '%s'"
682 682
683#: httpd.c:258 683#: httpd.c:259
684#, c-format 684#, c-format
685msgid "Search results for tag #%s" 685msgid "Search results for tag #%s"
686msgstr "Resultado de búsqueda para la etiqueta #%s" 686msgstr "Resultado de búsqueda para la etiqueta #%s"
687 687
688#: httpd.c:267 688#: httpd.c:268
689msgid "Recent posts by users in this instance" 689msgid "Recent posts by users in this instance"
690msgstr "Publicaciones recientes de los usuarios de esta instancia" 690msgstr "Publicaciones recientes de los usuarios de esta instancia"
691 691
692#: html.c:1764 692#: html.c:1842
693msgid "Blocked hashtags..." 693msgid "Blocked hashtags..."
694msgstr "Etiquetas bloqueadas..." 694msgstr "Etiquetas bloqueadas..."
695 695
696#: html.c:518 696#: html.c:574
697msgid "Optional URL to reply to" 697msgid "Optional URL to reply to"
698msgstr "URL opcional a la que responder" 698msgstr "URL opcional a la que responder"
699 699
700#: html.c:695 700#: html.c:751
701msgid "" 701msgid ""
702"Option 1...\n" 702"Option 1...\n"
703"Option 2...\n" 703"Option 2...\n"
@@ -709,91 +709,103 @@ msgstr ""
709"Opción 3...\n" 709"Opción 3...\n"
710"..." 710"..."
711 711
712#: html.c:1558 712#: html.c:1636
713msgid "Bot API key" 713msgid "Bot API key"
714msgstr "Clave del API del Bot" 714msgstr "Clave del API del Bot"
715 715
716#: html.c:1564 716#: html.c:1642
717msgid "Chat id" 717msgid "Chat id"
718msgstr "Identificador de chat" 718msgstr "Identificador de chat"
719 719
720#: html.c:1572 720#: html.c:1650
721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)" 722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
723 723
724#: html.c:1578 724#: html.c:1656
725msgid "ntfy token - if needed" 725msgid "ntfy token - if needed"
726msgstr "Token ntft - si es necesario" 726msgstr "Token ntft - si es necesario"
727 727
728#: html.c:3078 728#: html.c:3366
729msgid "pinned" 729msgid "pinned"
730msgstr "Anclados" 730msgstr "Anclados"
731 731
732#: html.c:3090 732#: html.c:3378
733msgid "bookmarks" 733msgid "bookmarks"
734msgstr "Marcados" 734msgstr "Marcados"
735 735
736#: html.c:3102 736#: html.c:3390
737msgid "drafts" 737msgid "drafts"
738msgstr "Borradores" 738msgstr "Borradores"
739 739
740#: html.c:584 740#: html.c:640
741msgid "Scheduled post..." 741msgid "Scheduled post..."
742msgstr "Envío programado..." 742msgstr "Envío programado..."
743 743
744#: html.c:3113 html.c:4214 744#: html.c:3401 html.c:4634
745msgid "Scheduled posts" 745msgid "Scheduled posts"
746msgstr "Envíos programados" 746msgstr "Envíos programados"
747 747
748#: html.c:3114 748#: html.c:3402
749msgid "scheduled posts" 749msgid "scheduled posts"
750msgstr "envíos programados" 750msgstr "envíos programados"
751 751
752#: html.c:578 752#: html.c:634
753#, c-format 753#, c-format
754msgid "Post date and time (timezone: %s):" 754msgid "Post date and time (timezone: %s):"
755msgstr "Fecha y hora de publicación (zona horaria: %s):" 755msgstr "Fecha y hora de publicación (zona horaria: %s):"
756 756
757#: html.c:1689 757#: html.c:1767
758msgid "Time zone:" 758msgid "Time zone:"
759msgstr "Zona horaria:" 759msgstr "Zona horaria:"
760 760
761#: html.c:559 761#: html.c:615
762msgid "Language:" 762msgid "Language:"
763msgstr "Idioma:" 763msgstr "Idioma:"
764 764
765#: html.c:1580 765#: html.c:1658
766msgid "Notify webhook:" 766msgid "Notify webhook:"
767msgstr "Webhook de notificación:" 767msgstr "Webhook de notificación:"
768 768
769#: html.c:1586 769#: html.c:1664
770msgid "http://example.com/webhook" 770msgid "http://example.com/webhook"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1694 773#: html.c:1772
774msgid "Languages you usually post in:" 774msgid "Languages you usually post in:"
775msgstr "Idiomas en los que sueles escribir:" 775msgstr "Idiomas en los que sueles escribir:"
776 776
777#: html.c:1700 777#: html.c:1778
778msgid "en fr es de_AT" 778msgid "en fr es de_AT"
779msgstr "" 779msgstr ""
780 780
781#: html.c:460 781#: html.c:428
782msgid "Visibility: " 782msgid "Visibility: "
783msgstr "Visibilidad: " 783msgstr "Visibilidad: "
784 784
785#: html.c:468
786msgid "Public" 785msgid "Public"
787msgstr "Público" 786msgstr "Público"
788 787
789#: html.c:477
790msgid "Unlisted" 788msgid "Unlisted"
791msgstr "No listado" 789msgstr "No listado"
792 790
793#: html.c:486
794msgid "Followers-only" 791msgid "Followers-only"
795msgstr "Solo seguidores" 792msgstr "Solo seguidores"
796 793
797#: html.c:495
798msgid "Direct Message" 794msgid "Direct Message"
799msgstr "Mensaje directo" 795msgstr "Mensaje directo"
796
797#: html.c:488 html.c:2534 html.c:2559 html.c:5177
798msgid "EmojiUnreact"
799msgstr ""
800
801#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
802msgid "EmojiReact"
803msgstr ""
804
805#: html.c:2115
806msgid "Emoji react..."
807msgstr "Reaccionar con un emoji..."
808
809#: html.c:2609
810msgid "Emoji reactions: "
811msgstr "Reacciones con emoji: "
diff --git a/po/es_UY.po b/po/es_UY.po
index d4d9918..68cfa06 100644
--- a/po/es_UY.po
+++ b/po/es_UY.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: es_UY\n" 8"Language: es_UY\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Contenido sensible: " 13msgstr "Contenido sensible: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Descripción del contenido sensible" 17msgstr "Descripción del contenido sensible"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Solo personas mencionadas: " 20msgstr "Solo personas mencionadas: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Responder a (URL): " 24msgstr "Responder a (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "No enviar. Guardar como borrador" 28msgstr "No enviar. Guardar como borrador"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Borrador:" 32msgstr "Borrador:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Adjuntos..." 36msgstr "Adjuntos..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Archivo:" 40msgstr "Archivo:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Limpiar este campo para eliminar el adjunto" 44msgstr "Limpiar este campo para eliminar el adjunto"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Descripción del adjunto" 48msgstr "Descripción del adjunto"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Encuesta..." 52msgstr "Encuesta..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Opciones de encuesta (una por línea, hasta 8):" 56msgstr "Opciones de encuesta (una por línea, hasta 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Una opción" 60msgstr "Una opción"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Opciones múltiples" 64msgstr "Opciones múltiples"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Finalizar en 5 minutos" 68msgstr "Finalizar en 5 minutos"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Finalizar en 1 hora" 72msgstr "Finalizar en 1 hora"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Finalizar en 1 día" 76msgstr "Finalizar en 1 día"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Publicar" 80msgstr "Publicar"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Descripción del sitio" 84msgstr "Descripción del sitio"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email del Administrador" 88msgstr "Email del Administrador"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Cuenta del Administrador" 92msgstr "Cuenta del Administrador"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d siguiendo, %d seguidores" 97msgstr "%d siguiendo, %d seguidores"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privado" 105msgstr "privado"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "público" 109msgstr "público"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notificaciones" 113msgstr "notificaciones"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "personas" 117msgstr "personas"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instancia" 121msgstr "instancia"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,576 +128,576 @@ msgstr ""
128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta " 128"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
129"@usuario@host , ó #etiqueta" 129"@usuario@host , ó #etiqueta"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Buscar contenido" 133msgstr "Buscar contenido"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "link verificado" 137msgstr "link verificado"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Ubicación: " 141msgstr "Ubicación: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nueva Publicación..." 145msgstr "Nueva Publicación..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "¿En qué estás pensando?" 149msgstr "¿En qué estás pensando?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Operaciones..." 153msgstr "Operaciones..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Seguir" 157msgstr "Seguir"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(por URL o usuario@host)" 161msgstr "(por URL o usuario@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Impulsar" 165msgstr "Impulsar"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(por URL)" 169msgstr "(por URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Me gusta" 173msgstr "Me gusta"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Configuración de usuario..." 177msgstr "Configuración de usuario..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Nombre para mostrar:" 181msgstr "Nombre para mostrar:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Su nombre" 185msgstr "Su nombre"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar: " 189msgstr "Avatar: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Eliminar avatar" 193msgstr "Eliminar avatar"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Imagen de cabecera (banner): " 197msgstr "Imagen de cabecera (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Eliminar imagen de cabecera" 201msgstr "Eliminar imagen de cabecera"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Escriba algo sobre usted aquí..." 209msgstr "Escriba algo sobre usted aquí..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Siempre mostrar contenido sensible" 213msgstr "Siempre mostrar contenido sensible"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Cuenta de email para las notificaciones:" 217msgstr "Cuenta de email para las notificaciones:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Notificaciones en Telegram (llave del bot e id del chat):" 221msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "Notificaciones en ntfy (servidor ntfy y token):" 225msgstr "Notificaciones en ntfy (servidor ntfy y token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "" 229msgstr ""
230"Plazo máximo de conservación de publicaciones en días (0: usar configuración " 230"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
231"del servidor):" 231"del servidor):"
232 232
233#: html.c:1602 233#: html.c:1680
234msgid "Drop direct messages from people you don't follow" 234msgid "Drop direct messages from people you don't follow"
235msgstr "Descartar mensajes directos de personas a las que no sigue" 235msgstr "Descartar mensajes directos de personas a las que no sigue"
236 236
237#: html.c:1611 237#: html.c:1689
238msgid "This account is a bot" 238msgid "This account is a bot"
239msgstr "Esta cuenta es un bot" 239msgstr "Esta cuenta es un bot"
240 240
241#: html.c:1620 241#: html.c:1698
242msgid "Auto-boost all mentions to this account" 242msgid "Auto-boost all mentions to this account"
243msgstr "Impulsar automáticamente todas las menciones a esta cuenta" 243msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
244 244
245#: html.c:1629 245#: html.c:1707
246msgid "This account is private (posts are not shown through the web)" 246msgid "This account is private (posts are not shown through the web)"
247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)" 247msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
248 248
249#: html.c:1639 249#: html.c:1717
250msgid "Collapse top threads by default" 250msgid "Collapse top threads by default"
251msgstr "Contraer hilo de publicaciones por defecto" 251msgstr "Contraer hilo de publicaciones por defecto"
252 252
253#: html.c:1648 253#: html.c:1726
254msgid "Follow requests must be approved" 254msgid "Follow requests must be approved"
255msgstr "Las solicitudes de seguimiento deben ser aprobadas" 255msgstr "Las solicitudes de seguimiento deben ser aprobadas"
256 256
257#: html.c:1657 257#: html.c:1735
258msgid "Publish follower and following metrics" 258msgid "Publish follower and following metrics"
259msgstr "Mostrar cantidad de seguidores y seguidos" 259msgstr "Mostrar cantidad de seguidores y seguidos"
260 260
261#: html.c:1659 261#: html.c:1737
262msgid "Current location:" 262msgid "Current location:"
263msgstr "Ubicación actual:" 263msgstr "Ubicación actual:"
264 264
265#: html.c:1673 265#: html.c:1751
266msgid "Profile metadata (key=value pairs in each line):" 266msgid "Profile metadata (key=value pairs in each line):"
267msgstr "Metadata del perfil (pares llave=valor en cada línea):" 267msgstr "Metadata del perfil (pares llave=valor en cada línea):"
268 268
269#: html.c:1684 269#: html.c:1762
270msgid "Web interface language:" 270msgid "Web interface language:"
271msgstr "Idioma de la interfaz Web:" 271msgstr "Idioma de la interfaz Web:"
272 272
273#: html.c:1703 273#: html.c:1781
274msgid "New password:" 274msgid "New password:"
275msgstr "Nueva contraseña:" 275msgstr "Nueva contraseña:"
276 276
277#: html.c:1710 277#: html.c:1788
278msgid "Repeat new password:" 278msgid "Repeat new password:"
279msgstr "Repetir nueva contraseña:" 279msgstr "Repetir nueva contraseña:"
280 280
281#: html.c:1720 281#: html.c:1798
282msgid "Update user info" 282msgid "Update user info"
283msgstr "Actualizar información de usuario" 283msgstr "Actualizar información de usuario"
284 284
285#: html.c:1731 285#: html.c:1809
286msgid "Followed hashtags..." 286msgid "Followed hashtags..."
287msgstr "Etiquetas en seguimiento..." 287msgstr "Etiquetas en seguimiento..."
288 288
289#: html.c:1733 html.c:1766 289#: html.c:1811 html.c:1844
290msgid "One hashtag per line" 290msgid "One hashtag per line"
291msgstr "Una etiqueta por línea" 291msgstr "Una etiqueta por línea"
292 292
293#: html.c:1755 html.c:1787 293#: html.c:1833 html.c:1865
294msgid "Update hashtags" 294msgid "Update hashtags"
295msgstr "Actualizar etiquetas" 295msgstr "Actualizar etiquetas"
296 296
297#: html.c:1904 297#: html.c:1982
298msgid "Say you like this post" 298msgid "Say you like this post"
299msgstr "Decir que te gusta esta publicación" 299msgstr "Decir que te gusta esta publicación"
300 300
301#: html.c:1909 html.c:4775 301#: html.c:1987 html.c:5219
302msgid "Unlike" 302msgid "Unlike"
303msgstr "No me gusta" 303msgstr "No me gusta"
304 304
305#: html.c:1909 305#: html.c:1987
306msgid "Nah don't like it that much" 306msgid "Nah don't like it that much"
307msgstr "Nah, no me gusta tanto" 307msgstr "Nah, no me gusta tanto"
308 308
309#: html.c:1915 html.c:4912 309#: html.c:1993 html.c:5356
310msgid "Unpin" 310msgid "Unpin"
311msgstr "Desanclar" 311msgstr "Desanclar"
312 312
313#: html.c:1915 313#: html.c:1993
314msgid "Unpin this post from your timeline" 314msgid "Unpin this post from your timeline"
315msgstr "Desanclar esta publicación de su línea de tiempo" 315msgstr "Desanclar esta publicación de su línea de tiempo"
316 316
317#: html.c:1918 html.c:4907 317#: html.c:1996 html.c:5351
318msgid "Pin" 318msgid "Pin"
319msgstr "Anclar" 319msgstr "Anclar"
320 320
321#: html.c:1918 321#: html.c:1996
322msgid "Pin this post to the top of your timeline" 322msgid "Pin this post to the top of your timeline"
323msgstr "Anclar esta publicación al inicio de su línea de tiempo" 323msgstr "Anclar esta publicación al inicio de su línea de tiempo"
324 324
325#: html.c:1925 325#: html.c:2003
326msgid "Announce this post to your followers" 326msgid "Announce this post to your followers"
327msgstr "Anunciar esta publicación a sus seguidores" 327msgstr "Anunciar esta publicación a sus seguidores"
328 328
329#: html.c:1930 html.c:4783 329#: html.c:2008 html.c:5227
330msgid "Unboost" 330msgid "Unboost"
331msgstr "Eliminar impulso" 331msgstr "Eliminar impulso"
332 332
333#: html.c:1930 333#: html.c:2008
334msgid "I regret I boosted this" 334msgid "I regret I boosted this"
335msgstr "Me arrepiento de haber impulsado esto" 335msgstr "Me arrepiento de haber impulsado esto"
336 336
337#: html.c:1936 html.c:4922 337#: html.c:2014 html.c:5366
338msgid "Unbookmark" 338msgid "Unbookmark"
339msgstr "Eliminar marcador" 339msgstr "Eliminar marcador"
340 340
341#: html.c:1936 341#: html.c:2014
342msgid "Delete this post from your bookmarks" 342msgid "Delete this post from your bookmarks"
343msgstr "Eliminar marcador de esta publicación" 343msgstr "Eliminar marcador de esta publicación"
344 344
345#: html.c:1939 html.c:4917 345#: html.c:2017 html.c:5361
346msgid "Bookmark" 346msgid "Bookmark"
347msgstr "Marcador" 347msgstr "Marcador"
348 348
349#: html.c:1939 349#: html.c:2017
350msgid "Add this post to your bookmarks" 350msgid "Add this post to your bookmarks"
351msgstr "Agregar esta publicación a mis marcadores" 351msgstr "Agregar esta publicación a mis marcadores"
352 352
353#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 353#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
354msgid "Unfollow" 354msgid "Unfollow"
355msgstr "Dejar de seguir" 355msgstr "Dejar de seguir"
356 356
357#: html.c:1945 html.c:3387 357#: html.c:2023 html.c:3763 html.c:4042
358msgid "Stop following this user's activity" 358msgid "Stop following this user's activity"
359msgstr "Dejar de seguir la actividad de este usuario" 359msgstr "Dejar de seguir la actividad de este usuario"
360 360
361#: html.c:1949 html.c:3401 361#: html.c:2027 html.c:3777 html.c:4044
362msgid "Start following this user's activity" 362msgid "Start following this user's activity"
363msgstr "Seguir la actividad de este usuario" 363msgstr "Seguir la actividad de este usuario"
364 364
365#: html.c:1955 html.c:4860 365#: html.c:2033 html.c:5304
366msgid "Unfollow Group" 366msgid "Unfollow Group"
367msgstr "Dejar de seguir este Grupo" 367msgstr "Dejar de seguir este Grupo"
368 368
369#: html.c:1956 369#: html.c:2034
370msgid "Stop following this group or channel" 370msgid "Stop following this group or channel"
371msgstr "Dejar de seguir este grupo o canal" 371msgstr "Dejar de seguir este grupo o canal"
372 372
373#: html.c:1960 html.c:4847 373#: html.c:2038 html.c:5291
374msgid "Follow Group" 374msgid "Follow Group"
375msgstr "Seguir Grupo" 375msgstr "Seguir Grupo"
376 376
377#: html.c:1961 377#: html.c:2039
378msgid "Start following this group or channel" 378msgid "Start following this group or channel"
379msgstr "Seguir grupo o canal" 379msgstr "Seguir grupo o canal"
380 380
381#: html.c:1966 html.c:3423 html.c:4791 381#: html.c:2044 html.c:3799 html.c:5235
382msgid "MUTE" 382msgid "MUTE"
383msgstr "SILENCIAR" 383msgstr "SILENCIAR"
384 384
385#: html.c:1967 385#: html.c:2045
386msgid "Block any activity from this user forever" 386msgid "Block any activity from this user forever"
387msgstr "Bloquear toda la actividad de este usuario para siempre" 387msgstr "Bloquear toda la actividad de este usuario para siempre"
388 388
389#: html.c:1972 html.c:3405 html.c:4877 389#: html.c:2050 html.c:3781 html.c:5321
390msgid "Delete" 390msgid "Delete"
391msgstr "Eliminar" 391msgstr "Eliminar"
392 392
393#: html.c:1972 393#: html.c:2050
394msgid "Delete this post" 394msgid "Delete this post"
395msgstr "Eliminar esta publicación" 395msgstr "Eliminar esta publicación"
396 396
397#: html.c:1975 html.c:4799 397#: html.c:2053 html.c:5243
398msgid "Hide" 398msgid "Hide"
399msgstr "Ocultar" 399msgstr "Ocultar"
400 400
401#: html.c:1975 401#: html.c:2053
402msgid "Hide this post and its children" 402msgid "Hide this post and its children"
403msgstr "Ocultar esta publicación y sus respuestas" 403msgstr "Ocultar esta publicación y sus respuestas"
404 404
405#: html.c:2017 405#: html.c:2095
406msgid "Edit..." 406msgid "Edit..."
407msgstr "Editar..." 407msgstr "Editar..."
408 408
409#: html.c:2039 409#: html.c:2133
410msgid "Reply..." 410msgid "Reply..."
411msgstr "Responder..." 411msgstr "Responder..."
412 412
413#: html.c:2090 413#: html.c:2184
414msgid "Truncated (too deep)" 414msgid "Truncated (too deep)"
415msgstr "Truncado (demasiado profundo)" 415msgstr "Truncado (demasiado profundo)"
416 416
417#: html.c:2108 417#: html.c:2202
418msgid "follows you" 418msgid "follows you"
419msgstr "te sigue" 419msgstr "te sigue"
420 420
421#: html.c:2182 421#: html.c:2276
422msgid "Pinned" 422msgid "Pinned"
423msgstr "Anclado" 423msgstr "Anclado"
424 424
425#: html.c:2190 425#: html.c:2284
426msgid "Bookmarked" 426msgid "Bookmarked"
427msgstr "Marcado" 427msgstr "Marcado"
428 428
429#: html.c:2198 429#: html.c:2292
430msgid "Poll" 430msgid "Poll"
431msgstr "Encuesta" 431msgstr "Encuesta"
432 432
433#: html.c:2205 433#: html.c:2299
434msgid "Voted" 434msgid "Voted"
435msgstr "Votado" 435msgstr "Votado"
436 436
437#: html.c:2214 437#: html.c:2308
438msgid "Event" 438msgid "Event"
439msgstr "Evento" 439msgstr "Evento"
440 440
441#: html.c:2246 html.c:2275 441#: html.c:2340 html.c:2369
442msgid "boosted" 442msgid "boosted"
443msgstr "impulsado" 443msgstr "impulsado"
444 444
445#: html.c:2289 445#: html.c:2383
446msgid "in reply to" 446msgid "in reply to"
447msgstr "en respuesta a" 447msgstr "en respuesta a"
448 448
449#: html.c:2345 449#: html.c:2439
450msgid " [SENSITIVE CONTENT]" 450msgid " [SENSITIVE CONTENT]"
451msgstr " [CONTENIDO SENSIBLE]" 451msgstr " [CONTENIDO SENSIBLE]"
452 452
453#: html.c:2512 453#: html.c:2796
454msgid "Vote" 454msgid "Vote"
455msgstr "Votar" 455msgstr "Votar"
456 456
457#: html.c:2522 457#: html.c:2806
458msgid "Closed" 458msgid "Closed"
459msgstr "Cerrado" 459msgstr "Cerrado"
460 460
461#: html.c:2547 461#: html.c:2831
462msgid "Closes in" 462msgid "Closes in"
463msgstr "Cierra en" 463msgstr "Cierra en"
464 464
465#: html.c:2627 465#: html.c:2911
466msgid "Video" 466msgid "Video"
467msgstr "Video" 467msgstr "Video"
468 468
469#: html.c:2642 469#: html.c:2926
470msgid "Audio" 470msgid "Audio"
471msgstr "Audio" 471msgstr "Audio"
472 472
473#: html.c:2670 473#: html.c:2954
474msgid "Attachment" 474msgid "Attachment"
475msgstr "Adjunto" 475msgstr "Adjunto"
476 476
477#: html.c:2684 477#: html.c:2968
478msgid "Alt..." 478msgid "Alt..."
479msgstr "Alt..." 479msgstr "Alt..."
480 480
481#: html.c:2697 481#: html.c:2981
482msgid "Source channel or community" 482msgid "Source channel or community"
483msgstr "Canal o comunidad de origen" 483msgstr "Canal o comunidad de origen"
484 484
485#: html.c:2791 485#: html.c:3075
486msgid "Time: " 486msgid "Time: "
487msgstr "Hora: " 487msgstr "Hora: "
488 488
489#: html.c:2872 489#: html.c:3156
490msgid "Older..." 490msgid "Older..."
491msgstr "Más antiguo..." 491msgstr "Más antiguo..."
492 492
493#: html.c:2974 493#: html.c:3258
494msgid "about this site" 494msgid "about this site"
495msgstr "acerca de este sitio" 495msgstr "acerca de este sitio"
496 496
497#: html.c:2976 497#: html.c:3260
498msgid "powered by " 498msgid "powered by "
499msgstr "provisto por " 499msgstr "provisto por "
500 500
501#: html.c:3041 501#: html.c:3329
502msgid "Dismiss" 502msgid "Dismiss"
503msgstr "Descartar" 503msgstr "Descartar"
504 504
505#: html.c:3058 505#: html.c:3346
506#, c-format 506#, c-format
507msgid "Timeline for list '%s'" 507msgid "Timeline for list '%s'"
508msgstr "Línea de tiempo de la lista '%s'" 508msgstr "Línea de tiempo de la lista '%s'"
509 509
510#: html.c:3077 html.c:4169 510#: html.c:3365 html.c:4589
511msgid "Pinned posts" 511msgid "Pinned posts"
512msgstr "Publicaciones ancladas" 512msgstr "Publicaciones ancladas"
513 513
514#: html.c:3089 html.c:4184 514#: html.c:3377 html.c:4604
515msgid "Bookmarked posts" 515msgid "Bookmarked posts"
516msgstr "Publicaciones marcadas" 516msgstr "Publicaciones marcadas"
517 517
518#: html.c:3101 html.c:4199 518#: html.c:3389 html.c:4619
519msgid "Post drafts" 519msgid "Post drafts"
520msgstr "Borradores de publicaciones" 520msgstr "Borradores de publicaciones"
521 521
522#: html.c:3177 522#: html.c:3465
523msgid "No more unseen posts" 523msgid "No more unseen posts"
524msgstr "No quedan publicaciones sin ver" 524msgstr "No quedan publicaciones sin ver"
525 525
526#: html.c:3181 html.c:3290 526#: html.c:3469 html.c:3578
527msgid "Back to top" 527msgid "Back to top"
528msgstr "Volver al inicio" 528msgstr "Volver al inicio"
529 529
530#: html.c:3243 530#: html.c:3531
531msgid "History" 531msgid "History"
532msgstr "Historia" 532msgstr "Historia"
533 533
534#: html.c:3295 html.c:3734 534#: html.c:3583 html.c:4149
535msgid "More..." 535msgid "More..."
536msgstr "Más..." 536msgstr "Más..."
537 537
538#: html.c:3391 html.c:4813 538#: html.c:3767 html.c:5257
539msgid "Unlimit" 539msgid "Unlimit"
540msgstr "Sin límite" 540msgstr "Sin límite"
541 541
542#: html.c:3392 542#: html.c:3768
543msgid "Allow announces (boosts) from this user" 543msgid "Allow announces (boosts) from this user"
544msgstr "Permitir anuncios (impulsos) de este usuario" 544msgstr "Permitir anuncios (impulsos) de este usuario"
545 545
546#: html.c:3395 html.c:4809 546#: html.c:3771 html.c:5253
547msgid "Limit" 547msgid "Limit"
548msgstr "Límite" 548msgstr "Límite"
549 549
550#: html.c:3396 550#: html.c:3772
551msgid "Block announces (boosts) from this user" 551msgid "Block announces (boosts) from this user"
552msgstr "Bloquear anuncios (impulsos) de este usuario" 552msgstr "Bloquear anuncios (impulsos) de este usuario"
553 553
554#: html.c:3405 554#: html.c:3781
555msgid "Delete this user" 555msgid "Delete this user"
556msgstr "Eliminar este usuario" 556msgstr "Eliminar este usuario"
557 557
558#: html.c:3410 html.c:4927 558#: html.c:3786 html.c:5371
559msgid "Approve" 559msgid "Approve"
560msgstr "Aprobar" 560msgstr "Aprobar"
561 561
562#: html.c:3411 562#: html.c:3787
563msgid "Approve this follow request" 563msgid "Approve this follow request"
564msgstr "Aprobar solicitud de seguimiento" 564msgstr "Aprobar solicitud de seguimiento"
565 565
566#: html.c:3414 html.c:4951 566#: html.c:3790 html.c:5395
567msgid "Discard" 567msgid "Discard"
568msgstr "Descartar" 568msgstr "Descartar"
569 569
570#: html.c:3414 570#: html.c:3790
571msgid "Discard this follow request" 571msgid "Discard this follow request"
572msgstr "Descartar solicitud de seguimiento" 572msgstr "Descartar solicitud de seguimiento"
573 573
574#: html.c:3419 html.c:4795 574#: html.c:3795 html.c:5239
575msgid "Unmute" 575msgid "Unmute"
576msgstr "Dejar de SILENCIAR" 576msgstr "Dejar de SILENCIAR"
577 577
578#: html.c:3420 578#: html.c:3796
579msgid "Stop blocking activities from this user" 579msgid "Stop blocking activities from this user"
580msgstr "Dejar de bloquear actividad de este usuario" 580msgstr "Dejar de bloquear actividad de este usuario"
581 581
582#: html.c:3424 582#: html.c:3800
583msgid "Block any activity from this user" 583msgid "Block any activity from this user"
584msgstr "Bloquear toda actividad de este usuario" 584msgstr "Bloquear toda actividad de este usuario"
585 585
586#: html.c:3432 586#: html.c:3808
587msgid "Direct Message..." 587msgid "Direct Message..."
588msgstr "Mensaje Directo..." 588msgstr "Mensaje Directo..."
589 589
590#: html.c:3467 590#: html.c:3843
591msgid "Pending follow confirmations" 591msgid "Pending follow confirmations"
592msgstr "Confirmaciones de seguimiento pendientes" 592msgstr "Confirmaciones de seguimiento pendientes"
593 593
594#: html.c:3471 594#: html.c:3847
595msgid "People you follow" 595msgid "People you follow"
596msgstr "Personas que sigues" 596msgstr "Personas que sigues"
597 597
598#: html.c:3472 598#: html.c:3848
599msgid "People that follow you" 599msgid "People that follow you"
600msgstr "Personas que te siguen" 600msgstr "Personas que te siguen"
601 601
602#: html.c:3511 602#: html.c:3887
603msgid "Clear all" 603msgid "Clear all"
604msgstr "Limpiar todo" 604msgstr "Limpiar todo"
605 605
606#: html.c:3571 606#: html.c:3951
607msgid "Mention" 607msgid "Mention"
608msgstr "Mención" 608msgstr "Mención"
609 609
610#: html.c:3574 610#: html.c:3954
611msgid "Finished poll" 611msgid "Finished poll"
612msgstr "Encuesta finalizada" 612msgstr "Encuesta finalizada"
613 613
614#: html.c:3590 614#: html.c:3979
615msgid "Follow Request" 615msgid "Follow Request"
616msgstr "Solicitud de Seguimiento" 616msgstr "Solicitud de Seguimiento"
617 617
618#: html.c:3674 618#: html.c:4089
619msgid "Context" 619msgid "Context"
620msgstr "Contexto" 620msgstr "Contexto"
621 621
622#: html.c:3692 622#: html.c:4107
623msgid "New" 623msgid "New"
624msgstr "Nuevo" 624msgstr "Nuevo"
625 625
626#: html.c:3707 626#: html.c:4122
627msgid "Already seen" 627msgid "Already seen"
628msgstr "Ya visto" 628msgstr "Ya visto"
629 629
630#: html.c:3722 630#: html.c:4137
631msgid "None" 631msgid "None"
632msgstr "Ninguno" 632msgstr "Ninguno"
633 633
634#: html.c:3994 634#: html.c:4414
635#, c-format 635#, c-format
636msgid "Search results for account %s" 636msgid "Search results for account %s"
637msgstr "Buscar resultados para la cuenta %s" 637msgstr "Buscar resultados para la cuenta %s"
638 638
639#: html.c:4001 639#: html.c:4421
640#, c-format 640#, c-format
641msgid "Account %s not found" 641msgid "Account %s not found"
642msgstr "No se encontró la cuenta %s" 642msgstr "No se encontró la cuenta %s"
643 643
644#: html.c:4032 644#: html.c:4452
645#, c-format 645#, c-format
646msgid "Search results for tag %s" 646msgid "Search results for tag %s"
647msgstr "Buscar resultados para la etiqueta %s" 647msgstr "Buscar resultados para la etiqueta %s"
648 648
649#: html.c:4032 649#: html.c:4452
650#, c-format 650#, c-format
651msgid "Nothing found for tag %s" 651msgid "Nothing found for tag %s"
652msgstr "No se encontró nada con la etiqueta %s" 652msgstr "No se encontró nada con la etiqueta %s"
653 653
654#: html.c:4048 654#: html.c:4468
655#, c-format 655#, c-format
656msgid "Search results for '%s' (may be more)" 656msgid "Search results for '%s' (may be more)"
657msgstr "Resultados de búsqueda para '%s' (puede haber más)" 657msgstr "Resultados de búsqueda para '%s' (puede haber más)"
658 658
659#: html.c:4051 659#: html.c:4471
660#, c-format 660#, c-format
661msgid "Search results for '%s'" 661msgid "Search results for '%s'"
662msgstr "Resultados de búsqueda para '%s'" 662msgstr "Resultados de búsqueda para '%s'"
663 663
664#: html.c:4054 664#: html.c:4474
665#, c-format 665#, c-format
666msgid "No more matches for '%s'" 666msgid "No more matches for '%s'"
667msgstr "No hay más coincidencias para '%s'" 667msgstr "No hay más coincidencias para '%s'"
668 668
669#: html.c:4056 669#: html.c:4476
670#, c-format 670#, c-format
671msgid "Nothing found for '%s'" 671msgid "Nothing found for '%s'"
672msgstr "No se encontró nada para '%s'" 672msgstr "No se encontró nada para '%s'"
673 673
674#: html.c:4154 674#: html.c:4574
675msgid "Showing instance timeline" 675msgid "Showing instance timeline"
676msgstr "Mostrando línea de tiempo de la instancia" 676msgstr "Mostrando línea de tiempo de la instancia"
677 677
678#: html.c:4237 678#: html.c:4657
679#, c-format 679#, c-format
680msgid "Showing timeline for list '%s'" 680msgid "Showing timeline for list '%s'"
681msgstr "Mostrando línea de tiempo de la lista '%s'" 681msgstr "Mostrando línea de tiempo de la lista '%s'"
682 682
683#: httpd.c:258 683#: httpd.c:259
684#, c-format 684#, c-format
685msgid "Search results for tag #%s" 685msgid "Search results for tag #%s"
686msgstr "Resultado de búsqueda para la etiqueta #%s" 686msgstr "Resultado de búsqueda para la etiqueta #%s"
687 687
688#: httpd.c:267 688#: httpd.c:268
689msgid "Recent posts by users in this instance" 689msgid "Recent posts by users in this instance"
690msgstr "Publicaciones recientes de los usuarios de esta instancia" 690msgstr "Publicaciones recientes de los usuarios de esta instancia"
691 691
692#: html.c:1764 692#: html.c:1842
693msgid "Blocked hashtags..." 693msgid "Blocked hashtags..."
694msgstr "Etiquetas bloqueadas..." 694msgstr "Etiquetas bloqueadas..."
695 695
696#: html.c:518 696#: html.c:574
697msgid "Optional URL to reply to" 697msgid "Optional URL to reply to"
698msgstr "URL opcional a la que responder" 698msgstr "URL opcional a la que responder"
699 699
700#: html.c:695 700#: html.c:751
701msgid "" 701msgid ""
702"Option 1...\n" 702"Option 1...\n"
703"Option 2...\n" 703"Option 2...\n"
@@ -709,91 +709,103 @@ msgstr ""
709"Opción 3...\n" 709"Opción 3...\n"
710"..." 710"..."
711 711
712#: html.c:1558 712#: html.c:1636
713msgid "Bot API key" 713msgid "Bot API key"
714msgstr "Clave del API del Bot" 714msgstr "Clave del API del Bot"
715 715
716#: html.c:1564 716#: html.c:1642
717msgid "Chat id" 717msgid "Chat id"
718msgstr "Identificador de chat" 718msgstr "Identificador de chat"
719 719
720#: html.c:1572 720#: html.c:1650
721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 721msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)" 722msgstr "Servidor ntfy - URL completa (example: https://ntfy.sh/YourTopic)"
723 723
724#: html.c:1578 724#: html.c:1656
725msgid "ntfy token - if needed" 725msgid "ntfy token - if needed"
726msgstr "Token ntft - si es necesario" 726msgstr "Token ntft - si es necesario"
727 727
728#: html.c:3078 728#: html.c:3366
729msgid "pinned" 729msgid "pinned"
730msgstr "Anclados" 730msgstr "Anclados"
731 731
732#: html.c:3090 732#: html.c:3378
733msgid "bookmarks" 733msgid "bookmarks"
734msgstr "Marcados" 734msgstr "Marcados"
735 735
736#: html.c:3102 736#: html.c:3390
737msgid "drafts" 737msgid "drafts"
738msgstr "Borradores" 738msgstr "Borradores"
739 739
740#: html.c:584 740#: html.c:640
741msgid "Scheduled post..." 741msgid "Scheduled post..."
742msgstr "Envío programado..." 742msgstr "Envío programado..."
743 743
744#: html.c:3113 html.c:4214 744#: html.c:3401 html.c:4634
745msgid "Scheduled posts" 745msgid "Scheduled posts"
746msgstr "Envíos programados" 746msgstr "Envíos programados"
747 747
748#: html.c:3114 748#: html.c:3402
749msgid "scheduled posts" 749msgid "scheduled posts"
750msgstr "envíos programados" 750msgstr "envíos programados"
751 751
752#: html.c:578 752#: html.c:634
753#, c-format 753#, c-format
754msgid "Post date and time (timezone: %s):" 754msgid "Post date and time (timezone: %s):"
755msgstr "Fecha y hora de publicación (zona horaria: %s):" 755msgstr "Fecha y hora de publicación (zona horaria: %s):"
756 756
757#: html.c:1689 757#: html.c:1767
758msgid "Time zone:" 758msgid "Time zone:"
759msgstr "Zona horaria:" 759msgstr "Zona horaria:"
760 760
761#: html.c:559 761#: html.c:615
762msgid "Language:" 762msgid "Language:"
763msgstr "Idioma:" 763msgstr "Idioma:"
764 764
765#: html.c:1580 765#: html.c:1658
766msgid "Notify webhook:" 766msgid "Notify webhook:"
767msgstr "Webhook de notificación:" 767msgstr "Webhook de notificación:"
768 768
769#: html.c:1586 769#: html.c:1664
770msgid "http://example.com/webhook" 770msgid "http://example.com/webhook"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1694 773#: html.c:1772
774msgid "Languages you usually post in:" 774msgid "Languages you usually post in:"
775msgstr "Idiomas en los que sueles escribir:" 775msgstr "Idiomas en los que sueles escribir:"
776 776
777#: html.c:1700 777#: html.c:1778
778msgid "en fr es de_AT" 778msgid "en fr es de_AT"
779msgstr "" 779msgstr ""
780 780
781#: html.c:460 781#: html.c:428
782msgid "Visibility: " 782msgid "Visibility: "
783msgstr "Visibilidad: " 783msgstr "Visibilidad: "
784 784
785#: html.c:468
786msgid "Public" 785msgid "Public"
787msgstr "Público" 786msgstr "Público"
788 787
789#: html.c:477
790msgid "Unlisted" 788msgid "Unlisted"
791msgstr "No listado" 789msgstr "No listado"
792 790
793#: html.c:486
794msgid "Followers-only" 791msgid "Followers-only"
795msgstr "Solo seguidores" 792msgstr "Solo seguidores"
796 793
797#: html.c:495
798msgid "Direct Message" 794msgid "Direct Message"
799msgstr "Mensaje directo" 795msgstr "Mensaje directo"
796
797#: html.c:488 html.c:2534 html.c:2559 html.c:5177
798msgid "EmojiUnreact"
799msgstr ""
800
801#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
802msgid "EmojiReact"
803msgstr ""
804
805#: html.c:2115
806msgid "Emoji react..."
807msgstr "Reaccionar con un emoji..."
808
809#: html.c:2609
810msgid "Emoji reactions: "
811msgstr "Reacciones con emoji: "
diff --git a/po/fi.po b/po/fi.po
index 530a660..29269be 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: fi\n" 8"Language: fi\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Arkaluontoista sisältöä: " 13msgstr "Arkaluontoista sisältöä: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Arkaluontoisen sisällön kuvaus" 17msgstr "Arkaluontoisen sisällön kuvaus"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Vain mainituille: " 20msgstr "Vain mainituille: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Vastaus (osoite): " 24msgstr "Vastaus (osoite): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Älä lähetä, tallenna luonnoksena" 28msgstr "Älä lähetä, tallenna luonnoksena"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Luonnos:" 32msgstr "Luonnos:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Liitteet..." 36msgstr "Liitteet..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Tiedosto:" 40msgstr "Tiedosto:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Tyhjennä kenttä poistaaksesi liiteen" 44msgstr "Tyhjennä kenttä poistaaksesi liiteen"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Liitteen kuvaus" 48msgstr "Liitteen kuvaus"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Kysely..." 52msgstr "Kysely..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Kyselyn vaihtoehdot (riveittäin, korkeintaan 8):" 56msgstr "Kyselyn vaihtoehdot (riveittäin, korkeintaan 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Yksi valinta" 60msgstr "Yksi valinta"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Monta valintaa" 64msgstr "Monta valintaa"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Päättyy viiden minuutin päästä" 68msgstr "Päättyy viiden minuutin päästä"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Päättyy tunnin päästä" 72msgstr "Päättyy tunnin päästä"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Päättyy päivän päästä" 76msgstr "Päättyy päivän päästä"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Julkaise" 80msgstr "Julkaise"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Sivuston kuvaus" 84msgstr "Sivuston kuvaus"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Ylläpitäjän sähköposti" 88msgstr "Ylläpitäjän sähköposti"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Ylläpitäjän tili" 92msgstr "Ylläpitäjän tili"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "Seuraa %d, %d seuraajaa" 97msgstr "Seuraa %d, %d seuraajaa"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "yksityinen" 105msgstr "yksityinen"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "julkinen" 109msgstr "julkinen"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "ilmoitukset" 113msgstr "ilmoitukset"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "ihmiset" 117msgstr "ihmiset"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "palvelin" 121msgstr "palvelin"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,574 +128,574 @@ msgstr ""
128"Etsi julkaisuja osoitteella tai sisällön perusteella, @käyttäjä@palvelin " 128"Etsi julkaisuja osoitteella tai sisällön perusteella, @käyttäjä@palvelin "
129"tai #tagi" 129"tai #tagi"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Sisälöhaku" 133msgstr "Sisälöhaku"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "varmistettu linkki" 137msgstr "varmistettu linkki"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Sijainti: " 141msgstr "Sijainti: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Uusi julkaisu..." 145msgstr "Uusi julkaisu..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "Mitä on mielessäsi?" 149msgstr "Mitä on mielessäsi?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Toiminnot..." 153msgstr "Toiminnot..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Seuraa" 157msgstr "Seuraa"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(osoite tai käyttäjä@palvelin)" 161msgstr "(osoite tai käyttäjä@palvelin)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Tehosta" 165msgstr "Tehosta"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(osoite)" 169msgstr "(osoite)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Tykkää" 173msgstr "Tykkää"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Käyttäjäasetukset..." 177msgstr "Käyttäjäasetukset..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Näytetty nimi:" 181msgstr "Näytetty nimi:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Nimesi" 185msgstr "Nimesi"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar: " 189msgstr "Avatar: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Poista nykyinen avatar" 193msgstr "Poista nykyinen avatar"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Otsikkokuva: " 197msgstr "Otsikkokuva: "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Poista nykyinen otsikkokuva" 201msgstr "Poista nykyinen otsikkokuva"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Kuvaus:" 205msgstr "Kuvaus:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Kirjoita itsestäsi tähän..." 209msgstr "Kirjoita itsestäsi tähän..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Näytä arkaluontoinen sisältö aina" 213msgstr "Näytä arkaluontoinen sisältö aina"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Sähköposti ilmoituksille:" 217msgstr "Sähköposti ilmoituksille:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Telegram-ilmoitukset (botin avain ja chat id):" 221msgstr "Telegram-ilmoitukset (botin avain ja chat id):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "nfty-ilmoitukset (ntfy-palvelin ja token):" 225msgstr "nfty-ilmoitukset (ntfy-palvelin ja token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "Säilytä julkaisut korkeintaan (päivää, 0: palvelimen asetukset)" 229msgstr "Säilytä julkaisut korkeintaan (päivää, 0: palvelimen asetukset)"
230 230
231#: html.c:1602 231#: html.c:1680
232msgid "Drop direct messages from people you don't follow" 232msgid "Drop direct messages from people you don't follow"
233msgstr "Poista yksityisviestit ihmisiltä, joita et seuraa" 233msgstr "Poista yksityisviestit ihmisiltä, joita et seuraa"
234 234
235#: html.c:1611 235#: html.c:1689
236msgid "This account is a bot" 236msgid "This account is a bot"
237msgstr "Tämä tili on botti" 237msgstr "Tämä tili on botti"
238 238
239#: html.c:1620 239#: html.c:1698
240msgid "Auto-boost all mentions to this account" 240msgid "Auto-boost all mentions to this account"
241msgstr "Tehosta tilin maininnat automaattisesti" 241msgstr "Tehosta tilin maininnat automaattisesti"
242 242
243#: html.c:1629 243#: html.c:1707
244msgid "This account is private (posts are not shown through the web)" 244msgid "This account is private (posts are not shown through the web)"
245msgstr "Tili on yksityinen (julkaisuja ei näytetä sivustolla)" 245msgstr "Tili on yksityinen (julkaisuja ei näytetä sivustolla)"
246 246
247#: html.c:1639 247#: html.c:1717
248msgid "Collapse top threads by default" 248msgid "Collapse top threads by default"
249msgstr "Avaa säikeet automaattisesti" 249msgstr "Avaa säikeet automaattisesti"
250 250
251#: html.c:1648 251#: html.c:1726
252msgid "Follow requests must be approved" 252msgid "Follow requests must be approved"
253msgstr "Vaadi hyväksyntä seurantapyynnöille" 253msgstr "Vaadi hyväksyntä seurantapyynnöille"
254 254
255#: html.c:1657 255#: html.c:1735
256msgid "Publish follower and following metrics" 256msgid "Publish follower and following metrics"
257msgstr "Julkaise seuraamistilastot" 257msgstr "Julkaise seuraamistilastot"
258 258
259#: html.c:1659 259#: html.c:1737
260msgid "Current location:" 260msgid "Current location:"
261msgstr "Nykyinen sijainti:" 261msgstr "Nykyinen sijainti:"
262 262
263#: html.c:1673 263#: html.c:1751
264msgid "Profile metadata (key=value pairs in each line):" 264msgid "Profile metadata (key=value pairs in each line):"
265msgstr "Profiilin metadata (avain=arvo, riveittäin):" 265msgstr "Profiilin metadata (avain=arvo, riveittäin):"
266 266
267#: html.c:1684 267#: html.c:1762
268msgid "Web interface language:" 268msgid "Web interface language:"
269msgstr "Käyttöliitymän kieli:" 269msgstr "Käyttöliitymän kieli:"
270 270
271#: html.c:1703 271#: html.c:1781
272msgid "New password:" 272msgid "New password:"
273msgstr "Uusi salasana:" 273msgstr "Uusi salasana:"
274 274
275#: html.c:1710 275#: html.c:1788
276msgid "Repeat new password:" 276msgid "Repeat new password:"
277msgstr "Toista salasana:" 277msgstr "Toista salasana:"
278 278
279#: html.c:1720 279#: html.c:1798
280msgid "Update user info" 280msgid "Update user info"
281msgstr "Päivitä käyttäjätiedot" 281msgstr "Päivitä käyttäjätiedot"
282 282
283#: html.c:1731 283#: html.c:1809
284msgid "Followed hashtags..." 284msgid "Followed hashtags..."
285msgstr "Seuratut aihetunnisteet..." 285msgstr "Seuratut aihetunnisteet..."
286 286
287#: html.c:1733 html.c:1766 287#: html.c:1811 html.c:1844
288msgid "One hashtag per line" 288msgid "One hashtag per line"
289msgstr "Aihetunnisteet, riveittäin" 289msgstr "Aihetunnisteet, riveittäin"
290 290
291#: html.c:1755 html.c:1787 291#: html.c:1833 html.c:1865
292msgid "Update hashtags" 292msgid "Update hashtags"
293msgstr "Päivitä aihetunnisteet" 293msgstr "Päivitä aihetunnisteet"
294 294
295#: html.c:1904 295#: html.c:1982
296msgid "Say you like this post" 296msgid "Say you like this post"
297msgstr "Tykkää tästä julkaisusta" 297msgstr "Tykkää tästä julkaisusta"
298 298
299#: html.c:1909 html.c:4775 299#: html.c:1987 html.c:5219
300msgid "Unlike" 300msgid "Unlike"
301msgstr "Poista tykkäys" 301msgstr "Poista tykkäys"
302 302
303#: html.c:1909 303#: html.c:1987
304msgid "Nah don't like it that much" 304msgid "Nah don't like it that much"
305msgstr "Ei ole omaan makuuni" 305msgstr "Ei ole omaan makuuni"
306 306
307#: html.c:1915 html.c:4912 307#: html.c:1993 html.c:5356
308msgid "Unpin" 308msgid "Unpin"
309msgstr "Poista kiinnitys" 309msgstr "Poista kiinnitys"
310 310
311#: html.c:1915 311#: html.c:1993
312msgid "Unpin this post from your timeline" 312msgid "Unpin this post from your timeline"
313msgstr "Poista julkaisun kiinnitys aikajanalle" 313msgstr "Poista julkaisun kiinnitys aikajanalle"
314 314
315#: html.c:1918 html.c:4907 315#: html.c:1996 html.c:5351
316msgid "Pin" 316msgid "Pin"
317msgstr "Kiinnitä" 317msgstr "Kiinnitä"
318 318
319#: html.c:1918 319#: html.c:1996
320msgid "Pin this post to the top of your timeline" 320msgid "Pin this post to the top of your timeline"
321msgstr "Kiinnitä julkaisu aikajanasi alkuun" 321msgstr "Kiinnitä julkaisu aikajanasi alkuun"
322 322
323#: html.c:1925 323#: html.c:2003
324msgid "Announce this post to your followers" 324msgid "Announce this post to your followers"
325msgstr "Ilmoita julkaisusta seuraajillesi" 325msgstr "Ilmoita julkaisusta seuraajillesi"
326 326
327#: html.c:1930 html.c:4783 327#: html.c:2008 html.c:5227
328msgid "Unboost" 328msgid "Unboost"
329msgstr "Poista tehostus" 329msgstr "Poista tehostus"
330 330
331#: html.c:1930 331#: html.c:2008
332msgid "I regret I boosted this" 332msgid "I regret I boosted this"
333msgstr "Kadun tehostaneeni tätä" 333msgstr "Kadun tehostaneeni tätä"
334 334
335#: html.c:1936 html.c:4922 335#: html.c:2014 html.c:5366
336msgid "Unbookmark" 336msgid "Unbookmark"
337msgstr "Poista kirjanmerkki" 337msgstr "Poista kirjanmerkki"
338 338
339#: html.c:1936 339#: html.c:2014
340msgid "Delete this post from your bookmarks" 340msgid "Delete this post from your bookmarks"
341msgstr "Poista julkaisu kirjanmerkeistäsi" 341msgstr "Poista julkaisu kirjanmerkeistäsi"
342 342
343#: html.c:1939 html.c:4917 343#: html.c:2017 html.c:5361
344msgid "Bookmark" 344msgid "Bookmark"
345msgstr "Lisää kirjanmerkki" 345msgstr "Lisää kirjanmerkki"
346 346
347#: html.c:1939 347#: html.c:2017
348msgid "Add this post to your bookmarks" 348msgid "Add this post to your bookmarks"
349msgstr "Lisää julkaisu kirjanmerkkeihisi" 349msgstr "Lisää julkaisu kirjanmerkkeihisi"
350 350
351#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 351#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
352msgid "Unfollow" 352msgid "Unfollow"
353msgstr "Älä seuraa" 353msgstr "Älä seuraa"
354 354
355#: html.c:1945 html.c:3387 355#: html.c:2023 html.c:3763 html.c:4042
356msgid "Stop following this user's activity" 356msgid "Stop following this user's activity"
357msgstr "Lakkaa seuraamasta käyttäjän toimintaa" 357msgstr "Lakkaa seuraamasta käyttäjän toimintaa"
358 358
359#: html.c:1949 html.c:3401 359#: html.c:2027 html.c:3777 html.c:4044
360msgid "Start following this user's activity" 360msgid "Start following this user's activity"
361msgstr "Seuraa käyttäjän toimintaa" 361msgstr "Seuraa käyttäjän toimintaa"
362 362
363#: html.c:1955 html.c:4860 363#: html.c:2033 html.c:5304
364msgid "Unfollow Group" 364msgid "Unfollow Group"
365msgstr "Älä seuraa ryhmää" 365msgstr "Älä seuraa ryhmää"
366 366
367#: html.c:1956 367#: html.c:2034
368msgid "Stop following this group or channel" 368msgid "Stop following this group or channel"
369msgstr "Lopeta ryhnän tai kanavan seuraaminen" 369msgstr "Lopeta ryhnän tai kanavan seuraaminen"
370 370
371#: html.c:1960 html.c:4847 371#: html.c:2038 html.c:5291
372msgid "Follow Group" 372msgid "Follow Group"
373msgstr "Seuraa ryhmää" 373msgstr "Seuraa ryhmää"
374 374
375#: html.c:1961 375#: html.c:2039
376msgid "Start following this group or channel" 376msgid "Start following this group or channel"
377msgstr "Seuraa tätä ryhmää tai kanavaa" 377msgstr "Seuraa tätä ryhmää tai kanavaa"
378 378
379#: html.c:1966 html.c:3423 html.c:4791 379#: html.c:2044 html.c:3799 html.c:5235
380msgid "MUTE" 380msgid "MUTE"
381msgstr "VAIMENNA" 381msgstr "VAIMENNA"
382 382
383#: html.c:1967 383#: html.c:2045
384msgid "Block any activity from this user forever" 384msgid "Block any activity from this user forever"
385msgstr "Estä kaikki toiminta tältä käyttäjältä" 385msgstr "Estä kaikki toiminta tältä käyttäjältä"
386 386
387#: html.c:1972 html.c:3405 html.c:4877 387#: html.c:2050 html.c:3781 html.c:5321
388msgid "Delete" 388msgid "Delete"
389msgstr "Poista" 389msgstr "Poista"
390 390
391#: html.c:1972 391#: html.c:2050
392msgid "Delete this post" 392msgid "Delete this post"
393msgstr "Poista julkaisu" 393msgstr "Poista julkaisu"
394 394
395#: html.c:1975 html.c:4799 395#: html.c:2053 html.c:5243
396msgid "Hide" 396msgid "Hide"
397msgstr "Piilota" 397msgstr "Piilota"
398 398
399#: html.c:1975 399#: html.c:2053
400msgid "Hide this post and its children" 400msgid "Hide this post and its children"
401msgstr "Piilota julkaisu ja vastaukset" 401msgstr "Piilota julkaisu ja vastaukset"
402 402
403#: html.c:2017 403#: html.c:2095
404msgid "Edit..." 404msgid "Edit..."
405msgstr "Muokkaa..." 405msgstr "Muokkaa..."
406 406
407#: html.c:2039 407#: html.c:2133
408msgid "Reply..." 408msgid "Reply..."
409msgstr "Vastaa..." 409msgstr "Vastaa..."
410 410
411#: html.c:2090 411#: html.c:2184
412msgid "Truncated (too deep)" 412msgid "Truncated (too deep)"
413msgstr "Katkaistu (liian syvä)" 413msgstr "Katkaistu (liian syvä)"
414 414
415#: html.c:2108 415#: html.c:2202
416msgid "follows you" 416msgid "follows you"
417msgstr "seuraa sinua" 417msgstr "seuraa sinua"
418 418
419#: html.c:2182 419#: html.c:2276
420msgid "Pinned" 420msgid "Pinned"
421msgstr "Kiinnitetty" 421msgstr "Kiinnitetty"
422 422
423#: html.c:2190 423#: html.c:2284
424msgid "Bookmarked" 424msgid "Bookmarked"
425msgstr "Kirjanmerkitty" 425msgstr "Kirjanmerkitty"
426 426
427#: html.c:2198 427#: html.c:2292
428msgid "Poll" 428msgid "Poll"
429msgstr "Kysely" 429msgstr "Kysely"
430 430
431#: html.c:2205 431#: html.c:2299
432msgid "Voted" 432msgid "Voted"
433msgstr "Äänestetty" 433msgstr "Äänestetty"
434 434
435#: html.c:2214 435#: html.c:2308
436msgid "Event" 436msgid "Event"
437msgstr "Tapahtuma" 437msgstr "Tapahtuma"
438 438
439#: html.c:2246 html.c:2275 439#: html.c:2340 html.c:2369
440msgid "boosted" 440msgid "boosted"
441msgstr "tehostettu" 441msgstr "tehostettu"
442 442
443#: html.c:2289 443#: html.c:2383
444msgid "in reply to" 444msgid "in reply to"
445msgstr "vastauksena" 445msgstr "vastauksena"
446 446
447#: html.c:2345 447#: html.c:2439
448msgid " [SENSITIVE CONTENT]" 448msgid " [SENSITIVE CONTENT]"
449msgstr " [ARKALUONTOISTA SISÄLTÖÄ]" 449msgstr " [ARKALUONTOISTA SISÄLTÖÄ]"
450 450
451#: html.c:2512 451#: html.c:2796
452msgid "Vote" 452msgid "Vote"
453msgstr "Äänestä" 453msgstr "Äänestä"
454 454
455#: html.c:2522 455#: html.c:2806
456msgid "Closed" 456msgid "Closed"
457msgstr "Sulkeutunut" 457msgstr "Sulkeutunut"
458 458
459#: html.c:2547 459#: html.c:2831
460msgid "Closes in" 460msgid "Closes in"
461msgstr "Sulkeutuu" 461msgstr "Sulkeutuu"
462 462
463#: html.c:2627 463#: html.c:2911
464msgid "Video" 464msgid "Video"
465msgstr "Video" 465msgstr "Video"
466 466
467#: html.c:2642 467#: html.c:2926
468msgid "Audio" 468msgid "Audio"
469msgstr "Ääni" 469msgstr "Ääni"
470 470
471#: html.c:2670 471#: html.c:2954
472msgid "Attachment" 472msgid "Attachment"
473msgstr "Liite" 473msgstr "Liite"
474 474
475#: html.c:2684 475#: html.c:2968
476msgid "Alt..." 476msgid "Alt..."
477msgstr "Kuvaus..." 477msgstr "Kuvaus..."
478 478
479#: html.c:2697 479#: html.c:2981
480msgid "Source channel or community" 480msgid "Source channel or community"
481msgstr "Lähdekanava tai -yhteisö" 481msgstr "Lähdekanava tai -yhteisö"
482 482
483#: html.c:2791 483#: html.c:3075
484msgid "Time: " 484msgid "Time: "
485msgstr "Aika: " 485msgstr "Aika: "
486 486
487#: html.c:2872 487#: html.c:3156
488msgid "Older..." 488msgid "Older..."
489msgstr "Vanhemmat..." 489msgstr "Vanhemmat..."
490 490
491#: html.c:2974 491#: html.c:3258
492msgid "about this site" 492msgid "about this site"
493msgstr "tietoa sivustosta" 493msgstr "tietoa sivustosta"
494 494
495#: html.c:2976 495#: html.c:3260
496msgid "powered by " 496msgid "powered by "
497msgstr "moottorina " 497msgstr "moottorina "
498 498
499#: html.c:3041 499#: html.c:3329
500msgid "Dismiss" 500msgid "Dismiss"
501msgstr "Kuittaa" 501msgstr "Kuittaa"
502 502
503#: html.c:3058 503#: html.c:3346
504#, c-format 504#, c-format
505msgid "Timeline for list '%s'" 505msgid "Timeline for list '%s'"
506msgstr "Listan â€%s†aikajana" 506msgstr "Listan â€%s†aikajana"
507 507
508#: html.c:3077 html.c:4169 508#: html.c:3365 html.c:4589
509msgid "Pinned posts" 509msgid "Pinned posts"
510msgstr "Kiinnitetyt julkaisut" 510msgstr "Kiinnitetyt julkaisut"
511 511
512#: html.c:3089 html.c:4184 512#: html.c:3377 html.c:4604
513msgid "Bookmarked posts" 513msgid "Bookmarked posts"
514msgstr "Kirjanmerkit" 514msgstr "Kirjanmerkit"
515 515
516#: html.c:3101 html.c:4199 516#: html.c:3389 html.c:4619
517msgid "Post drafts" 517msgid "Post drafts"
518msgstr "Vedokset" 518msgstr "Vedokset"
519 519
520#: html.c:3177 520#: html.c:3465
521msgid "No more unseen posts" 521msgid "No more unseen posts"
522msgstr "Ei lukemattonia julkaisuja" 522msgstr "Ei lukemattonia julkaisuja"
523 523
524#: html.c:3181 html.c:3290 524#: html.c:3469 html.c:3578
525msgid "Back to top" 525msgid "Back to top"
526msgstr "Takaisin" 526msgstr "Takaisin"
527 527
528#: html.c:3243 528#: html.c:3531
529msgid "History" 529msgid "History"
530msgstr "Historia" 530msgstr "Historia"
531 531
532#: html.c:3295 html.c:3734 532#: html.c:3583 html.c:4149
533msgid "More..." 533msgid "More..."
534msgstr "Enemmän..." 534msgstr "Enemmän..."
535 535
536#: html.c:3391 html.c:4813 536#: html.c:3767 html.c:5257
537msgid "Unlimit" 537msgid "Unlimit"
538msgstr "Poista rajoitus" 538msgstr "Poista rajoitus"
539 539
540#: html.c:3392 540#: html.c:3768
541msgid "Allow announces (boosts) from this user" 541msgid "Allow announces (boosts) from this user"
542msgstr "Salli tehostukset käyttäjältä" 542msgstr "Salli tehostukset käyttäjältä"
543 543
544#: html.c:3395 html.c:4809 544#: html.c:3771 html.c:5253
545msgid "Limit" 545msgid "Limit"
546msgstr "Rajoita" 546msgstr "Rajoita"
547 547
548#: html.c:3396 548#: html.c:3772
549msgid "Block announces (boosts) from this user" 549msgid "Block announces (boosts) from this user"
550msgstr "Kiellö tehostukset käyttäjältä" 550msgstr "Kiellö tehostukset käyttäjältä"
551 551
552#: html.c:3405 552#: html.c:3781
553msgid "Delete this user" 553msgid "Delete this user"
554msgstr "Poista käyttäjä" 554msgstr "Poista käyttäjä"
555 555
556#: html.c:3410 html.c:4927 556#: html.c:3786 html.c:5371
557msgid "Approve" 557msgid "Approve"
558msgstr "Hyväksy" 558msgstr "Hyväksy"
559 559
560#: html.c:3411 560#: html.c:3787
561msgid "Approve this follow request" 561msgid "Approve this follow request"
562msgstr "Hyväksy seurantapyyntö" 562msgstr "Hyväksy seurantapyyntö"
563 563
564#: html.c:3414 html.c:4951 564#: html.c:3790 html.c:5395
565msgid "Discard" 565msgid "Discard"
566msgstr "Hylkää" 566msgstr "Hylkää"
567 567
568#: html.c:3414 568#: html.c:3790
569msgid "Discard this follow request" 569msgid "Discard this follow request"
570msgstr "Hylkää seurantapyyntö" 570msgstr "Hylkää seurantapyyntö"
571 571
572#: html.c:3419 html.c:4795 572#: html.c:3795 html.c:5239
573msgid "Unmute" 573msgid "Unmute"
574msgstr "Poista vaimennus" 574msgstr "Poista vaimennus"
575 575
576#: html.c:3420 576#: html.c:3796
577msgid "Stop blocking activities from this user" 577msgid "Stop blocking activities from this user"
578msgstr "Salli toiminta käyttäjältä" 578msgstr "Salli toiminta käyttäjältä"
579 579
580#: html.c:3424 580#: html.c:3800
581msgid "Block any activity from this user" 581msgid "Block any activity from this user"
582msgstr "Estä kaikki toiminnat käyttäjältä" 582msgstr "Estä kaikki toiminnat käyttäjältä"
583 583
584#: html.c:3432 584#: html.c:3808
585msgid "Direct Message..." 585msgid "Direct Message..."
586msgstr "Yksityisviesti..." 586msgstr "Yksityisviesti..."
587 587
588#: html.c:3467 588#: html.c:3843
589msgid "Pending follow confirmations" 589msgid "Pending follow confirmations"
590msgstr "Hyväksymistä odottavat seurantapyynnöt" 590msgstr "Hyväksymistä odottavat seurantapyynnöt"
591 591
592#: html.c:3471 592#: html.c:3847
593msgid "People you follow" 593msgid "People you follow"
594msgstr "Seuraamasi ihniset" 594msgstr "Seuraamasi ihniset"
595 595
596#: html.c:3472 596#: html.c:3848
597msgid "People that follow you" 597msgid "People that follow you"
598msgstr "Sinua seuraavat" 598msgstr "Sinua seuraavat"
599 599
600#: html.c:3511 600#: html.c:3887
601msgid "Clear all" 601msgid "Clear all"
602msgstr "Tyhjennä" 602msgstr "Tyhjennä"
603 603
604#: html.c:3571 604#: html.c:3951
605msgid "Mention" 605msgid "Mention"
606msgstr "Mainitse" 606msgstr "Mainitse"
607 607
608#: html.c:3574 608#: html.c:3954
609msgid "Finished poll" 609msgid "Finished poll"
610msgstr "Päättynyt kysely" 610msgstr "Päättynyt kysely"
611 611
612#: html.c:3590 612#: html.c:3979
613msgid "Follow Request" 613msgid "Follow Request"
614msgstr "Seurantapyyntö" 614msgstr "Seurantapyyntö"
615 615
616#: html.c:3674 616#: html.c:4089
617msgid "Context" 617msgid "Context"
618msgstr "Konteksti" 618msgstr "Konteksti"
619 619
620#: html.c:3692 620#: html.c:4107
621msgid "New" 621msgid "New"
622msgstr "Uusi" 622msgstr "Uusi"
623 623
624#: html.c:3707 624#: html.c:4122
625msgid "Already seen" 625msgid "Already seen"
626msgstr "Nähty" 626msgstr "Nähty"
627 627
628#: html.c:3722 628#: html.c:4137
629msgid "None" 629msgid "None"
630msgstr "Ei ilmoituksia" 630msgstr "Ei ilmoituksia"
631 631
632#: html.c:3994 632#: html.c:4414
633#, c-format 633#, c-format
634msgid "Search results for account %s" 634msgid "Search results for account %s"
635msgstr "Hakutulokset tilille %s" 635msgstr "Hakutulokset tilille %s"
636 636
637#: html.c:4001 637#: html.c:4421
638#, c-format 638#, c-format
639msgid "Account %s not found" 639msgid "Account %s not found"
640msgstr "Tiliä %s ei löytynyt" 640msgstr "Tiliä %s ei löytynyt"
641 641
642#: html.c:4032 642#: html.c:4452
643#, c-format 643#, c-format
644msgid "Search results for tag %s" 644msgid "Search results for tag %s"
645msgstr "Hakutulokset aihetunnisteelle %s" 645msgstr "Hakutulokset aihetunnisteelle %s"
646 646
647#: html.c:4032 647#: html.c:4452
648#, c-format 648#, c-format
649msgid "Nothing found for tag %s" 649msgid "Nothing found for tag %s"
650msgstr "Aihetunnisteella %s ei löytynyt tuloksia" 650msgstr "Aihetunnisteella %s ei löytynyt tuloksia"
651 651
652#: html.c:4048 652#: html.c:4468
653#, c-format 653#, c-format
654msgid "Search results for '%s' (may be more)" 654msgid "Search results for '%s' (may be more)"
655msgstr "Tulokset haulle â€%s†(mahdollisesti enemmän tuloksia)" 655msgstr "Tulokset haulle â€%s†(mahdollisesti enemmän tuloksia)"
656 656
657#: html.c:4051 657#: html.c:4471
658#, c-format 658#, c-format
659msgid "Search results for '%s'" 659msgid "Search results for '%s'"
660msgstr "Tulokset haulle â€%sâ€" 660msgstr "Tulokset haulle â€%sâ€"
661 661
662#: html.c:4054 662#: html.c:4474
663#, c-format 663#, c-format
664msgid "No more matches for '%s'" 664msgid "No more matches for '%s'"
665msgstr "Ei enempää tuloksia haulle â€%sâ€" 665msgstr "Ei enempää tuloksia haulle â€%sâ€"
666 666
667#: html.c:4056 667#: html.c:4476
668#, c-format 668#, c-format
669msgid "Nothing found for '%s'" 669msgid "Nothing found for '%s'"
670msgstr "Haulla â€%s†ei löytynyt tuloksia" 670msgstr "Haulla â€%s†ei löytynyt tuloksia"
671 671
672#: html.c:4154 672#: html.c:4574
673msgid "Showing instance timeline" 673msgid "Showing instance timeline"
674msgstr "Palvelimen aikajana" 674msgstr "Palvelimen aikajana"
675 675
676#: html.c:4237 676#: html.c:4657
677#, c-format 677#, c-format
678msgid "Showing timeline for list '%s'" 678msgid "Showing timeline for list '%s'"
679msgstr "Listan â€%s†aikajana" 679msgstr "Listan â€%s†aikajana"
680 680
681#: httpd.c:258 681#: httpd.c:259
682#, c-format 682#, c-format
683msgid "Search results for tag #%s" 683msgid "Search results for tag #%s"
684msgstr "Hakutulokset aihetunnisteelle #%s" 684msgstr "Hakutulokset aihetunnisteelle #%s"
685 685
686#: httpd.c:267 686#: httpd.c:268
687msgid "Recent posts by users in this instance" 687msgid "Recent posts by users in this instance"
688msgstr "Viimeaikaisia julkaisuja tällä palvelimella" 688msgstr "Viimeaikaisia julkaisuja tällä palvelimella"
689 689
690#: html.c:1764 690#: html.c:1842
691msgid "Blocked hashtags..." 691msgid "Blocked hashtags..."
692msgstr "Estetyt aihetunnisteet..." 692msgstr "Estetyt aihetunnisteet..."
693 693
694#: html.c:518 694#: html.c:574
695msgid "Optional URL to reply to" 695msgid "Optional URL to reply to"
696msgstr "Vastaus julkaisuun (osoite, valinnainen)" 696msgstr "Vastaus julkaisuun (osoite, valinnainen)"
697 697
698#: html.c:695 698#: html.c:751
699msgid "" 699msgid ""
700"Option 1...\n" 700"Option 1...\n"
701"Option 2...\n" 701"Option 2...\n"
@@ -707,94 +707,106 @@ msgstr ""
707"Vaihtoehto 3...\n" 707"Vaihtoehto 3...\n"
708"..." 708"..."
709 709
710#: html.c:1558 710#: html.c:1636
711msgid "Bot API key" 711msgid "Bot API key"
712msgstr "botin API-avain" 712msgstr "botin API-avain"
713 713
714#: html.c:1564 714#: html.c:1642
715msgid "Chat id" 715msgid "Chat id"
716msgstr "chat id" 716msgstr "chat id"
717 717
718#: html.c:1572 718#: html.c:1650
719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
720msgstr "ntfy-palvelin - täydellinen osoite (esim: https://ntfy.sh/YourTopic)" 720msgstr "ntfy-palvelin - täydellinen osoite (esim: https://ntfy.sh/YourTopic)"
721 721
722#: html.c:1578 722#: html.c:1656
723msgid "ntfy token - if needed" 723msgid "ntfy token - if needed"
724msgstr "ntfy token - tarvittaessa" 724msgstr "ntfy token - tarvittaessa"
725 725
726#: html.c:3078 726#: html.c:3366
727msgid "pinned" 727msgid "pinned"
728msgstr "kiinnitetyt" 728msgstr "kiinnitetyt"
729 729
730#: html.c:3090 730#: html.c:3378
731msgid "bookmarks" 731msgid "bookmarks"
732msgstr "kirjanmerkit" 732msgstr "kirjanmerkit"
733 733
734#: html.c:3102 734#: html.c:3390
735msgid "drafts" 735msgid "drafts"
736msgstr "vedokset" 736msgstr "vedokset"
737 737
738#: html.c:584 738#: html.c:640
739msgid "Scheduled post..." 739msgid "Scheduled post..."
740msgstr "Ajastettu julkaisu..." 740msgstr "Ajastettu julkaisu..."
741 741
742msgid "Post date and time:" 742msgid "Post date and time:"
743msgstr "Julkaisuajankohta:" 743msgstr "Julkaisuajankohta:"
744 744
745#: html.c:3113 html.c:4214 745#: html.c:3401 html.c:4634
746msgid "Scheduled posts" 746msgid "Scheduled posts"
747msgstr "Ajastetut julkaisut" 747msgstr "Ajastetut julkaisut"
748 748
749#: html.c:3114 749#: html.c:3402
750msgid "scheduled posts" 750msgid "scheduled posts"
751msgstr "ajastetut julkaisut" 751msgstr "ajastetut julkaisut"
752 752
753#: html.c:578 753#: html.c:634
754#, c-format 754#, c-format
755msgid "Post date and time (timezone: %s):" 755msgid "Post date and time (timezone: %s):"
756msgstr "Julkaisuajankohta (aikavyöhyke: %s):" 756msgstr "Julkaisuajankohta (aikavyöhyke: %s):"
757 757
758#: html.c:1689 758#: html.c:1767
759msgid "Time zone:" 759msgid "Time zone:"
760msgstr "Aikavyöhyke: " 760msgstr "Aikavyöhyke: "
761 761
762#: html.c:559 762#: html.c:615
763msgid "Language:" 763msgid "Language:"
764msgstr "" 764msgstr ""
765 765
766#: html.c:1580 766#: html.c:1658
767msgid "Notify webhook:" 767msgid "Notify webhook:"
768msgstr "" 768msgstr ""
769 769
770#: html.c:1586 770#: html.c:1664
771msgid "http://example.com/webhook" 771msgid "http://example.com/webhook"
772msgstr "" 772msgstr ""
773 773
774#: html.c:1694 774#: html.c:1772
775msgid "Languages you usually post in:" 775msgid "Languages you usually post in:"
776msgstr "" 776msgstr ""
777 777
778#: html.c:1700 778#: html.c:1778
779msgid "en fr es de_AT" 779msgid "en fr es de_AT"
780msgstr "" 780msgstr ""
781 781
782#: html.c:460 782#: html.c:428
783msgid "Visibility: " 783msgid "Visibility: "
784msgstr "" 784msgstr ""
785 785
786#: html.c:468
787msgid "Public" 786msgid "Public"
788msgstr "" 787msgstr ""
789 788
790#: html.c:477
791msgid "Unlisted" 789msgid "Unlisted"
792msgstr "" 790msgstr ""
793 791
794#: html.c:486
795msgid "Followers-only" 792msgid "Followers-only"
796msgstr "" 793msgstr ""
797 794
798#: html.c:495
799msgid "Direct Message" 795msgid "Direct Message"
800msgstr "" 796msgstr ""
797
798#: html.c:488 html.c:2534 html.c:2559 html.c:5177
799msgid "EmojiUnreact"
800msgstr ""
801
802#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
803msgid "EmojiReact"
804msgstr ""
805
806#: html.c:2115
807msgid "Emoji react..."
808msgstr ""
809
810#: html.c:2609
811msgid "Emoji reactions: "
812msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 25dbfcf..43376d3 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: fr\n" 8"Language: fr\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Contenu sensible :" 13msgstr "Contenu sensible :"
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Description du contenu sensible :" 17msgstr "Description du contenu sensible :"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Seulement pour les personnes mentionnées :" 20msgstr "Seulement pour les personnes mentionnées :"
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Répondre à (URL) :" 24msgstr "Répondre à (URL) :"
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Ne pas envoyer, mais sauvegarder en tant que brouillon" 28msgstr "Ne pas envoyer, mais sauvegarder en tant que brouillon"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Brouillon :" 32msgstr "Brouillon :"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Pièces jointes…" 36msgstr "Pièces jointes…"
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Fichier :" 40msgstr "Fichier :"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Nettoyer ce champs pour supprimer la pièce jointe" 44msgstr "Nettoyer ce champs pour supprimer la pièce jointe"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Description de la pièce jointe" 48msgstr "Description de la pièce jointe"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Sondage…" 52msgstr "Sondage…"
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Options du sondage (une par ligne, jusqu'à 8) :" 56msgstr "Options du sondage (une par ligne, jusqu'à 8) :"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Un seul choix" 60msgstr "Un seul choix"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Choix multiples" 64msgstr "Choix multiples"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Se termine dans 5 minutes" 68msgstr "Se termine dans 5 minutes"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Se termine dans 1 heure" 72msgstr "Se termine dans 1 heure"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Se termine dans 1 jour" 76msgstr "Se termine dans 1 jour"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Envoyer" 80msgstr "Envoyer"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Description du site" 84msgstr "Description du site"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email de l'admin" 88msgstr "Email de l'admin"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Compte de l'admin" 92msgstr "Compte de l'admin"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d abonnements, %d personnes abonnées" 97msgstr "%d abonnements, %d personnes abonnées"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privé" 105msgstr "privé"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "public" 109msgstr "public"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notifications" 113msgstr "notifications"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "personnes" 117msgstr "personnes"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instance" 121msgstr "instance"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,575 +128,575 @@ msgstr ""
128"Chercher les messages par URL ou contenu (expression régulière), comptes " 128"Chercher les messages par URL ou contenu (expression régulière), comptes "
129"@pseudo@hôte, ou #tag" 129"@pseudo@hôte, ou #tag"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Recherche de contenu" 133msgstr "Recherche de contenu"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "Lien vérifié" 137msgstr "Lien vérifié"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Emplacement : " 141msgstr "Emplacement : "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nouveau message…" 145msgstr "Nouveau message…"
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "Qu'avez-vous en tête ?" 149msgstr "Qu'avez-vous en tête ?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Opérations…" 153msgstr "Opérations…"
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Suivre" 157msgstr "Suivre"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(par URL ou pseudo@hôte)" 161msgstr "(par URL ou pseudo@hôte)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Repartager" 165msgstr "Repartager"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(par URL)" 169msgstr "(par URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Aime" 173msgstr "Aime"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Paramètre du compte…" 177msgstr "Paramètre du compte…"
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Nom affiché :" 181msgstr "Nom affiché :"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Votre nom" 185msgstr "Votre nom"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar : " 189msgstr "Avatar : "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Supprimer l'avatar actuel" 193msgstr "Supprimer l'avatar actuel"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Image d'entête (bannière) : " 197msgstr "Image d'entête (bannière) : "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Supprimer l'image d'entête actuelle" 201msgstr "Supprimer l'image d'entête actuelle"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Description :" 205msgstr "Description :"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Décrivez-vous ici…" 209msgstr "Décrivez-vous ici…"
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Toujours afficher le contenu sensible" 213msgstr "Toujours afficher le contenu sensible"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Adresse email pour les notifications :" 217msgstr "Adresse email pour les notifications :"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Notifications Telegram (clé de bot et ID de discussion) :" 221msgstr "Notifications Telegram (clé de bot et ID de discussion) :"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "notifications ntfy (serveur et jeton ntfy) :" 225msgstr "notifications ntfy (serveur et jeton ntfy) :"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "" 229msgstr ""
230"Nombre de jours maximum de rétention des messages (0 : réglages du serveur) :" 230"Nombre de jours maximum de rétention des messages (0 : réglages du serveur) :"
231 231
232#: html.c:1602 232#: html.c:1680
233msgid "Drop direct messages from people you don't follow" 233msgid "Drop direct messages from people you don't follow"
234msgstr "Rejeter les messages directs des personnes que vous ne suivez pas" 234msgstr "Rejeter les messages directs des personnes que vous ne suivez pas"
235 235
236#: html.c:1611 236#: html.c:1689
237msgid "This account is a bot" 237msgid "This account is a bot"
238msgstr "Ce compte est un bot" 238msgstr "Ce compte est un bot"
239 239
240#: html.c:1620 240#: html.c:1698
241msgid "Auto-boost all mentions to this account" 241msgid "Auto-boost all mentions to this account"
242msgstr "Auto-repartage de toutes les mentions de ce compte" 242msgstr "Auto-repartage de toutes les mentions de ce compte"
243 243
244#: html.c:1629 244#: html.c:1707
245msgid "This account is private (posts are not shown through the web)" 245msgid "This account is private (posts are not shown through the web)"
246msgstr "Ce compte est privé (les messages ne sont pas affiché sur le web)" 246msgstr "Ce compte est privé (les messages ne sont pas affiché sur le web)"
247 247
248#: html.c:1639 248#: html.c:1717
249msgid "Collapse top threads by default" 249msgid "Collapse top threads by default"
250msgstr "replier les fils de discussion principaux par défaut" 250msgstr "replier les fils de discussion principaux par défaut"
251 251
252#: html.c:1648 252#: html.c:1726
253msgid "Follow requests must be approved" 253msgid "Follow requests must be approved"
254msgstr "Les demande de suivi doivent être approuvées" 254msgstr "Les demande de suivi doivent être approuvées"
255 255
256#: html.c:1657 256#: html.c:1735
257msgid "Publish follower and following metrics" 257msgid "Publish follower and following metrics"
258msgstr "Publier les statistiques d'abonnements" 258msgstr "Publier les statistiques d'abonnements"
259 259
260#: html.c:1659 260#: html.c:1737
261msgid "Current location:" 261msgid "Current location:"
262msgstr "Localisation actuelle :" 262msgstr "Localisation actuelle :"
263 263
264#: html.c:1673 264#: html.c:1751
265msgid "Profile metadata (key=value pairs in each line):" 265msgid "Profile metadata (key=value pairs in each line):"
266msgstr "Métadonnées du profile (paires clé=valeur à chaque ligne) :" 266msgstr "Métadonnées du profile (paires clé=valeur à chaque ligne) :"
267 267
268#: html.c:1684 268#: html.c:1762
269msgid "Web interface language:" 269msgid "Web interface language:"
270msgstr "Langue de l'interface web :" 270msgstr "Langue de l'interface web :"
271 271
272#: html.c:1703 272#: html.c:1781
273msgid "New password:" 273msgid "New password:"
274msgstr "Nouveau mot de passe :" 274msgstr "Nouveau mot de passe :"
275 275
276#: html.c:1710 276#: html.c:1788
277msgid "Repeat new password:" 277msgid "Repeat new password:"
278msgstr "Répétez le nouveau mot de passe :" 278msgstr "Répétez le nouveau mot de passe :"
279 279
280#: html.c:1720 280#: html.c:1798
281msgid "Update user info" 281msgid "Update user info"
282msgstr "Mettre à jour les infos du compte" 282msgstr "Mettre à jour les infos du compte"
283 283
284#: html.c:1731 284#: html.c:1809
285msgid "Followed hashtags..." 285msgid "Followed hashtags..."
286msgstr "hashtags suivis…" 286msgstr "hashtags suivis…"
287 287
288#: html.c:1733 html.c:1766 288#: html.c:1811 html.c:1844
289msgid "One hashtag per line" 289msgid "One hashtag per line"
290msgstr "Un hashtag par ligne" 290msgstr "Un hashtag par ligne"
291 291
292#: html.c:1755 html.c:1787 292#: html.c:1833 html.c:1865
293msgid "Update hashtags" 293msgid "Update hashtags"
294msgstr "Mettre à jour les hashtags" 294msgstr "Mettre à jour les hashtags"
295 295
296#: html.c:1904 296#: html.c:1982
297msgid "Say you like this post" 297msgid "Say you like this post"
298msgstr "Dire que vous aimez ce message" 298msgstr "Dire que vous aimez ce message"
299 299
300#: html.c:1909 html.c:4775 300#: html.c:1987 html.c:5219
301msgid "Unlike" 301msgid "Unlike"
302msgstr "N'aime plus" 302msgstr "N'aime plus"
303 303
304#: html.c:1909 304#: html.c:1987
305msgid "Nah don't like it that much" 305msgid "Nah don't like it that much"
306msgstr "Nan, j'aime pas tant que ça" 306msgstr "Nan, j'aime pas tant que ça"
307 307
308#: html.c:1915 html.c:4912 308#: html.c:1993 html.c:5356
309msgid "Unpin" 309msgid "Unpin"
310msgstr "Dés-épingler" 310msgstr "Dés-épingler"
311 311
312#: html.c:1915 312#: html.c:1993
313msgid "Unpin this post from your timeline" 313msgid "Unpin this post from your timeline"
314msgstr "Dés-épingler ce message de votre chronologie" 314msgstr "Dés-épingler ce message de votre chronologie"
315 315
316#: html.c:1918 html.c:4907 316#: html.c:1996 html.c:5351
317msgid "Pin" 317msgid "Pin"
318msgstr "Épingler" 318msgstr "Épingler"
319 319
320#: html.c:1918 320#: html.c:1996
321msgid "Pin this post to the top of your timeline" 321msgid "Pin this post to the top of your timeline"
322msgstr "Épingler ce message en haut de votre chronologie" 322msgstr "Épingler ce message en haut de votre chronologie"
323 323
324#: html.c:1925 324#: html.c:2003
325msgid "Announce this post to your followers" 325msgid "Announce this post to your followers"
326msgstr "Annoncer ce message aux personnes abonnées" 326msgstr "Annoncer ce message aux personnes abonnées"
327 327
328#: html.c:1930 html.c:4783 328#: html.c:2008 html.c:5227
329msgid "Unboost" 329msgid "Unboost"
330msgstr "Dé-repartager" 330msgstr "Dé-repartager"
331 331
332#: html.c:1930 332#: html.c:2008
333msgid "I regret I boosted this" 333msgid "I regret I boosted this"
334msgstr "Je regrette d'avoir repartagé ceci" 334msgstr "Je regrette d'avoir repartagé ceci"
335 335
336#: html.c:1936 html.c:4922 336#: html.c:2014 html.c:5366
337msgid "Unbookmark" 337msgid "Unbookmark"
338msgstr "Retirer le signet" 338msgstr "Retirer le signet"
339 339
340#: html.c:1936 340#: html.c:2014
341msgid "Delete this post from your bookmarks" 341msgid "Delete this post from your bookmarks"
342msgstr "Supprime ce message de vos signets" 342msgstr "Supprime ce message de vos signets"
343 343
344#: html.c:1939 html.c:4917 344#: html.c:2017 html.c:5361
345msgid "Bookmark" 345msgid "Bookmark"
346msgstr "Signet" 346msgstr "Signet"
347 347
348#: html.c:1939 348#: html.c:2017
349msgid "Add this post to your bookmarks" 349msgid "Add this post to your bookmarks"
350msgstr "Ajouter ce message à vos signets" 350msgstr "Ajouter ce message à vos signets"
351 351
352#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 352#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
353msgid "Unfollow" 353msgid "Unfollow"
354msgstr "Ne plus suivre" 354msgstr "Ne plus suivre"
355 355
356#: html.c:1945 html.c:3387 356#: html.c:2023 html.c:3763 html.c:4042
357msgid "Stop following this user's activity" 357msgid "Stop following this user's activity"
358msgstr "Arrêter de suivre les activités de cette personne" 358msgstr "Arrêter de suivre les activités de cette personne"
359 359
360#: html.c:1949 html.c:3401 360#: html.c:2027 html.c:3777 html.c:4044
361msgid "Start following this user's activity" 361msgid "Start following this user's activity"
362msgstr "Commencer à suivre les activité de cette personne" 362msgstr "Commencer à suivre les activité de cette personne"
363 363
364#: html.c:1955 html.c:4860 364#: html.c:2033 html.c:5304
365msgid "Unfollow Group" 365msgid "Unfollow Group"
366msgstr "Ne plus suivre le Groupe" 366msgstr "Ne plus suivre le Groupe"
367 367
368#: html.c:1956 368#: html.c:2034
369msgid "Stop following this group or channel" 369msgid "Stop following this group or channel"
370msgstr "Arrêter de suivre ce groupe ou canal" 370msgstr "Arrêter de suivre ce groupe ou canal"
371 371
372#: html.c:1960 html.c:4847 372#: html.c:2038 html.c:5291
373msgid "Follow Group" 373msgid "Follow Group"
374msgstr "Suivre le Groupe" 374msgstr "Suivre le Groupe"
375 375
376#: html.c:1961 376#: html.c:2039
377msgid "Start following this group or channel" 377msgid "Start following this group or channel"
378msgstr "Commencer à suivre ce groupe ou canal" 378msgstr "Commencer à suivre ce groupe ou canal"
379 379
380#: html.c:1966 html.c:3423 html.c:4791 380#: html.c:2044 html.c:3799 html.c:5235
381msgid "MUTE" 381msgid "MUTE"
382msgstr "SOURDINE" 382msgstr "SOURDINE"
383 383
384#: html.c:1967 384#: html.c:2045
385msgid "Block any activity from this user forever" 385msgid "Block any activity from this user forever"
386msgstr "Bloquer toute activité de cette personne à jamais" 386msgstr "Bloquer toute activité de cette personne à jamais"
387 387
388#: html.c:1972 html.c:3405 html.c:4877 388#: html.c:2050 html.c:3781 html.c:5321
389msgid "Delete" 389msgid "Delete"
390msgstr "Supprimer" 390msgstr "Supprimer"
391 391
392#: html.c:1972 392#: html.c:2050
393msgid "Delete this post" 393msgid "Delete this post"
394msgstr "Supprimer ce message" 394msgstr "Supprimer ce message"
395 395
396#: html.c:1975 html.c:4799 396#: html.c:2053 html.c:5243
397msgid "Hide" 397msgid "Hide"
398msgstr "Cacher" 398msgstr "Cacher"
399 399
400#: html.c:1975 400#: html.c:2053
401msgid "Hide this post and its children" 401msgid "Hide this post and its children"
402msgstr "Cacher ce message et ses réponses" 402msgstr "Cacher ce message et ses réponses"
403 403
404#: html.c:2017 404#: html.c:2095
405msgid "Edit..." 405msgid "Edit..."
406msgstr "Modifier…" 406msgstr "Modifier…"
407 407
408#: html.c:2039 408#: html.c:2133
409msgid "Reply..." 409msgid "Reply..."
410msgstr "Répondre…" 410msgstr "Répondre…"
411 411
412#: html.c:2090 412#: html.c:2184
413msgid "Truncated (too deep)" 413msgid "Truncated (too deep)"
414msgstr "Tronqué (trop profond)" 414msgstr "Tronqué (trop profond)"
415 415
416#: html.c:2108 416#: html.c:2202
417msgid "follows you" 417msgid "follows you"
418msgstr "vous suit" 418msgstr "vous suit"
419 419
420#: html.c:2182 420#: html.c:2276
421msgid "Pinned" 421msgid "Pinned"
422msgstr "Épinglé" 422msgstr "Épinglé"
423 423
424#: html.c:2190 424#: html.c:2284
425msgid "Bookmarked" 425msgid "Bookmarked"
426msgstr "Ajouté aux signets" 426msgstr "Ajouté aux signets"
427 427
428#: html.c:2198 428#: html.c:2292
429msgid "Poll" 429msgid "Poll"
430msgstr "Sondage" 430msgstr "Sondage"
431 431
432#: html.c:2205 432#: html.c:2299
433msgid "Voted" 433msgid "Voted"
434msgstr "Voté" 434msgstr "Voté"
435 435
436#: html.c:2214 436#: html.c:2308
437msgid "Event" 437msgid "Event"
438msgstr "Événement" 438msgstr "Événement"
439 439
440#: html.c:2246 html.c:2275 440#: html.c:2340 html.c:2369
441msgid "boosted" 441msgid "boosted"
442msgstr "Repartagé" 442msgstr "Repartagé"
443 443
444#: html.c:2289 444#: html.c:2383
445msgid "in reply to" 445msgid "in reply to"
446msgstr "En réponse à" 446msgstr "En réponse à"
447 447
448#: html.c:2345 448#: html.c:2439
449msgid " [SENSITIVE CONTENT]" 449msgid " [SENSITIVE CONTENT]"
450msgstr " [CONTENU SENSIBLE]" 450msgstr " [CONTENU SENSIBLE]"
451 451
452#: html.c:2512 452#: html.c:2796
453msgid "Vote" 453msgid "Vote"
454msgstr "Vote" 454msgstr "Vote"
455 455
456#: html.c:2522 456#: html.c:2806
457msgid "Closed" 457msgid "Closed"
458msgstr "Terminé" 458msgstr "Terminé"
459 459
460#: html.c:2547 460#: html.c:2831
461msgid "Closes in" 461msgid "Closes in"
462msgstr "Termine dans" 462msgstr "Termine dans"
463 463
464#: html.c:2627 464#: html.c:2911
465msgid "Video" 465msgid "Video"
466msgstr "Vidéo" 466msgstr "Vidéo"
467 467
468#: html.c:2642 468#: html.c:2926
469msgid "Audio" 469msgid "Audio"
470msgstr "Audio" 470msgstr "Audio"
471 471
472#: html.c:2670 472#: html.c:2954
473msgid "Attachment" 473msgid "Attachment"
474msgstr "Pièce jointe" 474msgstr "Pièce jointe"
475 475
476#: html.c:2684 476#: html.c:2968
477msgid "Alt..." 477msgid "Alt..."
478msgstr "Alt…" 478msgstr "Alt…"
479 479
480#: html.c:2697 480#: html.c:2981
481msgid "Source channel or community" 481msgid "Source channel or community"
482msgstr "Canal ou communauté source" 482msgstr "Canal ou communauté source"
483 483
484#: html.c:2791 484#: html.c:3075
485msgid "Time: " 485msgid "Time: "
486msgstr "Date : " 486msgstr "Date : "
487 487
488#: html.c:2872 488#: html.c:3156
489msgid "Older..." 489msgid "Older..."
490msgstr "Plus anciens…" 490msgstr "Plus anciens…"
491 491
492#: html.c:2974 492#: html.c:3258
493msgid "about this site" 493msgid "about this site"
494msgstr "à propos de ce site" 494msgstr "à propos de ce site"
495 495
496#: html.c:2976 496#: html.c:3260
497msgid "powered by " 497msgid "powered by "
498msgstr "fonctionne grace à " 498msgstr "fonctionne grace à "
499 499
500#: html.c:3041 500#: html.c:3329
501msgid "Dismiss" 501msgid "Dismiss"
502msgstr "Rejeter" 502msgstr "Rejeter"
503 503
504#: html.c:3058 504#: html.c:3346
505#, c-format 505#, c-format
506msgid "Timeline for list '%s'" 506msgid "Timeline for list '%s'"
507msgstr "Chronologie pour la liste '%s'" 507msgstr "Chronologie pour la liste '%s'"
508 508
509#: html.c:3077 html.c:4169 509#: html.c:3365 html.c:4589
510msgid "Pinned posts" 510msgid "Pinned posts"
511msgstr "Messages épinglés" 511msgstr "Messages épinglés"
512 512
513#: html.c:3089 html.c:4184 513#: html.c:3377 html.c:4604
514msgid "Bookmarked posts" 514msgid "Bookmarked posts"
515msgstr "Messages en signets" 515msgstr "Messages en signets"
516 516
517#: html.c:3101 html.c:4199 517#: html.c:3389 html.c:4619
518msgid "Post drafts" 518msgid "Post drafts"
519msgstr "Brouillons de messages" 519msgstr "Brouillons de messages"
520 520
521#: html.c:3177 521#: html.c:3465
522msgid "No more unseen posts" 522msgid "No more unseen posts"
523msgstr "Pas d'avantage de message non vus" 523msgstr "Pas d'avantage de message non vus"
524 524
525#: html.c:3181 html.c:3290 525#: html.c:3469 html.c:3578
526msgid "Back to top" 526msgid "Back to top"
527msgstr "Retourner en haut" 527msgstr "Retourner en haut"
528 528
529#: html.c:3243 529#: html.c:3531
530msgid "History" 530msgid "History"
531msgstr "Historique" 531msgstr "Historique"
532 532
533#: html.c:3295 html.c:3734 533#: html.c:3583 html.c:4149
534msgid "More..." 534msgid "More..."
535msgstr "Plus…" 535msgstr "Plus…"
536 536
537#: html.c:3391 html.c:4813 537#: html.c:3767 html.c:5257
538msgid "Unlimit" 538msgid "Unlimit"
539msgstr "Illimité" 539msgstr "Illimité"
540 540
541#: html.c:3392 541#: html.c:3768
542msgid "Allow announces (boosts) from this user" 542msgid "Allow announces (boosts) from this user"
543msgstr "Permettre les annonces (repartages) par cette personne" 543msgstr "Permettre les annonces (repartages) par cette personne"
544 544
545#: html.c:3395 html.c:4809 545#: html.c:3771 html.c:5253
546msgid "Limit" 546msgid "Limit"
547msgstr "Limite" 547msgstr "Limite"
548 548
549#: html.c:3396 549#: html.c:3772
550msgid "Block announces (boosts) from this user" 550msgid "Block announces (boosts) from this user"
551msgstr "Bloquer les annonces (repartages) par cette personne" 551msgstr "Bloquer les annonces (repartages) par cette personne"
552 552
553#: html.c:3405 553#: html.c:3781
554msgid "Delete this user" 554msgid "Delete this user"
555msgstr "Supprimer cette personne" 555msgstr "Supprimer cette personne"
556 556
557#: html.c:3410 html.c:4927 557#: html.c:3786 html.c:5371
558msgid "Approve" 558msgid "Approve"
559msgstr "Approuver" 559msgstr "Approuver"
560 560
561#: html.c:3411 561#: html.c:3787
562msgid "Approve this follow request" 562msgid "Approve this follow request"
563msgstr "Approuver cette demande de suivi" 563msgstr "Approuver cette demande de suivi"
564 564
565#: html.c:3414 html.c:4951 565#: html.c:3790 html.c:5395
566msgid "Discard" 566msgid "Discard"
567msgstr "Rejeter" 567msgstr "Rejeter"
568 568
569#: html.c:3414 569#: html.c:3790
570msgid "Discard this follow request" 570msgid "Discard this follow request"
571msgstr "Rejeter la demande suivante" 571msgstr "Rejeter la demande suivante"
572 572
573#: html.c:3419 html.c:4795 573#: html.c:3795 html.c:5239
574msgid "Unmute" 574msgid "Unmute"
575msgstr "Ne plus taire" 575msgstr "Ne plus taire"
576 576
577#: html.c:3420 577#: html.c:3796
578msgid "Stop blocking activities from this user" 578msgid "Stop blocking activities from this user"
579msgstr "Arrêter de bloquer les activités de cette personne" 579msgstr "Arrêter de bloquer les activités de cette personne"
580 580
581#: html.c:3424 581#: html.c:3800
582msgid "Block any activity from this user" 582msgid "Block any activity from this user"
583msgstr "Bloque toutes les activités de cette personne" 583msgstr "Bloque toutes les activités de cette personne"
584 584
585#: html.c:3432 585#: html.c:3808
586msgid "Direct Message..." 586msgid "Direct Message..."
587msgstr "Message direct…" 587msgstr "Message direct…"
588 588
589#: html.c:3467 589#: html.c:3843
590msgid "Pending follow confirmations" 590msgid "Pending follow confirmations"
591msgstr "Confirmation de suivi en attente" 591msgstr "Confirmation de suivi en attente"
592 592
593#: html.c:3471 593#: html.c:3847
594msgid "People you follow" 594msgid "People you follow"
595msgstr "Personnes que vous suivez" 595msgstr "Personnes que vous suivez"
596 596
597#: html.c:3472 597#: html.c:3848
598msgid "People that follow you" 598msgid "People that follow you"
599msgstr "Personnes qui vous suivent" 599msgstr "Personnes qui vous suivent"
600 600
601#: html.c:3511 601#: html.c:3887
602msgid "Clear all" 602msgid "Clear all"
603msgstr "Tout nettoyer" 603msgstr "Tout nettoyer"
604 604
605#: html.c:3571 605#: html.c:3951
606msgid "Mention" 606msgid "Mention"
607msgstr "Mention" 607msgstr "Mention"
608 608
609#: html.c:3574 609#: html.c:3954
610msgid "Finished poll" 610msgid "Finished poll"
611msgstr "Sondage terminé" 611msgstr "Sondage terminé"
612 612
613#: html.c:3590 613#: html.c:3979
614msgid "Follow Request" 614msgid "Follow Request"
615msgstr "Requête de suivi" 615msgstr "Requête de suivi"
616 616
617#: html.c:3674 617#: html.c:4089
618msgid "Context" 618msgid "Context"
619msgstr "Contexte" 619msgstr "Contexte"
620 620
621#: html.c:3692 621#: html.c:4107
622msgid "New" 622msgid "New"
623msgstr "Nouveau" 623msgstr "Nouveau"
624 624
625#: html.c:3707 625#: html.c:4122
626msgid "Already seen" 626msgid "Already seen"
627msgstr "Déjà vu" 627msgstr "Déjà vu"
628 628
629#: html.c:3722 629#: html.c:4137
630msgid "None" 630msgid "None"
631msgstr "Aucun" 631msgstr "Aucun"
632 632
633#: html.c:3994 633#: html.c:4414
634#, c-format 634#, c-format
635msgid "Search results for account %s" 635msgid "Search results for account %s"
636msgstr "Résultats de recherche pour le compte %s" 636msgstr "Résultats de recherche pour le compte %s"
637 637
638#: html.c:4001 638#: html.c:4421
639#, c-format 639#, c-format
640msgid "Account %s not found" 640msgid "Account %s not found"
641msgstr "Compte %s non trouvé" 641msgstr "Compte %s non trouvé"
642 642
643#: html.c:4032 643#: html.c:4452
644#, c-format 644#, c-format
645msgid "Search results for tag %s" 645msgid "Search results for tag %s"
646msgstr "Résultats de recherche pour le tag %s" 646msgstr "Résultats de recherche pour le tag %s"
647 647
648#: html.c:4032 648#: html.c:4452
649#, c-format 649#, c-format
650msgid "Nothing found for tag %s" 650msgid "Nothing found for tag %s"
651msgstr "Rien n'a été trouvé pour le tag %s" 651msgstr "Rien n'a été trouvé pour le tag %s"
652 652
653#: html.c:4048 653#: html.c:4468
654#, c-format 654#, c-format
655msgid "Search results for '%s' (may be more)" 655msgid "Search results for '%s' (may be more)"
656msgstr "Résultats de recherche pour '%s' (il pourrait y en avoir davantage)" 656msgstr "Résultats de recherche pour '%s' (il pourrait y en avoir davantage)"
657 657
658#: html.c:4051 658#: html.c:4471
659#, c-format 659#, c-format
660msgid "Search results for '%s'" 660msgid "Search results for '%s'"
661msgstr "Résultats de recherche pour '%s'" 661msgstr "Résultats de recherche pour '%s'"
662 662
663#: html.c:4054 663#: html.c:4474
664#, c-format 664#, c-format
665msgid "No more matches for '%s'" 665msgid "No more matches for '%s'"
666msgstr "Pas davantage de résultats pour '%s'" 666msgstr "Pas davantage de résultats pour '%s'"
667 667
668#: html.c:4056 668#: html.c:4476
669#, c-format 669#, c-format
670msgid "Nothing found for '%s'" 670msgid "Nothing found for '%s'"
671msgstr "Rien n'a été trouvé pour '%s'" 671msgstr "Rien n'a été trouvé pour '%s'"
672 672
673#: html.c:4154 673#: html.c:4574
674msgid "Showing instance timeline" 674msgid "Showing instance timeline"
675msgstr "Montrer la chronologie de l'instance" 675msgstr "Montrer la chronologie de l'instance"
676 676
677#: html.c:4237 677#: html.c:4657
678#, c-format 678#, c-format
679msgid "Showing timeline for list '%s'" 679msgid "Showing timeline for list '%s'"
680msgstr "Montrer le chronologie pour la liste '%s'" 680msgstr "Montrer le chronologie pour la liste '%s'"
681 681
682#: httpd.c:258 682#: httpd.c:259
683#, c-format 683#, c-format
684msgid "Search results for tag #%s" 684msgid "Search results for tag #%s"
685msgstr "Résultats de recherche pour le tag #%s" 685msgstr "Résultats de recherche pour le tag #%s"
686 686
687#: httpd.c:267 687#: httpd.c:268
688msgid "Recent posts by users in this instance" 688msgid "Recent posts by users in this instance"
689msgstr "Messages récents des internautes de cette instance" 689msgstr "Messages récents des internautes de cette instance"
690 690
691#: html.c:1764 691#: html.c:1842
692msgid "Blocked hashtags..." 692msgid "Blocked hashtags..."
693msgstr "Hashtags bloqués…" 693msgstr "Hashtags bloqués…"
694 694
695#: html.c:518 695#: html.c:574
696msgid "Optional URL to reply to" 696msgid "Optional URL to reply to"
697msgstr "URL optionnelle pour répondre à" 697msgstr "URL optionnelle pour répondre à"
698 698
699#: html.c:695 699#: html.c:751
700msgid "" 700msgid ""
701"Option 1...\n" 701"Option 1...\n"
702"Option 2...\n" 702"Option 2...\n"
@@ -708,94 +708,106 @@ msgstr ""
708"Option 3…\n" 708"Option 3…\n"
709"…" 709"…"
710 710
711#: html.c:1558 711#: html.c:1636
712msgid "Bot API key" 712msgid "Bot API key"
713msgstr "Clé API de bot" 713msgstr "Clé API de bot"
714 714
715#: html.c:1564 715#: html.c:1642
716msgid "Chat id" 716msgid "Chat id"
717msgstr "Identifiant du salon" 717msgstr "Identifiant du salon"
718 718
719#: html.c:1572 719#: html.c:1650
720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
721msgstr "serveur ntfy – adresse complète (ex : https://ntfy.sh/VotreSujet)" 721msgstr "serveur ntfy – adresse complète (ex : https://ntfy.sh/VotreSujet)"
722 722
723#: html.c:1578 723#: html.c:1656
724msgid "ntfy token - if needed" 724msgid "ntfy token - if needed"
725msgstr "jeton ntfy – si nécessaire" 725msgstr "jeton ntfy – si nécessaire"
726 726
727#: html.c:3078 727#: html.c:3366
728msgid "pinned" 728msgid "pinned"
729msgstr "épinglé" 729msgstr "épinglé"
730 730
731#: html.c:3090 731#: html.c:3378
732msgid "bookmarks" 732msgid "bookmarks"
733msgstr "signets" 733msgstr "signets"
734 734
735#: html.c:3102 735#: html.c:3390
736msgid "drafts" 736msgid "drafts"
737msgstr "brouillons" 737msgstr "brouillons"
738 738
739#: html.c:584 739#: html.c:640
740msgid "Scheduled post..." 740msgid "Scheduled post..."
741msgstr "Publication planifiée…" 741msgstr "Publication planifiée…"
742 742
743msgid "Post date and time:" 743msgid "Post date and time:"
744msgstr "Date et heure de publication :" 744msgstr "Date et heure de publication :"
745 745
746#: html.c:3113 html.c:4214 746#: html.c:3401 html.c:4634
747msgid "Scheduled posts" 747msgid "Scheduled posts"
748msgstr "Publications planifiées" 748msgstr "Publications planifiées"
749 749
750#: html.c:3114 750#: html.c:3402
751msgid "scheduled posts" 751msgid "scheduled posts"
752msgstr "publications planifiées" 752msgstr "publications planifiées"
753 753
754#: html.c:578 754#: html.c:634
755#, c-format 755#, c-format
756msgid "Post date and time (timezone: %s):" 756msgid "Post date and time (timezone: %s):"
757msgstr "Date et heure de publication (fuseau horaire : %s) :" 757msgstr "Date et heure de publication (fuseau horaire : %s) :"
758 758
759#: html.c:1689 759#: html.c:1767
760msgid "Time zone:" 760msgid "Time zone:"
761msgstr "Fuseau horaire :" 761msgstr "Fuseau horaire :"
762 762
763#: html.c:559 763#: html.c:615
764msgid "Language:" 764msgid "Language:"
765msgstr "" 765msgstr ""
766 766
767#: html.c:1580 767#: html.c:1658
768msgid "Notify webhook:" 768msgid "Notify webhook:"
769msgstr "" 769msgstr ""
770 770
771#: html.c:1586 771#: html.c:1664
772msgid "http://example.com/webhook" 772msgid "http://example.com/webhook"
773msgstr "" 773msgstr ""
774 774
775#: html.c:1694 775#: html.c:1772
776msgid "Languages you usually post in:" 776msgid "Languages you usually post in:"
777msgstr "" 777msgstr ""
778 778
779#: html.c:1700 779#: html.c:1778
780msgid "en fr es de_AT" 780msgid "en fr es de_AT"
781msgstr "" 781msgstr ""
782 782
783#: html.c:460 783#: html.c:428
784msgid "Visibility: " 784msgid "Visibility: "
785msgstr "" 785msgstr ""
786 786
787#: html.c:468
788msgid "Public" 787msgid "Public"
789msgstr "" 788msgstr ""
790 789
791#: html.c:477
792msgid "Unlisted" 790msgid "Unlisted"
793msgstr "" 791msgstr ""
794 792
795#: html.c:486
796msgid "Followers-only" 793msgid "Followers-only"
797msgstr "" 794msgstr ""
798 795
799#: html.c:495
800msgid "Direct Message" 796msgid "Direct Message"
801msgstr "" 797msgstr ""
798
799#: html.c:488 html.c:2534 html.c:2559 html.c:5177
800msgid "EmojiUnreact"
801msgstr ""
802
803#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
804msgid "EmojiReact"
805msgstr ""
806
807#: html.c:2115
808msgid "Emoji react..."
809msgstr ""
810
811#: html.c:2609
812msgid "Emoji reactions: "
813msgstr ""
diff --git a/po/fy_NL.po b/po/fy_NL.po
index d34377b..083c679 100644
--- a/po/fy_NL.po
+++ b/po/fy_NL.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: fy_NL\n" 8"Language: fy_NL\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Gefoelige ynhâld: " 13msgstr "Gefoelige ynhâld: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Beskriuwing fan gefoelige ynhâld" 17msgstr "Beskriuwing fan gefoelige ynhâld"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Allinnich foar neamde personen: " 20msgstr "Allinnich foar neamde personen: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Antwurd op (URL): " 24msgstr "Antwurd op (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Net ferstjoere, mar bewarje as konsept" 28msgstr "Net ferstjoere, mar bewarje as konsept"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Konsept:" 32msgstr "Konsept:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Bylagen..." 36msgstr "Bylagen..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Bestân:" 40msgstr "Bestân:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Fjild leech meitsje om de bylage fuort te smiten" 44msgstr "Fjild leech meitsje om de bylage fuort te smiten"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Beskriuwing fan bylage" 48msgstr "Beskriuwing fan bylage"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Peiling..." 52msgstr "Peiling..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Peilingopsjes (ien per rigel, oant 8):" 56msgstr "Peilingopsjes (ien per rigel, oant 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Ien keuze" 60msgstr "Ien keuze"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Mear keuzes" 64msgstr "Mear keuzes"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Einiget oer 5 minuten" 68msgstr "Einiget oer 5 minuten"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Einiget oer 1 oere" 72msgstr "Einiget oer 1 oere"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Einiget oer 1 dei" 76msgstr "Einiget oer 1 dei"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Berjocht" 80msgstr "Berjocht"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Beskriuwing fan de side" 84msgstr "Beskriuwing fan de side"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Admin e-mail" 88msgstr "Admin e-mail"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Admin akkount" 92msgstr "Admin akkount"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d folgjend, %d folgers" 97msgstr "%d folgjend, %d folgers"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privé" 105msgstr "privé"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "publik" 109msgstr "publik"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notifikaasjes" 113msgstr "notifikaasjes"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "minsken" 117msgstr "minsken"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instantsje" 121msgstr "instantsje"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,575 +128,575 @@ msgstr ""
128"Sykje berjochten op URL of ynh??ld (reguliere ekspresje), @brûker@host " 128"Sykje berjochten op URL of ynh??ld (reguliere ekspresje), @brûker@host "
129"akkounts, of #tag" 129"akkounts, of #tag"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Ynhâld sêkje" 133msgstr "Ynhâld sêkje"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "ferifiearre keppeling" 137msgstr "ferifiearre keppeling"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Lokaasje: " 141msgstr "Lokaasje: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nij berjocht..." 145msgstr "Nij berjocht..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "Wat wolst diele?" 149msgstr "Wat wolst diele?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Hannelens..." 153msgstr "Hannelens..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Folgje" 157msgstr "Folgje"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(fia URL of brûker@host)" 161msgstr "(fia URL of brûker@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Boost" 165msgstr "Boost"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(fia URL)" 169msgstr "(fia URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Lyk" 173msgstr "Lyk"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Brûkersynstellings..." 177msgstr "Brûkersynstellings..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Werjeftenamme:" 181msgstr "Werjeftenamme:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Jo namme" 185msgstr "Jo namme"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Profylplaatsje: " 189msgstr "Profylplaatsje: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Hjoeddeistige profylplaatsje fuortsmite" 193msgstr "Hjoeddeistige profylplaatsje fuortsmite"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Koptekstplaatsje (banner): " 197msgstr "Koptekstplaatsje (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Hjoeddeistige koptekstplaatsje fuortsmite" 201msgstr "Hjoeddeistige koptekstplaatsje fuortsmite"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Skriuw hjir wat oer josels..." 209msgstr "Skriuw hjir wat oer josels..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Altyd gefoelige ynhâld toanje" 213msgstr "Altyd gefoelige ynhâld toanje"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "E-mailadres foar notifikaasjes:" 217msgstr "E-mailadres foar notifikaasjes:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Telegram notifikaasjes (bot kaai en chat id):" 221msgstr "Telegram notifikaasjes (bot kaai en chat id):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "ntfy notifikaasjes (ntfy server en token):" 225msgstr "ntfy notifikaasjes (ntfy server en token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "" 229msgstr ""
230"Maksimaal oantal dagen om berjochten te bewarjen (0: serverynstellings):" 230"Maksimaal oantal dagen om berjochten te bewarjen (0: serverynstellings):"
231 231
232#: html.c:1602 232#: html.c:1680
233msgid "Drop direct messages from people you don't follow" 233msgid "Drop direct messages from people you don't follow"
234msgstr "Direktte berjochten fan minsken dy't jo net folgje fuortsmite" 234msgstr "Direktte berjochten fan minsken dy't jo net folgje fuortsmite"
235 235
236#: html.c:1611 236#: html.c:1689
237msgid "This account is a bot" 237msgid "This account is a bot"
238msgstr "Dit akkount is in bot" 238msgstr "Dit akkount is in bot"
239 239
240#: html.c:1620 240#: html.c:1698
241msgid "Auto-boost all mentions to this account" 241msgid "Auto-boost all mentions to this account"
242msgstr "Automatysk boostje fan alle fermeldingen fan dit akkount" 242msgstr "Automatysk boostje fan alle fermeldingen fan dit akkount"
243 243
244#: html.c:1629 244#: html.c:1707
245msgid "This account is private (posts are not shown through the web)" 245msgid "This account is private (posts are not shown through the web)"
246msgstr "Dit akkount is privé (berjochten wurde net toand fia it web)" 246msgstr "Dit akkount is privé (berjochten wurde net toand fia it web)"
247 247
248#: html.c:1639 248#: html.c:1717
249msgid "Collapse top threads by default" 249msgid "Collapse top threads by default"
250msgstr "Standert topthreads ynklappe" 250msgstr "Standert topthreads ynklappe"
251 251
252#: html.c:1648 252#: html.c:1726
253msgid "Follow requests must be approved" 253msgid "Follow requests must be approved"
254msgstr "Folchfersiken moatte goedkeard wurde" 254msgstr "Folchfersiken moatte goedkeard wurde"
255 255
256#: html.c:1657 256#: html.c:1735
257msgid "Publish follower and following metrics" 257msgid "Publish follower and following metrics"
258msgstr "Folger- en folchstatistiken publisearje" 258msgstr "Folger- en folchstatistiken publisearje"
259 259
260#: html.c:1659 260#: html.c:1737
261msgid "Current location:" 261msgid "Current location:"
262msgstr "Hjoeddeistige lokaasje:" 262msgstr "Hjoeddeistige lokaasje:"
263 263
264#: html.c:1673 264#: html.c:1751
265msgid "Profile metadata (key=value pairs in each line):" 265msgid "Profile metadata (key=value pairs in each line):"
266msgstr "Profylmetadata (kaai=wearde pearen yn eltse rigel):" 266msgstr "Profylmetadata (kaai=wearde pearen yn eltse rigel):"
267 267
268#: html.c:1684 268#: html.c:1762
269msgid "Web interface language:" 269msgid "Web interface language:"
270msgstr "Webynterfacetaal:" 270msgstr "Webynterfacetaal:"
271 271
272#: html.c:1703 272#: html.c:1781
273msgid "New password:" 273msgid "New password:"
274msgstr "Nij wachtwurd:" 274msgstr "Nij wachtwurd:"
275 275
276#: html.c:1710 276#: html.c:1788
277msgid "Repeat new password:" 277msgid "Repeat new password:"
278msgstr "Nij wachtwurd werhelje:" 278msgstr "Nij wachtwurd werhelje:"
279 279
280#: html.c:1720 280#: html.c:1798
281msgid "Update user info" 281msgid "Update user info"
282msgstr "Brûkerynformaasje bywurkje" 282msgstr "Brûkerynformaasje bywurkje"
283 283
284#: html.c:1731 284#: html.c:1809
285msgid "Followed hashtags..." 285msgid "Followed hashtags..."
286msgstr "Folge hashtags..." 286msgstr "Folge hashtags..."
287 287
288#: html.c:1733 html.c:1766 288#: html.c:1811 html.c:1844
289msgid "One hashtag per line" 289msgid "One hashtag per line"
290msgstr "Ien hashtag per rigel" 290msgstr "Ien hashtag per rigel"
291 291
292#: html.c:1755 html.c:1787 292#: html.c:1833 html.c:1865
293msgid "Update hashtags" 293msgid "Update hashtags"
294msgstr "Hashtags bywurkje" 294msgstr "Hashtags bywurkje"
295 295
296#: html.c:1904 296#: html.c:1982
297msgid "Say you like this post" 297msgid "Say you like this post"
298msgstr "Sis dat jo dit berjocht mooi fine" 298msgstr "Sis dat jo dit berjocht mooi fine"
299 299
300#: html.c:1909 html.c:4775 300#: html.c:1987 html.c:5219
301msgid "Unlike" 301msgid "Unlike"
302msgstr "Net mooi fine" 302msgstr "Net mooi fine"
303 303
304#: html.c:1909 304#: html.c:1987
305msgid "Nah don't like it that much" 305msgid "Nah don't like it that much"
306msgstr "Nee, ik find it net sa mooi" 306msgstr "Nee, ik find it net sa mooi"
307 307
308#: html.c:1915 html.c:4912 308#: html.c:1993 html.c:5356
309msgid "Unpin" 309msgid "Unpin"
310msgstr "Net fêstsette" 310msgstr "Net fêstsette"
311 311
312#: html.c:1915 312#: html.c:1993
313msgid "Unpin this post from your timeline" 313msgid "Unpin this post from your timeline"
314msgstr "Dit berjocht net mear fêstsette op jo tiidline" 314msgstr "Dit berjocht net mear fêstsette op jo tiidline"
315 315
316#: html.c:1918 html.c:4907 316#: html.c:1996 html.c:5351
317msgid "Pin" 317msgid "Pin"
318msgstr "Fêstsette" 318msgstr "Fêstsette"
319 319
320#: html.c:1918 320#: html.c:1996
321msgid "Pin this post to the top of your timeline" 321msgid "Pin this post to the top of your timeline"
322msgstr "Dit berjocht fêstsette boppe-oan jo tiidline" 322msgstr "Dit berjocht fêstsette boppe-oan jo tiidline"
323 323
324#: html.c:1925 324#: html.c:2003
325msgid "Announce this post to your followers" 325msgid "Announce this post to your followers"
326msgstr "Dit berjocht oankondichje by jo folgers" 326msgstr "Dit berjocht oankondichje by jo folgers"
327 327
328#: html.c:1930 html.c:4783 328#: html.c:2008 html.c:5227
329msgid "Unboost" 329msgid "Unboost"
330msgstr "Untboostje" 330msgstr "Untboostje"
331 331
332#: html.c:1930 332#: html.c:2008
333msgid "I regret I boosted this" 333msgid "I regret I boosted this"
334msgstr "Ik betreure dat ik dit boostet ha" 334msgstr "Ik betreure dat ik dit boostet ha"
335 335
336#: html.c:1936 html.c:4922 336#: html.c:2014 html.c:5366
337msgid "Unbookmark" 337msgid "Unbookmark"
338msgstr "Ut favorite fuortsmite" 338msgstr "Ut favorite fuortsmite"
339 339
340#: html.c:1936 340#: html.c:2014
341msgid "Delete this post from your bookmarks" 341msgid "Delete this post from your bookmarks"
342msgstr "Dit berjocht ut jo favorite fuortsmite" 342msgstr "Dit berjocht ut jo favorite fuortsmite"
343 343
344#: html.c:1939 html.c:4917 344#: html.c:2017 html.c:5361
345msgid "Bookmark" 345msgid "Bookmark"
346msgstr "Favoryt" 346msgstr "Favoryt"
347 347
348#: html.c:1939 348#: html.c:2017
349msgid "Add this post to your bookmarks" 349msgid "Add this post to your bookmarks"
350msgstr "Dit berjocht tafoegje oan jo favorite" 350msgstr "Dit berjocht tafoegje oan jo favorite"
351 351
352#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 352#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
353msgid "Unfollow" 353msgid "Unfollow"
354msgstr "Untfolgje" 354msgstr "Untfolgje"
355 355
356#: html.c:1945 html.c:3387 356#: html.c:2023 html.c:3763 html.c:4042
357msgid "Stop following this user's activity" 357msgid "Stop following this user's activity"
358msgstr "Stopje mei it folgjen fan de aktiviteit fan dizze brûker" 358msgstr "Stopje mei it folgjen fan de aktiviteit fan dizze brûker"
359 359
360#: html.c:1949 html.c:3401 360#: html.c:2027 html.c:3777 html.c:4044
361msgid "Start following this user's activity" 361msgid "Start following this user's activity"
362msgstr "Begjinne mei it folgjen fan de aktiviteit fan dizze brûker" 362msgstr "Begjinne mei it folgjen fan de aktiviteit fan dizze brûker"
363 363
364#: html.c:1955 html.c:4860 364#: html.c:2033 html.c:5304
365msgid "Unfollow Group" 365msgid "Unfollow Group"
366msgstr "Untfolgje groep" 366msgstr "Untfolgje groep"
367 367
368#: html.c:1956 368#: html.c:2034
369msgid "Stop following this group or channel" 369msgid "Stop following this group or channel"
370msgstr "Stopje mei it folgjen fan dizze groep of kanaal" 370msgstr "Stopje mei it folgjen fan dizze groep of kanaal"
371 371
372#: html.c:1960 html.c:4847 372#: html.c:2038 html.c:5291
373msgid "Follow Group" 373msgid "Follow Group"
374msgstr "Folgje groep" 374msgstr "Folgje groep"
375 375
376#: html.c:1961 376#: html.c:2039
377msgid "Start following this group or channel" 377msgid "Start following this group or channel"
378msgstr "Begjinne mei it folgjen fan dizze groep of kanaal" 378msgstr "Begjinne mei it folgjen fan dizze groep of kanaal"
379 379
380#: html.c:1966 html.c:3423 html.c:4791 380#: html.c:2044 html.c:3799 html.c:5235
381msgid "MUTE" 381msgid "MUTE"
382msgstr "STILJE" 382msgstr "STILJE"
383 383
384#: html.c:1967 384#: html.c:2045
385msgid "Block any activity from this user forever" 385msgid "Block any activity from this user forever"
386msgstr "Alle aktiviteit fan dizze brûker foar altyd blokkearje" 386msgstr "Alle aktiviteit fan dizze brûker foar altyd blokkearje"
387 387
388#: html.c:1972 html.c:3405 html.c:4877 388#: html.c:2050 html.c:3781 html.c:5321
389msgid "Delete" 389msgid "Delete"
390msgstr "Fuortsmite" 390msgstr "Fuortsmite"
391 391
392#: html.c:1972 392#: html.c:2050
393msgid "Delete this post" 393msgid "Delete this post"
394msgstr "Dit berjocht fuortsmite" 394msgstr "Dit berjocht fuortsmite"
395 395
396#: html.c:1975 html.c:4799 396#: html.c:2053 html.c:5243
397msgid "Hide" 397msgid "Hide"
398msgstr "Ferbergje" 398msgstr "Ferbergje"
399 399
400#: html.c:1975 400#: html.c:2053
401msgid "Hide this post and its children" 401msgid "Hide this post and its children"
402msgstr "Dit berjocht en syn bern ferbergje" 402msgstr "Dit berjocht en syn bern ferbergje"
403 403
404#: html.c:2017 404#: html.c:2095
405msgid "Edit..." 405msgid "Edit..."
406msgstr "Bewurkje..." 406msgstr "Bewurkje..."
407 407
408#: html.c:2039 408#: html.c:2133
409msgid "Reply..." 409msgid "Reply..."
410msgstr "Antwurd..." 410msgstr "Antwurd..."
411 411
412#: html.c:2090 412#: html.c:2184
413msgid "Truncated (too deep)" 413msgid "Truncated (too deep)"
414msgstr "Ofkapte (te djip)" 414msgstr "Ofkapte (te djip)"
415 415
416#: html.c:2108 416#: html.c:2202
417msgid "follows you" 417msgid "follows you"
418msgstr "folget jo" 418msgstr "folget jo"
419 419
420#: html.c:2182 420#: html.c:2276
421msgid "Pinned" 421msgid "Pinned"
422msgstr "Fêstsetten" 422msgstr "Fêstsetten"
423 423
424#: html.c:2190 424#: html.c:2284
425msgid "Bookmarked" 425msgid "Bookmarked"
426msgstr "Favoryt" 426msgstr "Favoryt"
427 427
428#: html.c:2198 428#: html.c:2292
429msgid "Poll" 429msgid "Poll"
430msgstr "Peiling" 430msgstr "Peiling"
431 431
432#: html.c:2205 432#: html.c:2299
433msgid "Voted" 433msgid "Voted"
434msgstr "Stimme" 434msgstr "Stimme"
435 435
436#: html.c:2214 436#: html.c:2308
437msgid "Event" 437msgid "Event"
438msgstr "Barrens" 438msgstr "Barrens"
439 439
440#: html.c:2246 html.c:2275 440#: html.c:2340 html.c:2369
441msgid "boosted" 441msgid "boosted"
442msgstr "boostet" 442msgstr "boostet"
443 443
444#: html.c:2289 444#: html.c:2383
445msgid "in reply to" 445msgid "in reply to"
446msgstr "as antwurd op" 446msgstr "as antwurd op"
447 447
448#: html.c:2345 448#: html.c:2439
449msgid " [SENSITIVE CONTENT]" 449msgid " [SENSITIVE CONTENT]"
450msgstr " [GEFOELIGE YNHÂLD]" 450msgstr " [GEFOELIGE YNHÂLD]"
451 451
452#: html.c:2512 452#: html.c:2796
453msgid "Vote" 453msgid "Vote"
454msgstr "Stimme" 454msgstr "Stimme"
455 455
456#: html.c:2522 456#: html.c:2806
457msgid "Closed" 457msgid "Closed"
458msgstr "Sletten" 458msgstr "Sletten"
459 459
460#: html.c:2547 460#: html.c:2831
461msgid "Closes in" 461msgid "Closes in"
462msgstr "Slut oer" 462msgstr "Slut oer"
463 463
464#: html.c:2627 464#: html.c:2911
465msgid "Video" 465msgid "Video"
466msgstr "Fideo" 466msgstr "Fideo"
467 467
468#: html.c:2642 468#: html.c:2926
469msgid "Audio" 469msgid "Audio"
470msgstr "Audio" 470msgstr "Audio"
471 471
472#: html.c:2670 472#: html.c:2954
473msgid "Attachment" 473msgid "Attachment"
474msgstr "Bylage" 474msgstr "Bylage"
475 475
476#: html.c:2684 476#: html.c:2968
477msgid "Alt..." 477msgid "Alt..."
478msgstr "Alt..." 478msgstr "Alt..."
479 479
480#: html.c:2697 480#: html.c:2981
481msgid "Source channel or community" 481msgid "Source channel or community"
482msgstr "Boarnekanaal of mienskip" 482msgstr "Boarnekanaal of mienskip"
483 483
484#: html.c:2791 484#: html.c:3075
485msgid "Time: " 485msgid "Time: "
486msgstr "Tiid: " 486msgstr "Tiid: "
487 487
488#: html.c:2872 488#: html.c:3156
489msgid "Older..." 489msgid "Older..."
490msgstr "Alder..." 490msgstr "Alder..."
491 491
492#: html.c:2974 492#: html.c:3258
493msgid "about this site" 493msgid "about this site"
494msgstr "oer dizze side" 494msgstr "oer dizze side"
495 495
496#: html.c:2976 496#: html.c:3260
497msgid "powered by " 497msgid "powered by "
498msgstr "oanjoegen troch " 498msgstr "oanjoegen troch "
499 499
500#: html.c:3041 500#: html.c:3329
501msgid "Dismiss" 501msgid "Dismiss"
502msgstr "Wegerje" 502msgstr "Wegerje"
503 503
504#: html.c:3058 504#: html.c:3346
505#, c-format 505#, c-format
506msgid "Timeline for list '%s'" 506msgid "Timeline for list '%s'"
507msgstr "Tiidline foar list '%s'" 507msgstr "Tiidline foar list '%s'"
508 508
509#: html.c:3077 html.c:4169 509#: html.c:3365 html.c:4589
510msgid "Pinned posts" 510msgid "Pinned posts"
511msgstr "Fêstsette berjochten" 511msgstr "Fêstsette berjochten"
512 512
513#: html.c:3089 html.c:4184 513#: html.c:3377 html.c:4604
514msgid "Bookmarked posts" 514msgid "Bookmarked posts"
515msgstr "Favorite berjochten" 515msgstr "Favorite berjochten"
516 516
517#: html.c:3101 html.c:4199 517#: html.c:3389 html.c:4619
518msgid "Post drafts" 518msgid "Post drafts"
519msgstr "Berjochtkonsepten" 519msgstr "Berjochtkonsepten"
520 520
521#: html.c:3177 521#: html.c:3465
522msgid "No more unseen posts" 522msgid "No more unseen posts"
523msgstr "Gjin net-lêzene berjochten mear" 523msgstr "Gjin net-lêzene berjochten mear"
524 524
525#: html.c:3181 html.c:3290 525#: html.c:3469 html.c:3578
526msgid "Back to top" 526msgid "Back to top"
527msgstr "Werom nei boppe" 527msgstr "Werom nei boppe"
528 528
529#: html.c:3243 529#: html.c:3531
530msgid "History" 530msgid "History"
531msgstr "Skiednis" 531msgstr "Skiednis"
532 532
533#: html.c:3295 html.c:3734 533#: html.c:3583 html.c:4149
534msgid "More..." 534msgid "More..."
535msgstr "Mear..." 535msgstr "Mear..."
536 536
537#: html.c:3391 html.c:4813 537#: html.c:3767 html.c:5257
538msgid "Unlimit" 538msgid "Unlimit"
539msgstr "Unbeheind" 539msgstr "Unbeheind"
540 540
541#: html.c:3392 541#: html.c:3768
542msgid "Allow announces (boosts) from this user" 542msgid "Allow announces (boosts) from this user"
543msgstr "Oankondichings (boosts) fan dizze brûker tasteane" 543msgstr "Oankondichings (boosts) fan dizze brûker tasteane"
544 544
545#: html.c:3395 html.c:4809 545#: html.c:3771 html.c:5253
546msgid "Limit" 546msgid "Limit"
547msgstr "Beheine" 547msgstr "Beheine"
548 548
549#: html.c:3396 549#: html.c:3772
550msgid "Block announces (boosts) from this user" 550msgid "Block announces (boosts) from this user"
551msgstr "Oankondichings (boosts) fan dizze brûker blokkearje" 551msgstr "Oankondichings (boosts) fan dizze brûker blokkearje"
552 552
553#: html.c:3405 553#: html.c:3781
554msgid "Delete this user" 554msgid "Delete this user"
555msgstr "Dizze brûker fuortsmite" 555msgstr "Dizze brûker fuortsmite"
556 556
557#: html.c:3410 html.c:4927 557#: html.c:3786 html.c:5371
558msgid "Approve" 558msgid "Approve"
559msgstr "Goedkarre" 559msgstr "Goedkarre"
560 560
561#: html.c:3411 561#: html.c:3787
562msgid "Approve this follow request" 562msgid "Approve this follow request"
563msgstr "Dit folchfersk goedkarre" 563msgstr "Dit folchfersk goedkarre"
564 564
565#: html.c:3414 html.c:4951 565#: html.c:3790 html.c:5395
566msgid "Discard" 566msgid "Discard"
567msgstr "Wegerje" 567msgstr "Wegerje"
568 568
569#: html.c:3414 569#: html.c:3790
570msgid "Discard this follow request" 570msgid "Discard this follow request"
571msgstr "Dit folchfersk wegerje" 571msgstr "Dit folchfersk wegerje"
572 572
573#: html.c:3419 html.c:4795 573#: html.c:3795 html.c:5239
574msgid "Unmute" 574msgid "Unmute"
575msgstr "Net mear stilje" 575msgstr "Net mear stilje"
576 576
577#: html.c:3420 577#: html.c:3796
578msgid "Stop blocking activities from this user" 578msgid "Stop blocking activities from this user"
579msgstr "Stopje mei it blokkearjen fan aktiviteiten fan dizze brûker" 579msgstr "Stopje mei it blokkearjen fan aktiviteiten fan dizze brûker"
580 580
581#: html.c:3424 581#: html.c:3800
582msgid "Block any activity from this user" 582msgid "Block any activity from this user"
583msgstr "Alle aktiviteit fan dizze brûker blokkearje" 583msgstr "Alle aktiviteit fan dizze brûker blokkearje"
584 584
585#: html.c:3432 585#: html.c:3808
586msgid "Direct Message..." 586msgid "Direct Message..."
587msgstr "Persoanlik berjocht..." 587msgstr "Persoanlik berjocht..."
588 588
589#: html.c:3467 589#: html.c:3843
590msgid "Pending follow confirmations" 590msgid "Pending follow confirmations"
591msgstr "Iepenstjitte folchbefestichings" 591msgstr "Iepenstjitte folchbefestichings"
592 592
593#: html.c:3471 593#: html.c:3847
594msgid "People you follow" 594msgid "People you follow"
595msgstr "Minsken dy't jo folge" 595msgstr "Minsken dy't jo folge"
596 596
597#: html.c:3472 597#: html.c:3848
598msgid "People that follow you" 598msgid "People that follow you"
599msgstr "Minsken dy't jo folge" 599msgstr "Minsken dy't jo folge"
600 600
601#: html.c:3511 601#: html.c:3887
602msgid "Clear all" 602msgid "Clear all"
603msgstr "Alles wiskje" 603msgstr "Alles wiskje"
604 604
605#: html.c:3571 605#: html.c:3951
606msgid "Mention" 606msgid "Mention"
607msgstr "Neame" 607msgstr "Neame"
608 608
609#: html.c:3574 609#: html.c:3954
610msgid "Finished poll" 610msgid "Finished poll"
611msgstr "Ofêrunde peiling" 611msgstr "Ofêrunde peiling"
612 612
613#: html.c:3590 613#: html.c:3979
614msgid "Follow Request" 614msgid "Follow Request"
615msgstr "Folchfersk" 615msgstr "Folchfersk"
616 616
617#: html.c:3674 617#: html.c:4089
618msgid "Context" 618msgid "Context"
619msgstr "Kontekst" 619msgstr "Kontekst"
620 620
621#: html.c:3692 621#: html.c:4107
622msgid "New" 622msgid "New"
623msgstr "Nij" 623msgstr "Nij"
624 624
625#: html.c:3707 625#: html.c:4122
626msgid "Already seen" 626msgid "Already seen"
627msgstr "Al sjoen" 627msgstr "Al sjoen"
628 628
629#: html.c:3722 629#: html.c:4137
630msgid "None" 630msgid "None"
631msgstr "Gjin" 631msgstr "Gjin"
632 632
633#: html.c:3994 633#: html.c:4414
634#, c-format 634#, c-format
635msgid "Search results for account %s" 635msgid "Search results for account %s"
636msgstr "Sêkresultaten foar akkount %s" 636msgstr "Sêkresultaten foar akkount %s"
637 637
638#: html.c:4001 638#: html.c:4421
639#, c-format 639#, c-format
640msgid "Account %s not found" 640msgid "Account %s not found"
641msgstr "Akkount %s net foun" 641msgstr "Akkount %s net foun"
642 642
643#: html.c:4032 643#: html.c:4452
644#, c-format 644#, c-format
645msgid "Search results for tag %s" 645msgid "Search results for tag %s"
646msgstr "Sêkresultaten foar tag %s" 646msgstr "Sêkresultaten foar tag %s"
647 647
648#: html.c:4032 648#: html.c:4452
649#, c-format 649#, c-format
650msgid "Nothing found for tag %s" 650msgid "Nothing found for tag %s"
651msgstr "Neat foun foar tag %s" 651msgstr "Neat foun foar tag %s"
652 652
653#: html.c:4048 653#: html.c:4468
654#, c-format 654#, c-format
655msgid "Search results for '%s' (may be more)" 655msgid "Search results for '%s' (may be more)"
656msgstr "Sêkresultaten foar '%s' (mooglik mear)" 656msgstr "Sêkresultaten foar '%s' (mooglik mear)"
657 657
658#: html.c:4051 658#: html.c:4471
659#, c-format 659#, c-format
660msgid "Search results for '%s'" 660msgid "Search results for '%s'"
661msgstr "Sêkresultaten foar '%s'" 661msgstr "Sêkresultaten foar '%s'"
662 662
663#: html.c:4054 663#: html.c:4474
664#, c-format 664#, c-format
665msgid "No more matches for '%s'" 665msgid "No more matches for '%s'"
666msgstr "Gjin fjirder oerienkomsten foar '%s'" 666msgstr "Gjin fjirder oerienkomsten foar '%s'"
667 667
668#: html.c:4056 668#: html.c:4476
669#, c-format 669#, c-format
670msgid "Nothing found for '%s'" 670msgid "Nothing found for '%s'"
671msgstr "Neat foun foar '%s'" 671msgstr "Neat foun foar '%s'"
672 672
673#: html.c:4154 673#: html.c:4574
674msgid "Showing instance timeline" 674msgid "Showing instance timeline"
675msgstr "Tiidline fan ynstallaasje toane" 675msgstr "Tiidline fan ynstallaasje toane"
676 676
677#: html.c:4237 677#: html.c:4657
678#, c-format 678#, c-format
679msgid "Showing timeline for list '%s'" 679msgid "Showing timeline for list '%s'"
680msgstr "Tiidline foar list '%s' toane" 680msgstr "Tiidline foar list '%s' toane"
681 681
682#: httpd.c:258 682#: httpd.c:259
683#, c-format 683#, c-format
684msgid "Search results for tag #%s" 684msgid "Search results for tag #%s"
685msgstr "Sêkresultaten foar tag #%s" 685msgstr "Sêkresultaten foar tag #%s"
686 686
687#: httpd.c:267 687#: httpd.c:268
688msgid "Recent posts by users in this instance" 688msgid "Recent posts by users in this instance"
689msgstr "Resinte berjochten fan brûkers yn dizze ynstallaasje" 689msgstr "Resinte berjochten fan brûkers yn dizze ynstallaasje"
690 690
691#: html.c:1764 691#: html.c:1842
692msgid "Blocked hashtags..." 692msgid "Blocked hashtags..."
693msgstr "Blokkearre hashtags..." 693msgstr "Blokkearre hashtags..."
694 694
695#: html.c:518 695#: html.c:574
696msgid "Optional URL to reply to" 696msgid "Optional URL to reply to"
697msgstr "Opsjonele URL om op te antwurdjen" 697msgstr "Opsjonele URL om op te antwurdjen"
698 698
699#: html.c:695 699#: html.c:751
700msgid "" 700msgid ""
701"Option 1...\n" 701"Option 1...\n"
702"Option 2...\n" 702"Option 2...\n"
@@ -708,94 +708,106 @@ msgstr ""
708"Optie 3...\n" 708"Optie 3...\n"
709"..." 709"..."
710 710
711#: html.c:1558 711#: html.c:1636
712msgid "Bot API key" 712msgid "Bot API key"
713msgstr "Bot API kaai" 713msgstr "Bot API kaai"
714 714
715#: html.c:1564 715#: html.c:1642
716msgid "Chat id" 716msgid "Chat id"
717msgstr "Chat id" 717msgstr "Chat id"
718 718
719#: html.c:1572 719#: html.c:1650
720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 720msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
721msgstr "ntfy server - folsleine URL (foarbyld: https://ntfy.sh/YourTopic)" 721msgstr "ntfy server - folsleine URL (foarbyld: https://ntfy.sh/YourTopic)"
722 722
723#: html.c:1578 723#: html.c:1656
724msgid "ntfy token - if needed" 724msgid "ntfy token - if needed"
725msgstr "ntfy token - as nedich" 725msgstr "ntfy token - as nedich"
726 726
727#: html.c:3078 727#: html.c:3366
728msgid "pinned" 728msgid "pinned"
729msgstr "fêssetten" 729msgstr "fêssetten"
730 730
731#: html.c:3090 731#: html.c:3378
732msgid "bookmarks" 732msgid "bookmarks"
733msgstr "favorite" 733msgstr "favorite"
734 734
735#: html.c:3102 735#: html.c:3390
736msgid "drafts" 736msgid "drafts"
737msgstr "konsepten" 737msgstr "konsepten"
738 738
739#: html.c:584 739#: html.c:640
740msgid "Scheduled post..." 740msgid "Scheduled post..."
741msgstr "Planne berjocht..." 741msgstr "Planne berjocht..."
742 742
743msgid "Post date and time:" 743msgid "Post date and time:"
744msgstr "Berjocht datum en tiid:" 744msgstr "Berjocht datum en tiid:"
745 745
746#: html.c:3113 html.c:4214 746#: html.c:3401 html.c:4634
747msgid "Scheduled posts" 747msgid "Scheduled posts"
748msgstr "Planne berjochten" 748msgstr "Planne berjochten"
749 749
750#: html.c:3114 750#: html.c:3402
751msgid "scheduled posts" 751msgid "scheduled posts"
752msgstr "planne berjochten" 752msgstr "planne berjochten"
753 753
754#: html.c:578 754#: html.c:634
755#, c-format 755#, c-format
756msgid "Post date and time (timezone: %s):" 756msgid "Post date and time (timezone: %s):"
757msgstr "Berjocht datum en tiid (tiidsone: %s):" 757msgstr "Berjocht datum en tiid (tiidsone: %s):"
758 758
759#: html.c:1689 759#: html.c:1767
760msgid "Time zone:" 760msgid "Time zone:"
761msgstr "Tiidsone:" 761msgstr "Tiidsone:"
762 762
763#: html.c:559 763#: html.c:615
764msgid "Language:" 764msgid "Language:"
765msgstr "" 765msgstr ""
766 766
767#: html.c:1580 767#: html.c:1658
768msgid "Notify webhook:" 768msgid "Notify webhook:"
769msgstr "" 769msgstr ""
770 770
771#: html.c:1586 771#: html.c:1664
772msgid "http://example.com/webhook" 772msgid "http://example.com/webhook"
773msgstr "" 773msgstr ""
774 774
775#: html.c:1694 775#: html.c:1772
776msgid "Languages you usually post in:" 776msgid "Languages you usually post in:"
777msgstr "" 777msgstr ""
778 778
779#: html.c:1700 779#: html.c:1778
780msgid "en fr es de_AT" 780msgid "en fr es de_AT"
781msgstr "" 781msgstr ""
782 782
783#: html.c:460 783#: html.c:428
784msgid "Visibility: " 784msgid "Visibility: "
785msgstr "" 785msgstr ""
786 786
787#: html.c:468
788msgid "Public" 787msgid "Public"
789msgstr "" 788msgstr ""
790 789
791#: html.c:477
792msgid "Unlisted" 790msgid "Unlisted"
793msgstr "" 791msgstr ""
794 792
795#: html.c:486
796msgid "Followers-only" 793msgid "Followers-only"
797msgstr "" 794msgstr ""
798 795
799#: html.c:495
800msgid "Direct Message" 796msgid "Direct Message"
801msgstr "" 797msgstr ""
798
799#: html.c:488 html.c:2534 html.c:2559 html.c:5177
800msgid "EmojiUnreact"
801msgstr ""
802
803#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
804msgid "EmojiReact"
805msgstr ""
806
807#: html.c:2115
808msgid "Emoji react..."
809msgstr ""
810
811#: html.c:2609
812msgid "Emoji reactions: "
813msgstr ""
diff --git a/po/it.po b/po/it.po
index a074635..ba5fe54 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: it\n" 8"Language: it\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Contenuto sensibile" 13msgstr "Contenuto sensibile"
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Descrizione del contenuto sensibile" 17msgstr "Descrizione del contenuto sensibile"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Riservato alle persone indicate: " 20msgstr "Riservato alle persone indicate: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Rispondi a (URL): " 24msgstr "Rispondi a (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Salva come bozza senza inviare" 28msgstr "Salva come bozza senza inviare"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Bozza" 32msgstr "Bozza"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Allegati..." 36msgstr "Allegati..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "File:" 40msgstr "File:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Pulisci ed elimina l'allegato" 44msgstr "Pulisci ed elimina l'allegato"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Descrizione dell'allegato" 48msgstr "Descrizione dell'allegato"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Sondaggio..." 52msgstr "Sondaggio..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Scelte per il sondaggio (una per linea, massimo 8):" 56msgstr "Scelte per il sondaggio (una per linea, massimo 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Una scelta" 60msgstr "Una scelta"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Scelte multiple" 64msgstr "Scelte multiple"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Termina in 5 minuti" 68msgstr "Termina in 5 minuti"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Termina in 1 ora" 72msgstr "Termina in 1 ora"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Termina in 1 giorno" 76msgstr "Termina in 1 giorno"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Post" 80msgstr "Post"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Descrizione del sito web" 84msgstr "Descrizione del sito web"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Email dell'amministratore" 88msgstr "Email dell'amministratore"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Account amministratore" 92msgstr "Account amministratore"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d seguiti, %d seguenti" 97msgstr "%d seguiti, %d seguenti"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privato" 105msgstr "privato"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "pubblico" 109msgstr "pubblico"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notifiche" 113msgstr "notifiche"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "persone" 117msgstr "persone"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "istanza" 121msgstr "istanza"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,574 +128,574 @@ msgstr ""
128"Ricerca post per URL o contenuto (espressione regolare), @user@host " 128"Ricerca post per URL o contenuto (espressione regolare), @user@host "
129"accounts, #tag" 129"accounts, #tag"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Ricerca contenuto" 133msgstr "Ricerca contenuto"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "link verificato" 137msgstr "link verificato"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Posizione: " 141msgstr "Posizione: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nuovo post..." 145msgstr "Nuovo post..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "Cosa stai pensando?" 149msgstr "Cosa stai pensando?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Operazioni..." 153msgstr "Operazioni..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Segui" 157msgstr "Segui"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(per URL o user@host)" 161msgstr "(per URL o user@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Annuncia" 165msgstr "Annuncia"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(per URL)" 169msgstr "(per URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Mi piace" 173msgstr "Mi piace"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Impostazioni..." 177msgstr "Impostazioni..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Nome visualizzato:" 181msgstr "Nome visualizzato:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Il tuo nome" 185msgstr "Il tuo nome"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Avatar: " 189msgstr "Avatar: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Elimina l'avatar" 193msgstr "Elimina l'avatar"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Immagine intestazione (banner): " 197msgstr "Immagine intestazione (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Elimina l'immagine d'intestazione" 201msgstr "Elimina l'immagine d'intestazione"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Descriviti qui..." 209msgstr "Descriviti qui..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Mostra sempre i contenuti sensibili" 213msgstr "Mostra sempre i contenuti sensibili"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "Indirizzo email per le notifiche:" 217msgstr "Indirizzo email per le notifiche:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Notifiche Telegram (bot key e chat id):" 221msgstr "Notifiche Telegram (bot key e chat id):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "Notifiche ntfy (server ntfy e token)" 225msgstr "Notifiche ntfy (server ntfy e token)"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "Giorni di mantenimento dei post (0: impostazione server)" 229msgstr "Giorni di mantenimento dei post (0: impostazione server)"
230 230
231#: html.c:1602 231#: html.c:1680
232msgid "Drop direct messages from people you don't follow" 232msgid "Drop direct messages from people you don't follow"
233msgstr "Elimina i messaggi diretti delle persone non seguite" 233msgstr "Elimina i messaggi diretti delle persone non seguite"
234 234
235#: html.c:1611 235#: html.c:1689
236msgid "This account is a bot" 236msgid "This account is a bot"
237msgstr "Questo account è un bot" 237msgstr "Questo account è un bot"
238 238
239#: html.c:1620 239#: html.c:1698
240msgid "Auto-boost all mentions to this account" 240msgid "Auto-boost all mentions to this account"
241msgstr "Annuncio automatico delle citazioni a quest'account" 241msgstr "Annuncio automatico delle citazioni a quest'account"
242 242
243#: html.c:1629 243#: html.c:1707
244msgid "This account is private (posts are not shown through the web)" 244msgid "This account is private (posts are not shown through the web)"
245msgstr "Quest'account è privato (post invisibili nel web)" 245msgstr "Quest'account è privato (post invisibili nel web)"
246 246
247#: html.c:1639 247#: html.c:1717
248msgid "Collapse top threads by default" 248msgid "Collapse top threads by default"
249msgstr "Tieni chiuse le discussioni" 249msgstr "Tieni chiuse le discussioni"
250 250
251#: html.c:1648 251#: html.c:1726
252msgid "Follow requests must be approved" 252msgid "Follow requests must be approved"
253msgstr "Devi approvare le richieste dei seguenti" 253msgstr "Devi approvare le richieste dei seguenti"
254 254
255#: html.c:1657 255#: html.c:1735
256msgid "Publish follower and following metrics" 256msgid "Publish follower and following metrics"
257msgstr "Rendi pubblici seguenti e seguiti" 257msgstr "Rendi pubblici seguenti e seguiti"
258 258
259#: html.c:1659 259#: html.c:1737
260msgid "Current location:" 260msgid "Current location:"
261msgstr "Posizione corrente:" 261msgstr "Posizione corrente:"
262 262
263#: html.c:1673 263#: html.c:1751
264msgid "Profile metadata (key=value pairs in each line):" 264msgid "Profile metadata (key=value pairs in each line):"
265msgstr "Dati del profilo (coppie di chiave=valore per ogni linea):" 265msgstr "Dati del profilo (coppie di chiave=valore per ogni linea):"
266 266
267#: html.c:1684 267#: html.c:1762
268msgid "Web interface language:" 268msgid "Web interface language:"
269msgstr "Lingua dell'interfaccia web:" 269msgstr "Lingua dell'interfaccia web:"
270 270
271#: html.c:1703 271#: html.c:1781
272msgid "New password:" 272msgid "New password:"
273msgstr "Nuova password:" 273msgstr "Nuova password:"
274 274
275#: html.c:1710 275#: html.c:1788
276msgid "Repeat new password:" 276msgid "Repeat new password:"
277msgstr "Reinserisci la password:" 277msgstr "Reinserisci la password:"
278 278
279#: html.c:1720 279#: html.c:1798
280msgid "Update user info" 280msgid "Update user info"
281msgstr "Aggiorna dati utente" 281msgstr "Aggiorna dati utente"
282 282
283#: html.c:1731 283#: html.c:1809
284msgid "Followed hashtags..." 284msgid "Followed hashtags..."
285msgstr "Hashtag seguiti..." 285msgstr "Hashtag seguiti..."
286 286
287#: html.c:1733 html.c:1766 287#: html.c:1811 html.c:1844
288msgid "One hashtag per line" 288msgid "One hashtag per line"
289msgstr "Un hashtag per linea" 289msgstr "Un hashtag per linea"
290 290
291#: html.c:1755 html.c:1787 291#: html.c:1833 html.c:1865
292msgid "Update hashtags" 292msgid "Update hashtags"
293msgstr "Aggiorna hashtags" 293msgstr "Aggiorna hashtags"
294 294
295#: html.c:1904 295#: html.c:1982
296msgid "Say you like this post" 296msgid "Say you like this post"
297msgstr "Questo post ti piace" 297msgstr "Questo post ti piace"
298 298
299#: html.c:1909 html.c:4775 299#: html.c:1987 html.c:5219
300msgid "Unlike" 300msgid "Unlike"
301msgstr "Non mi piace" 301msgstr "Non mi piace"
302 302
303#: html.c:1909 303#: html.c:1987
304msgid "Nah don't like it that much" 304msgid "Nah don't like it that much"
305msgstr "No, non mi piace molto" 305msgstr "No, non mi piace molto"
306 306
307#: html.c:1915 html.c:4912 307#: html.c:1993 html.c:5356
308msgid "Unpin" 308msgid "Unpin"
309msgstr "Sgancia" 309msgstr "Sgancia"
310 310
311#: html.c:1915 311#: html.c:1993
312msgid "Unpin this post from your timeline" 312msgid "Unpin this post from your timeline"
313msgstr "Sgancia questo post dalla timeline" 313msgstr "Sgancia questo post dalla timeline"
314 314
315#: html.c:1918 html.c:4907 315#: html.c:1996 html.c:5351
316msgid "Pin" 316msgid "Pin"
317msgstr "Aggancia" 317msgstr "Aggancia"
318 318
319#: html.c:1918 319#: html.c:1996
320msgid "Pin this post to the top of your timeline" 320msgid "Pin this post to the top of your timeline"
321msgstr "Aggancia questo post in cima alla timeline" 321msgstr "Aggancia questo post in cima alla timeline"
322 322
323#: html.c:1925 323#: html.c:2003
324msgid "Announce this post to your followers" 324msgid "Announce this post to your followers"
325msgstr "Annuncia questo post ai tuoi seguenti" 325msgstr "Annuncia questo post ai tuoi seguenti"
326 326
327#: html.c:1930 html.c:4783 327#: html.c:2008 html.c:5227
328msgid "Unboost" 328msgid "Unboost"
329msgstr "Rimuovi annuncio" 329msgstr "Rimuovi annuncio"
330 330
331#: html.c:1930 331#: html.c:2008
332msgid "I regret I boosted this" 332msgid "I regret I boosted this"
333msgstr "Mi pento di aver annunciato questo" 333msgstr "Mi pento di aver annunciato questo"
334 334
335#: html.c:1936 html.c:4922 335#: html.c:2014 html.c:5366
336msgid "Unbookmark" 336msgid "Unbookmark"
337msgstr "Elimina segnalibro" 337msgstr "Elimina segnalibro"
338 338
339#: html.c:1936 339#: html.c:2014
340msgid "Delete this post from your bookmarks" 340msgid "Delete this post from your bookmarks"
341msgstr "Elimina questo post dai segnalibri" 341msgstr "Elimina questo post dai segnalibri"
342 342
343#: html.c:1939 html.c:4917 343#: html.c:2017 html.c:5361
344msgid "Bookmark" 344msgid "Bookmark"
345msgstr "Segnalibro" 345msgstr "Segnalibro"
346 346
347#: html.c:1939 347#: html.c:2017
348msgid "Add this post to your bookmarks" 348msgid "Add this post to your bookmarks"
349msgstr "Aggiungi questo post ai segnalibri" 349msgstr "Aggiungi questo post ai segnalibri"
350 350
351#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 351#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
352msgid "Unfollow" 352msgid "Unfollow"
353msgstr "Smetti di seguire" 353msgstr "Smetti di seguire"
354 354
355#: html.c:1945 html.c:3387 355#: html.c:2023 html.c:3763 html.c:4042
356msgid "Stop following this user's activity" 356msgid "Stop following this user's activity"
357msgstr "Smetti di seguire l'utente" 357msgstr "Smetti di seguire l'utente"
358 358
359#: html.c:1949 html.c:3401 359#: html.c:2027 html.c:3777 html.c:4044
360msgid "Start following this user's activity" 360msgid "Start following this user's activity"
361msgstr "Sequi l'utente" 361msgstr "Sequi l'utente"
362 362
363#: html.c:1955 html.c:4860 363#: html.c:2033 html.c:5304
364msgid "Unfollow Group" 364msgid "Unfollow Group"
365msgstr "Smetti di seguire il gruppo" 365msgstr "Smetti di seguire il gruppo"
366 366
367#: html.c:1956 367#: html.c:2034
368msgid "Stop following this group or channel" 368msgid "Stop following this group or channel"
369msgstr "Smetti di seguire il gruppo o canale" 369msgstr "Smetti di seguire il gruppo o canale"
370 370
371#: html.c:1960 html.c:4847 371#: html.c:2038 html.c:5291
372msgid "Follow Group" 372msgid "Follow Group"
373msgstr "Segui grupp" 373msgstr "Segui grupp"
374 374
375#: html.c:1961 375#: html.c:2039
376msgid "Start following this group or channel" 376msgid "Start following this group or channel"
377msgstr "Segui il gruppo o canale" 377msgstr "Segui il gruppo o canale"
378 378
379#: html.c:1966 html.c:3423 html.c:4791 379#: html.c:2044 html.c:3799 html.c:5235
380msgid "MUTE" 380msgid "MUTE"
381msgstr "Silenzia" 381msgstr "Silenzia"
382 382
383#: html.c:1967 383#: html.c:2045
384msgid "Block any activity from this user forever" 384msgid "Block any activity from this user forever"
385msgstr "Blocca l'utente" 385msgstr "Blocca l'utente"
386 386
387#: html.c:1972 html.c:3405 html.c:4877 387#: html.c:2050 html.c:3781 html.c:5321
388msgid "Delete" 388msgid "Delete"
389msgstr "Elimina" 389msgstr "Elimina"
390 390
391#: html.c:1972 391#: html.c:2050
392msgid "Delete this post" 392msgid "Delete this post"
393msgstr "Elimina questo post" 393msgstr "Elimina questo post"
394 394
395#: html.c:1975 html.c:4799 395#: html.c:2053 html.c:5243
396msgid "Hide" 396msgid "Hide"
397msgstr "Nascondi" 397msgstr "Nascondi"
398 398
399#: html.c:1975 399#: html.c:2053
400msgid "Hide this post and its children" 400msgid "Hide this post and its children"
401msgstr "Nascondi questo post completamente" 401msgstr "Nascondi questo post completamente"
402 402
403#: html.c:2017 403#: html.c:2095
404msgid "Edit..." 404msgid "Edit..."
405msgstr "Modifica..." 405msgstr "Modifica..."
406 406
407#: html.c:2039 407#: html.c:2133
408msgid "Reply..." 408msgid "Reply..."
409msgstr "Rispondi..." 409msgstr "Rispondi..."
410 410
411#: html.c:2090 411#: html.c:2184
412msgid "Truncated (too deep)" 412msgid "Truncated (too deep)"
413msgstr "Troncato (troppo lungo)" 413msgstr "Troncato (troppo lungo)"
414 414
415#: html.c:2108 415#: html.c:2202
416msgid "follows you" 416msgid "follows you"
417msgstr "Ti segue" 417msgstr "Ti segue"
418 418
419#: html.c:2182 419#: html.c:2276
420msgid "Pinned" 420msgid "Pinned"
421msgstr "Aggancia" 421msgstr "Aggancia"
422 422
423#: html.c:2190 423#: html.c:2284
424msgid "Bookmarked" 424msgid "Bookmarked"
425msgstr "Segnalibro" 425msgstr "Segnalibro"
426 426
427#: html.c:2198 427#: html.c:2292
428msgid "Poll" 428msgid "Poll"
429msgstr "Sondaggio" 429msgstr "Sondaggio"
430 430
431#: html.c:2205 431#: html.c:2299
432msgid "Voted" 432msgid "Voted"
433msgstr "Votato" 433msgstr "Votato"
434 434
435#: html.c:2214 435#: html.c:2308
436msgid "Event" 436msgid "Event"
437msgstr "Evento" 437msgstr "Evento"
438 438
439#: html.c:2246 html.c:2275 439#: html.c:2340 html.c:2369
440msgid "boosted" 440msgid "boosted"
441msgstr "Annunciato" 441msgstr "Annunciato"
442 442
443#: html.c:2289 443#: html.c:2383
444msgid "in reply to" 444msgid "in reply to"
445msgstr "in risposta a" 445msgstr "in risposta a"
446 446
447#: html.c:2345 447#: html.c:2439
448msgid " [SENSITIVE CONTENT]" 448msgid " [SENSITIVE CONTENT]"
449msgstr " [CONTENUTO SENSIBILE]" 449msgstr " [CONTENUTO SENSIBILE]"
450 450
451#: html.c:2512 451#: html.c:2796
452msgid "Vote" 452msgid "Vote"
453msgstr "Vota" 453msgstr "Vota"
454 454
455#: html.c:2522 455#: html.c:2806
456msgid "Closed" 456msgid "Closed"
457msgstr "Chiuso" 457msgstr "Chiuso"
458 458
459#: html.c:2547 459#: html.c:2831
460msgid "Closes in" 460msgid "Closes in"
461msgstr "Chiude in" 461msgstr "Chiude in"
462 462
463#: html.c:2627 463#: html.c:2911
464msgid "Video" 464msgid "Video"
465msgstr "Video" 465msgstr "Video"
466 466
467#: html.c:2642 467#: html.c:2926
468msgid "Audio" 468msgid "Audio"
469msgstr "Audio" 469msgstr "Audio"
470 470
471#: html.c:2670 471#: html.c:2954
472msgid "Attachment" 472msgid "Attachment"
473msgstr "Allegato" 473msgstr "Allegato"
474 474
475#: html.c:2684 475#: html.c:2968
476msgid "Alt..." 476msgid "Alt..."
477msgstr "Testo alternativo..." 477msgstr "Testo alternativo..."
478 478
479#: html.c:2697 479#: html.c:2981
480msgid "Source channel or community" 480msgid "Source channel or community"
481msgstr "Provenienza del canale o comunità" 481msgstr "Provenienza del canale o comunità"
482 482
483#: html.c:2791 483#: html.c:3075
484msgid "Time: " 484msgid "Time: "
485msgstr "Orario:" 485msgstr "Orario:"
486 486
487#: html.c:2872 487#: html.c:3156
488msgid "Older..." 488msgid "Older..."
489msgstr "Vecchi..." 489msgstr "Vecchi..."
490 490
491#: html.c:2974 491#: html.c:3258
492msgid "about this site" 492msgid "about this site"
493msgstr "descrizione" 493msgstr "descrizione"
494 494
495#: html.c:2976 495#: html.c:3260
496msgid "powered by " 496msgid "powered by "
497msgstr "gestito da " 497msgstr "gestito da "
498 498
499#: html.c:3041 499#: html.c:3329
500msgid "Dismiss" 500msgid "Dismiss"
501msgstr "Congeda" 501msgstr "Congeda"
502 502
503#: html.c:3058 503#: html.c:3346
504#, c-format 504#, c-format
505msgid "Timeline for list '%s'" 505msgid "Timeline for list '%s'"
506msgstr "Timeline per la lista '%s'" 506msgstr "Timeline per la lista '%s'"
507 507
508#: html.c:3077 html.c:4169 508#: html.c:3365 html.c:4589
509msgid "Pinned posts" 509msgid "Pinned posts"
510msgstr "Post appuntati" 510msgstr "Post appuntati"
511 511
512#: html.c:3089 html.c:4184 512#: html.c:3377 html.c:4604
513msgid "Bookmarked posts" 513msgid "Bookmarked posts"
514msgstr "Post segnati" 514msgstr "Post segnati"
515 515
516#: html.c:3101 html.c:4199 516#: html.c:3389 html.c:4619
517msgid "Post drafts" 517msgid "Post drafts"
518msgstr "Bozze" 518msgstr "Bozze"
519 519
520#: html.c:3177 520#: html.c:3465
521msgid "No more unseen posts" 521msgid "No more unseen posts"
522msgstr "Nessun ulteriore post" 522msgstr "Nessun ulteriore post"
523 523
524#: html.c:3181 html.c:3290 524#: html.c:3469 html.c:3578
525msgid "Back to top" 525msgid "Back to top"
526msgstr "Torna in cima" 526msgstr "Torna in cima"
527 527
528#: html.c:3243 528#: html.c:3531
529msgid "History" 529msgid "History"
530msgstr "Storico" 530msgstr "Storico"
531 531
532#: html.c:3295 html.c:3734 532#: html.c:3583 html.c:4149
533msgid "More..." 533msgid "More..."
534msgstr "Ancora..." 534msgstr "Ancora..."
535 535
536#: html.c:3391 html.c:4813 536#: html.c:3767 html.c:5257
537msgid "Unlimit" 537msgid "Unlimit"
538msgstr "Senza limite" 538msgstr "Senza limite"
539 539
540#: html.c:3392 540#: html.c:3768
541msgid "Allow announces (boosts) from this user" 541msgid "Allow announces (boosts) from this user"
542msgstr "Permetti annunci dall'utente" 542msgstr "Permetti annunci dall'utente"
543 543
544#: html.c:3395 html.c:4809 544#: html.c:3771 html.c:5253
545msgid "Limit" 545msgid "Limit"
546msgstr "Limite" 546msgstr "Limite"
547 547
548#: html.c:3396 548#: html.c:3772
549msgid "Block announces (boosts) from this user" 549msgid "Block announces (boosts) from this user"
550msgstr "Blocca annunci dall'utente" 550msgstr "Blocca annunci dall'utente"
551 551
552#: html.c:3405 552#: html.c:3781
553msgid "Delete this user" 553msgid "Delete this user"
554msgstr "Elimina l'utente" 554msgstr "Elimina l'utente"
555 555
556#: html.c:3410 html.c:4927 556#: html.c:3786 html.c:5371
557msgid "Approve" 557msgid "Approve"
558msgstr "Approva" 558msgstr "Approva"
559 559
560#: html.c:3411 560#: html.c:3787
561msgid "Approve this follow request" 561msgid "Approve this follow request"
562msgstr "Approva richiesta di seguirti" 562msgstr "Approva richiesta di seguirti"
563 563
564#: html.c:3414 html.c:4951 564#: html.c:3790 html.c:5395
565msgid "Discard" 565msgid "Discard"
566msgstr "Scarta" 566msgstr "Scarta"
567 567
568#: html.c:3414 568#: html.c:3790
569msgid "Discard this follow request" 569msgid "Discard this follow request"
570msgstr "Scarta richiesta di seguirti" 570msgstr "Scarta richiesta di seguirti"
571 571
572#: html.c:3419 html.c:4795 572#: html.c:3795 html.c:5239
573msgid "Unmute" 573msgid "Unmute"
574msgstr "Rimuovi silenziamento" 574msgstr "Rimuovi silenziamento"
575 575
576#: html.c:3420 576#: html.c:3796
577msgid "Stop blocking activities from this user" 577msgid "Stop blocking activities from this user"
578msgstr "Sblocca l'utente" 578msgstr "Sblocca l'utente"
579 579
580#: html.c:3424 580#: html.c:3800
581msgid "Block any activity from this user" 581msgid "Block any activity from this user"
582msgstr "Blocca l'utente completamente" 582msgstr "Blocca l'utente completamente"
583 583
584#: html.c:3432 584#: html.c:3808
585msgid "Direct Message..." 585msgid "Direct Message..."
586msgstr "Messaggio diretto..." 586msgstr "Messaggio diretto..."
587 587
588#: html.c:3467 588#: html.c:3843
589msgid "Pending follow confirmations" 589msgid "Pending follow confirmations"
590msgstr "Conferme di seguirti in attesa" 590msgstr "Conferme di seguirti in attesa"
591 591
592#: html.c:3471 592#: html.c:3847
593msgid "People you follow" 593msgid "People you follow"
594msgstr "Persone che segui" 594msgstr "Persone che segui"
595 595
596#: html.c:3472 596#: html.c:3848
597msgid "People that follow you" 597msgid "People that follow you"
598msgstr "Persone che ti seguono" 598msgstr "Persone che ti seguono"
599 599
600#: html.c:3511 600#: html.c:3887
601msgid "Clear all" 601msgid "Clear all"
602msgstr "Pulisci" 602msgstr "Pulisci"
603 603
604#: html.c:3571 604#: html.c:3951
605msgid "Mention" 605msgid "Mention"
606msgstr "Citazione" 606msgstr "Citazione"
607 607
608#: html.c:3574 608#: html.c:3954
609msgid "Finished poll" 609msgid "Finished poll"
610msgstr "Sondaggio concluso" 610msgstr "Sondaggio concluso"
611 611
612#: html.c:3590 612#: html.c:3979
613msgid "Follow Request" 613msgid "Follow Request"
614msgstr "Richiesta di seguire" 614msgstr "Richiesta di seguire"
615 615
616#: html.c:3674 616#: html.c:4089
617msgid "Context" 617msgid "Context"
618msgstr "Contesto" 618msgstr "Contesto"
619 619
620#: html.c:3692 620#: html.c:4107
621msgid "New" 621msgid "New"
622msgstr "Nuovo" 622msgstr "Nuovo"
623 623
624#: html.c:3707 624#: html.c:4122
625msgid "Already seen" 625msgid "Already seen"
626msgstr "Già visto" 626msgstr "Già visto"
627 627
628#: html.c:3722 628#: html.c:4137
629msgid "None" 629msgid "None"
630msgstr "Niente" 630msgstr "Niente"
631 631
632#: html.c:3994 632#: html.c:4414
633#, c-format 633#, c-format
634msgid "Search results for account %s" 634msgid "Search results for account %s"
635msgstr "Risultati per account %s" 635msgstr "Risultati per account %s"
636 636
637#: html.c:4001 637#: html.c:4421
638#, c-format 638#, c-format
639msgid "Account %s not found" 639msgid "Account %s not found"
640msgstr "Account %s non trovato" 640msgstr "Account %s non trovato"
641 641
642#: html.c:4032 642#: html.c:4452
643#, c-format 643#, c-format
644msgid "Search results for tag %s" 644msgid "Search results for tag %s"
645msgstr "Risultati per tag %s" 645msgstr "Risultati per tag %s"
646 646
647#: html.c:4032 647#: html.c:4452
648#, c-format 648#, c-format
649msgid "Nothing found for tag %s" 649msgid "Nothing found for tag %s"
650msgstr "Nessun risultato per il tag %S" 650msgstr "Nessun risultato per il tag %S"
651 651
652#: html.c:4048 652#: html.c:4468
653#, c-format 653#, c-format
654msgid "Search results for '%s' (may be more)" 654msgid "Search results for '%s' (may be more)"
655msgstr "Risultati per tag %s (ancora...)" 655msgstr "Risultati per tag %s (ancora...)"
656 656
657#: html.c:4051 657#: html.c:4471
658#, c-format 658#, c-format
659msgid "Search results for '%s'" 659msgid "Search results for '%s'"
660msgstr "Risultati per %s" 660msgstr "Risultati per %s"
661 661
662#: html.c:4054 662#: html.c:4474
663#, c-format 663#, c-format
664msgid "No more matches for '%s'" 664msgid "No more matches for '%s'"
665msgstr "Nessuna corrispondenza per '%s'" 665msgstr "Nessuna corrispondenza per '%s'"
666 666
667#: html.c:4056 667#: html.c:4476
668#, c-format 668#, c-format
669msgid "Nothing found for '%s'" 669msgid "Nothing found for '%s'"
670msgstr "Non trovato per '%s'" 670msgstr "Non trovato per '%s'"
671 671
672#: html.c:4154 672#: html.c:4574
673msgid "Showing instance timeline" 673msgid "Showing instance timeline"
674msgstr "Mostra la timeline dell'istanza" 674msgstr "Mostra la timeline dell'istanza"
675 675
676#: html.c:4237 676#: html.c:4657
677#, c-format 677#, c-format
678msgid "Showing timeline for list '%s'" 678msgid "Showing timeline for list '%s'"
679msgstr "Mostra la timeline della lista '%s'" 679msgstr "Mostra la timeline della lista '%s'"
680 680
681#: httpd.c:258 681#: httpd.c:259
682#, c-format 682#, c-format
683msgid "Search results for tag #%s" 683msgid "Search results for tag #%s"
684msgstr "Risultati per tag #%s" 684msgstr "Risultati per tag #%s"
685 685
686#: httpd.c:267 686#: httpd.c:268
687msgid "Recent posts by users in this instance" 687msgid "Recent posts by users in this instance"
688msgstr "Post recenti in questa istanza" 688msgstr "Post recenti in questa istanza"
689 689
690#: html.c:1764 690#: html.c:1842
691msgid "Blocked hashtags..." 691msgid "Blocked hashtags..."
692msgstr "Hashtag bloccati..." 692msgstr "Hashtag bloccati..."
693 693
694#: html.c:518 694#: html.c:574
695msgid "Optional URL to reply to" 695msgid "Optional URL to reply to"
696msgstr "URL facoltativo di risposta" 696msgstr "URL facoltativo di risposta"
697 697
698#: html.c:695 698#: html.c:751
699msgid "" 699msgid ""
700"Option 1...\n" 700"Option 1...\n"
701"Option 2...\n" 701"Option 2...\n"
@@ -707,94 +707,106 @@ msgstr ""
707"Scelta 3...\n" 707"Scelta 3...\n"
708"..." 708"..."
709 709
710#: html.c:1558 710#: html.c:1636
711msgid "Bot API key" 711msgid "Bot API key"
712msgstr "Chiave per le API del bot" 712msgstr "Chiave per le API del bot"
713 713
714#: html.c:1564 714#: html.c:1642
715msgid "Chat id" 715msgid "Chat id"
716msgstr "Id della chat" 716msgstr "Id della chat"
717 717
718#: html.c:1572 718#: html.c:1650
719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
720msgstr "Server ntfy - URL completo (esempio: https://ntfy.sh/YourTopic)" 720msgstr "Server ntfy - URL completo (esempio: https://ntfy.sh/YourTopic)"
721 721
722#: html.c:1578 722#: html.c:1656
723msgid "ntfy token - if needed" 723msgid "ntfy token - if needed"
724msgstr "Token ntfy - se richiesto" 724msgstr "Token ntfy - se richiesto"
725 725
726#: html.c:3078 726#: html.c:3366
727msgid "pinned" 727msgid "pinned"
728msgstr "appuntati" 728msgstr "appuntati"
729 729
730#: html.c:3090 730#: html.c:3378
731msgid "bookmarks" 731msgid "bookmarks"
732msgstr "segnalibri" 732msgstr "segnalibri"
733 733
734#: html.c:3102 734#: html.c:3390
735msgid "drafts" 735msgid "drafts"
736msgstr "bozze" 736msgstr "bozze"
737 737
738#: html.c:584 738#: html.c:640
739msgid "Scheduled post..." 739msgid "Scheduled post..."
740msgstr "" 740msgstr ""
741 741
742msgid "Post date and time:" 742msgid "Post date and time:"
743msgstr "" 743msgstr ""
744 744
745#: html.c:3113 html.c:4214 745#: html.c:3401 html.c:4634
746msgid "Scheduled posts" 746msgid "Scheduled posts"
747msgstr "" 747msgstr ""
748 748
749#: html.c:3114 749#: html.c:3402
750msgid "scheduled posts" 750msgid "scheduled posts"
751msgstr "" 751msgstr ""
752 752
753#: html.c:578 753#: html.c:634
754#, c-format 754#, c-format
755msgid "Post date and time (timezone: %s):" 755msgid "Post date and time (timezone: %s):"
756msgstr "" 756msgstr ""
757 757
758#: html.c:1689 758#: html.c:1767
759msgid "Time zone:" 759msgid "Time zone:"
760msgstr "" 760msgstr ""
761 761
762#: html.c:559 762#: html.c:615
763msgid "Language:" 763msgid "Language:"
764msgstr "" 764msgstr ""
765 765
766#: html.c:1580 766#: html.c:1658
767msgid "Notify webhook:" 767msgid "Notify webhook:"
768msgstr "" 768msgstr ""
769 769
770#: html.c:1586 770#: html.c:1664
771msgid "http://example.com/webhook" 771msgid "http://example.com/webhook"
772msgstr "" 772msgstr ""
773 773
774#: html.c:1694 774#: html.c:1772
775msgid "Languages you usually post in:" 775msgid "Languages you usually post in:"
776msgstr "" 776msgstr ""
777 777
778#: html.c:1700 778#: html.c:1778
779msgid "en fr es de_AT" 779msgid "en fr es de_AT"
780msgstr "" 780msgstr ""
781 781
782#: html.c:460 782#: html.c:428
783msgid "Visibility: " 783msgid "Visibility: "
784msgstr "" 784msgstr ""
785 785
786#: html.c:468
787msgid "Public" 786msgid "Public"
788msgstr "" 787msgstr ""
789 788
790#: html.c:477
791msgid "Unlisted" 789msgid "Unlisted"
792msgstr "" 790msgstr ""
793 791
794#: html.c:486
795msgid "Followers-only" 792msgid "Followers-only"
796msgstr "" 793msgstr ""
797 794
798#: html.c:495
799msgid "Direct Message" 795msgid "Direct Message"
800msgstr "" 796msgstr ""
797
798#: html.c:488 html.c:2534 html.c:2559 html.c:5177
799msgid "EmojiUnreact"
800msgstr ""
801
802#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
803msgid "EmojiReact"
804msgstr ""
805
806#: html.c:2115
807msgid "Emoji react..."
808msgstr ""
809
810#: html.c:2609
811msgid "Emoji reactions: "
812msgstr ""
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 26f6e6c..37233dd 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -8,119 +8,119 @@ msgstr ""
8"Language: nl_NL\n" 8"Language: nl_NL\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "Gevoelige inhoud: " 13msgstr "Gevoelige inhoud: "
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "Omschrijving van gevoelige inhoud" 17msgstr "Omschrijving van gevoelige inhoud"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "Enkel voor genoemde personen: " 20msgstr "Enkel voor genoemde personen: "
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "Antwoord op (URL): " 24msgstr "Antwoord op (URL): "
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "Niet verzenden, maar opslaan als concept" 28msgstr "Niet verzenden, maar opslaan als concept"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "Concept:" 32msgstr "Concept:"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "Bijlagen..." 36msgstr "Bijlagen..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "Bestand:" 40msgstr "Bestand:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "Veld leegmaken om de bijlage te verwijderen" 44msgstr "Veld leegmaken om de bijlage te verwijderen"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "Omschrijving van bijlage" 48msgstr "Omschrijving van bijlage"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "Peiling..." 52msgstr "Peiling..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "Peiling opties (één per regel, tot 8):" 56msgstr "Peiling opties (één per regel, tot 8):"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "Eén keuze" 60msgstr "Eén keuze"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "Meerdere keuzes" 64msgstr "Meerdere keuzes"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "Eindigt over 5 minuten" 68msgstr "Eindigt over 5 minuten"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "Eindigt over 1 uur" 72msgstr "Eindigt over 1 uur"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "Eindigt over 1 dag" 76msgstr "Eindigt over 1 dag"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "Bericht" 80msgstr "Bericht"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "Omschrijving van de site" 84msgstr "Omschrijving van de site"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "Admin e-mail" 88msgstr "Admin e-mail"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "Admin account" 92msgstr "Admin account"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d volgend, %d volgers" 97msgstr "%d volgend, %d volgers"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "privé" 105msgstr "privé"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "publiek" 109msgstr "publiek"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "notificaties" 113msgstr "notificaties"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "mensen" 117msgstr "mensen"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "instantie" 121msgstr "instantie"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
@@ -128,574 +128,574 @@ msgstr ""
128"Zoek berichten op URL of inhoud (reguliere expressie), @user@host accounts, " 128"Zoek berichten op URL of inhoud (reguliere expressie), @user@host accounts, "
129"of #tag" 129"of #tag"
130 130
131#: html.c:1087 131#: html.c:1143
132msgid "Content search" 132msgid "Content search"
133msgstr "Inhoud zoeken" 133msgstr "Inhoud zoeken"
134 134
135#: html.c:1213 135#: html.c:1269
136msgid "verified link" 136msgid "verified link"
137msgstr "verifieerde link" 137msgstr "verifieerde link"
138 138
139#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 139#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
140msgid "Location: " 140msgid "Location: "
141msgstr "Locatie: " 141msgstr "Locatie: "
142 142
143#: html.c:1302 143#: html.c:1358
144msgid "New Post..." 144msgid "New Post..."
145msgstr "Nieuw bericht..." 145msgstr "Nieuw bericht..."
146 146
147#: html.c:1304 147#: html.c:1360
148msgid "What's on your mind?" 148msgid "What's on your mind?"
149msgstr "Wat wil je delen?" 149msgstr "Wat wil je delen?"
150 150
151#: html.c:1313 151#: html.c:1369
152msgid "Operations..." 152msgid "Operations..."
153msgstr "Handelingen..." 153msgstr "Handelingen..."
154 154
155#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 155#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
156msgid "Follow" 156msgid "Follow"
157msgstr "Volg" 157msgstr "Volg"
158 158
159#: html.c:1330 159#: html.c:1386
160msgid "(by URL or user@host)" 160msgid "(by URL or user@host)"
161msgstr "(via URL of gebruiker@host)" 161msgstr "(via URL of gebruiker@host)"
162 162
163#: html.c:1345 html.c:1925 html.c:4766 163#: html.c:1401 html.c:2003 html.c:5210
164msgid "Boost" 164msgid "Boost"
165msgstr "Boost" 165msgstr "Boost"
166 166
167#: html.c:1347 html.c:1364 167#: html.c:1403 html.c:1420 html.c:1442
168msgid "(by URL)" 168msgid "(by URL)"
169msgstr "(via URL)" 169msgstr "(via URL)"
170 170
171#: html.c:1362 html.c:1904 html.c:4757 171#: html.c:1418 html.c:1982 html.c:5201
172msgid "Like" 172msgid "Like"
173msgstr "Leuk" 173msgstr "Leuk"
174 174
175#: html.c:1490 175#: html.c:1568
176msgid "User Settings..." 176msgid "User Settings..."
177msgstr "Gebruikersinstellingen..." 177msgstr "Gebruikersinstellingen..."
178 178
179#: html.c:1499 179#: html.c:1577
180msgid "Display name:" 180msgid "Display name:"
181msgstr "Weergavenaam:" 181msgstr "Weergavenaam:"
182 182
183#: html.c:1505 183#: html.c:1583
184msgid "Your name" 184msgid "Your name"
185msgstr "Jouw naam" 185msgstr "Jouw naam"
186 186
187#: html.c:1507 187#: html.c:1585
188msgid "Avatar: " 188msgid "Avatar: "
189msgstr "Profielafbeelding: " 189msgstr "Profielafbeelding: "
190 190
191#: html.c:1515 191#: html.c:1593
192msgid "Delete current avatar" 192msgid "Delete current avatar"
193msgstr "Verwijder huidige profielafbeelding" 193msgstr "Verwijder huidige profielafbeelding"
194 194
195#: html.c:1517 195#: html.c:1595
196msgid "Header image (banner): " 196msgid "Header image (banner): "
197msgstr "Header afbeelding (banner): " 197msgstr "Header afbeelding (banner): "
198 198
199#: html.c:1525 199#: html.c:1603
200msgid "Delete current header image" 200msgid "Delete current header image"
201msgstr "Verwijder huidige header afbeelding" 201msgstr "Verwijder huidige header afbeelding"
202 202
203#: html.c:1527 203#: html.c:1605
204msgid "Bio:" 204msgid "Bio:"
205msgstr "Bio:" 205msgstr "Bio:"
206 206
207#: html.c:1533 207#: html.c:1611
208msgid "Write about yourself here..." 208msgid "Write about yourself here..."
209msgstr "Schrijf hier iets over jezelf..." 209msgstr "Schrijf hier iets over jezelf..."
210 210
211#: html.c:1542 211#: html.c:1620
212msgid "Always show sensitive content" 212msgid "Always show sensitive content"
213msgstr "Altijd gevoelige inhoud tonen" 213msgstr "Altijd gevoelige inhoud tonen"
214 214
215#: html.c:1544 215#: html.c:1622
216msgid "Email address for notifications:" 216msgid "Email address for notifications:"
217msgstr "E-mailadres voor notificaties:" 217msgstr "E-mailadres voor notificaties:"
218 218
219#: html.c:1552 219#: html.c:1630
220msgid "Telegram notifications (bot key and chat id):" 220msgid "Telegram notifications (bot key and chat id):"
221msgstr "Telegram notificaties (bot sleutel en chat id):" 221msgstr "Telegram notificaties (bot sleutel en chat id):"
222 222
223#: html.c:1566 223#: html.c:1644
224msgid "ntfy notifications (ntfy server and token):" 224msgid "ntfy notifications (ntfy server and token):"
225msgstr "ntfy notificaties (ntfy server en token):" 225msgstr "ntfy notificaties (ntfy server en token):"
226 226
227#: html.c:1588 227#: html.c:1666
228msgid "Maximum days to keep posts (0: server settings):" 228msgid "Maximum days to keep posts (0: server settings):"
229msgstr "Maximaal aantal dagen om berichten te bewaren (0: serverinstellingen):" 229msgstr "Maximaal aantal dagen om berichten te bewaren (0: serverinstellingen):"
230 230
231#: html.c:1602 231#: html.c:1680
232msgid "Drop direct messages from people you don't follow" 232msgid "Drop direct messages from people you don't follow"
233msgstr "Verwijder directe berichten van mensen die je niet volgt" 233msgstr "Verwijder directe berichten van mensen die je niet volgt"
234 234
235#: html.c:1611 235#: html.c:1689
236msgid "This account is a bot" 236msgid "This account is a bot"
237msgstr "Dit account is een bot" 237msgstr "Dit account is een bot"
238 238
239#: html.c:1620 239#: html.c:1698
240msgid "Auto-boost all mentions to this account" 240msgid "Auto-boost all mentions to this account"
241msgstr "Automatisch boosten van alle vermeldingen van dit account" 241msgstr "Automatisch boosten van alle vermeldingen van dit account"
242 242
243#: html.c:1629 243#: html.c:1707
244msgid "This account is private (posts are not shown through the web)" 244msgid "This account is private (posts are not shown through the web)"
245msgstr "Dit account is privé (berichten worden niet getoond via het web)" 245msgstr "Dit account is privé (berichten worden niet getoond via het web)"
246 246
247#: html.c:1639 247#: html.c:1717
248msgid "Collapse top threads by default" 248msgid "Collapse top threads by default"
249msgstr "Klap standaard top threads in" 249msgstr "Klap standaard top threads in"
250 250
251#: html.c:1648 251#: html.c:1726
252msgid "Follow requests must be approved" 252msgid "Follow requests must be approved"
253msgstr "Volgverzoeken moeten worden goedgekeurd" 253msgstr "Volgverzoeken moeten worden goedgekeurd"
254 254
255#: html.c:1657 255#: html.c:1735
256msgid "Publish follower and following metrics" 256msgid "Publish follower and following metrics"
257msgstr "Publiceer volger- en volgstatistieken" 257msgstr "Publiceer volger- en volgstatistieken"
258 258
259#: html.c:1659 259#: html.c:1737
260msgid "Current location:" 260msgid "Current location:"
261msgstr "Huidige locatie:" 261msgstr "Huidige locatie:"
262 262
263#: html.c:1673 263#: html.c:1751
264msgid "Profile metadata (key=value pairs in each line):" 264msgid "Profile metadata (key=value pairs in each line):"
265msgstr "Profiel metadata (sleutel=waarde paren in elke regel):" 265msgstr "Profiel metadata (sleutel=waarde paren in elke regel):"
266 266
267#: html.c:1684 267#: html.c:1762
268msgid "Web interface language:" 268msgid "Web interface language:"
269msgstr "Webinterface taal:" 269msgstr "Webinterface taal:"
270 270
271#: html.c:1703 271#: html.c:1781
272msgid "New password:" 272msgid "New password:"
273msgstr "Nieuw wachtwoord:" 273msgstr "Nieuw wachtwoord:"
274 274
275#: html.c:1710 275#: html.c:1788
276msgid "Repeat new password:" 276msgid "Repeat new password:"
277msgstr "Herhaal nieuw wachtwoord:" 277msgstr "Herhaal nieuw wachtwoord:"
278 278
279#: html.c:1720 279#: html.c:1798
280msgid "Update user info" 280msgid "Update user info"
281msgstr "Werk gebruikersinformatie bij" 281msgstr "Werk gebruikersinformatie bij"
282 282
283#: html.c:1731 283#: html.c:1809
284msgid "Followed hashtags..." 284msgid "Followed hashtags..."
285msgstr "Gevolgde hashtags..." 285msgstr "Gevolgde hashtags..."
286 286
287#: html.c:1733 html.c:1766 287#: html.c:1811 html.c:1844
288msgid "One hashtag per line" 288msgid "One hashtag per line"
289msgstr "Eén hashtag per regel" 289msgstr "Eén hashtag per regel"
290 290
291#: html.c:1755 html.c:1787 291#: html.c:1833 html.c:1865
292msgid "Update hashtags" 292msgid "Update hashtags"
293msgstr "Werk hashtags bij" 293msgstr "Werk hashtags bij"
294 294
295#: html.c:1904 295#: html.c:1982
296msgid "Say you like this post" 296msgid "Say you like this post"
297msgstr "Zeg dat je dit bericht leuk vindt" 297msgstr "Zeg dat je dit bericht leuk vindt"
298 298
299#: html.c:1909 html.c:4775 299#: html.c:1987 html.c:5219
300msgid "Unlike" 300msgid "Unlike"
301msgstr "Niet leuk vinden" 301msgstr "Niet leuk vinden"
302 302
303#: html.c:1909 303#: html.c:1987
304msgid "Nah don't like it that much" 304msgid "Nah don't like it that much"
305msgstr "Nee, ik vind het niet zo leuk" 305msgstr "Nee, ik vind het niet zo leuk"
306 306
307#: html.c:1915 html.c:4912 307#: html.c:1993 html.c:5356
308msgid "Unpin" 308msgid "Unpin"
309msgstr "Niet vastzetten" 309msgstr "Niet vastzetten"
310 310
311#: html.c:1915 311#: html.c:1993
312msgid "Unpin this post from your timeline" 312msgid "Unpin this post from your timeline"
313msgstr "Zet dit bericht niet meer vast op je tijdlijn" 313msgstr "Zet dit bericht niet meer vast op je tijdlijn"
314 314
315#: html.c:1918 html.c:4907 315#: html.c:1996 html.c:5351
316msgid "Pin" 316msgid "Pin"
317msgstr "Vastzetten" 317msgstr "Vastzetten"
318 318
319#: html.c:1918 319#: html.c:1996
320msgid "Pin this post to the top of your timeline" 320msgid "Pin this post to the top of your timeline"
321msgstr "Zet dit bericht vast bovenaan je tijdlijn" 321msgstr "Zet dit bericht vast bovenaan je tijdlijn"
322 322
323#: html.c:1925 323#: html.c:2003
324msgid "Announce this post to your followers" 324msgid "Announce this post to your followers"
325msgstr "Kondig dit bericht aan bij je volgers" 325msgstr "Kondig dit bericht aan bij je volgers"
326 326
327#: html.c:1930 html.c:4783 327#: html.c:2008 html.c:5227
328msgid "Unboost" 328msgid "Unboost"
329msgstr "Ontboosten" 329msgstr "Ontboosten"
330 330
331#: html.c:1930 331#: html.c:2008
332msgid "I regret I boosted this" 332msgid "I regret I boosted this"
333msgstr "Ik betreur dat ik dit heb geboost" 333msgstr "Ik betreur dat ik dit heb geboost"
334 334
335#: html.c:1936 html.c:4922 335#: html.c:2014 html.c:5366
336msgid "Unbookmark" 336msgid "Unbookmark"
337msgstr "Uit favorieten verwijderen" 337msgstr "Uit favorieten verwijderen"
338 338
339#: html.c:1936 339#: html.c:2014
340msgid "Delete this post from your bookmarks" 340msgid "Delete this post from your bookmarks"
341msgstr "Verwijder dit bericht uit je favorieten" 341msgstr "Verwijder dit bericht uit je favorieten"
342 342
343#: html.c:1939 html.c:4917 343#: html.c:2017 html.c:5361
344msgid "Bookmark" 344msgid "Bookmark"
345msgstr "Favoriet" 345msgstr "Favoriet"
346 346
347#: html.c:1939 347#: html.c:2017
348msgid "Add this post to your bookmarks" 348msgid "Add this post to your bookmarks"
349msgstr "Voeg dit bericht toe aan je favorieten" 349msgstr "Voeg dit bericht toe aan je favorieten"
350 350
351#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 351#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
352msgid "Unfollow" 352msgid "Unfollow"
353msgstr "Ontvolgen" 353msgstr "Ontvolgen"
354 354
355#: html.c:1945 html.c:3387 355#: html.c:2023 html.c:3763 html.c:4042
356msgid "Stop following this user's activity" 356msgid "Stop following this user's activity"
357msgstr "Stop met het volgen van de activiteit van deze gebruiker" 357msgstr "Stop met het volgen van de activiteit van deze gebruiker"
358 358
359#: html.c:1949 html.c:3401 359#: html.c:2027 html.c:3777 html.c:4044
360msgid "Start following this user's activity" 360msgid "Start following this user's activity"
361msgstr "Start met het volgen van de activiteit van deze gebruiker" 361msgstr "Start met het volgen van de activiteit van deze gebruiker"
362 362
363#: html.c:1955 html.c:4860 363#: html.c:2033 html.c:5304
364msgid "Unfollow Group" 364msgid "Unfollow Group"
365msgstr "Ontvolg groep" 365msgstr "Ontvolg groep"
366 366
367#: html.c:1956 367#: html.c:2034
368msgid "Stop following this group or channel" 368msgid "Stop following this group or channel"
369msgstr "Stop met het volgen van deze groep of kanaal" 369msgstr "Stop met het volgen van deze groep of kanaal"
370 370
371#: html.c:1960 html.c:4847 371#: html.c:2038 html.c:5291
372msgid "Follow Group" 372msgid "Follow Group"
373msgstr "Volg groep" 373msgstr "Volg groep"
374 374
375#: html.c:1961 375#: html.c:2039
376msgid "Start following this group or channel" 376msgid "Start following this group or channel"
377msgstr "Start met het volgen van deze groep of kanaal" 377msgstr "Start met het volgen van deze groep of kanaal"
378 378
379#: html.c:1966 html.c:3423 html.c:4791 379#: html.c:2044 html.c:3799 html.c:5235
380msgid "MUTE" 380msgid "MUTE"
381msgstr "DEMP" 381msgstr "DEMP"
382 382
383#: html.c:1967 383#: html.c:2045
384msgid "Block any activity from this user forever" 384msgid "Block any activity from this user forever"
385msgstr "Blokkeer alle activiteit van deze gebruiker voor altijd" 385msgstr "Blokkeer alle activiteit van deze gebruiker voor altijd"
386 386
387#: html.c:1972 html.c:3405 html.c:4877 387#: html.c:2050 html.c:3781 html.c:5321
388msgid "Delete" 388msgid "Delete"
389msgstr "Verwijderen" 389msgstr "Verwijderen"
390 390
391#: html.c:1972 391#: html.c:2050
392msgid "Delete this post" 392msgid "Delete this post"
393msgstr "Verwijder dit bericht" 393msgstr "Verwijder dit bericht"
394 394
395#: html.c:1975 html.c:4799 395#: html.c:2053 html.c:5243
396msgid "Hide" 396msgid "Hide"
397msgstr "Verberg" 397msgstr "Verberg"
398 398
399#: html.c:1975 399#: html.c:2053
400msgid "Hide this post and its children" 400msgid "Hide this post and its children"
401msgstr "Verberg dit bericht en zijn kinderen" 401msgstr "Verberg dit bericht en zijn kinderen"
402 402
403#: html.c:2017 403#: html.c:2095
404msgid "Edit..." 404msgid "Edit..."
405msgstr "Bewerken..." 405msgstr "Bewerken..."
406 406
407#: html.c:2039 407#: html.c:2133
408msgid "Reply..." 408msgid "Reply..."
409msgstr "Antwoord..." 409msgstr "Antwoord..."
410 410
411#: html.c:2090 411#: html.c:2184
412msgid "Truncated (too deep)" 412msgid "Truncated (too deep)"
413msgstr "Afgekapt (te diep)" 413msgstr "Afgekapt (te diep)"
414 414
415#: html.c:2108 415#: html.c:2202
416msgid "follows you" 416msgid "follows you"
417msgstr "volgt jou" 417msgstr "volgt jou"
418 418
419#: html.c:2182 419#: html.c:2276
420msgid "Pinned" 420msgid "Pinned"
421msgstr "Vastgezet" 421msgstr "Vastgezet"
422 422
423#: html.c:2190 423#: html.c:2284
424msgid "Bookmarked" 424msgid "Bookmarked"
425msgstr "Favoriet" 425msgstr "Favoriet"
426 426
427#: html.c:2198 427#: html.c:2292
428msgid "Poll" 428msgid "Poll"
429msgstr "Peiling" 429msgstr "Peiling"
430 430
431#: html.c:2205 431#: html.c:2299
432msgid "Voted" 432msgid "Voted"
433msgstr "Gestemd" 433msgstr "Gestemd"
434 434
435#: html.c:2214 435#: html.c:2308
436msgid "Event" 436msgid "Event"
437msgstr "Evenement" 437msgstr "Evenement"
438 438
439#: html.c:2246 html.c:2275 439#: html.c:2340 html.c:2369
440msgid "boosted" 440msgid "boosted"
441msgstr "geboost" 441msgstr "geboost"
442 442
443#: html.c:2289 443#: html.c:2383
444msgid "in reply to" 444msgid "in reply to"
445msgstr "als antwoord op" 445msgstr "als antwoord op"
446 446
447#: html.c:2345 447#: html.c:2439
448msgid " [SENSITIVE CONTENT]" 448msgid " [SENSITIVE CONTENT]"
449msgstr " [GEVOELIGE INHOUD]" 449msgstr " [GEVOELIGE INHOUD]"
450 450
451#: html.c:2512 451#: html.c:2796
452msgid "Vote" 452msgid "Vote"
453msgstr "Stem" 453msgstr "Stem"
454 454
455#: html.c:2522 455#: html.c:2806
456msgid "Closed" 456msgid "Closed"
457msgstr "Gesloten" 457msgstr "Gesloten"
458 458
459#: html.c:2547 459#: html.c:2831
460msgid "Closes in" 460msgid "Closes in"
461msgstr "Sluit over" 461msgstr "Sluit over"
462 462
463#: html.c:2627 463#: html.c:2911
464msgid "Video" 464msgid "Video"
465msgstr "Video" 465msgstr "Video"
466 466
467#: html.c:2642 467#: html.c:2926
468msgid "Audio" 468msgid "Audio"
469msgstr "Audio" 469msgstr "Audio"
470 470
471#: html.c:2670 471#: html.c:2954
472msgid "Attachment" 472msgid "Attachment"
473msgstr "Bijlage" 473msgstr "Bijlage"
474 474
475#: html.c:2684 475#: html.c:2968
476msgid "Alt..." 476msgid "Alt..."
477msgstr "Alt..." 477msgstr "Alt..."
478 478
479#: html.c:2697 479#: html.c:2981
480msgid "Source channel or community" 480msgid "Source channel or community"
481msgstr "Bron kanaal of gemeenschap" 481msgstr "Bron kanaal of gemeenschap"
482 482
483#: html.c:2791 483#: html.c:3075
484msgid "Time: " 484msgid "Time: "
485msgstr "Tijd: " 485msgstr "Tijd: "
486 486
487#: html.c:2872 487#: html.c:3156
488msgid "Older..." 488msgid "Older..."
489msgstr "Ouder..." 489msgstr "Ouder..."
490 490
491#: html.c:2974 491#: html.c:3258
492msgid "about this site" 492msgid "about this site"
493msgstr "over deze site" 493msgstr "over deze site"
494 494
495#: html.c:2976 495#: html.c:3260
496msgid "powered by " 496msgid "powered by "
497msgstr "aangedreven door " 497msgstr "aangedreven door "
498 498
499#: html.c:3041 499#: html.c:3329
500msgid "Dismiss" 500msgid "Dismiss"
501msgstr "Verwerp" 501msgstr "Verwerp"
502 502
503#: html.c:3058 503#: html.c:3346
504#, c-format 504#, c-format
505msgid "Timeline for list '%s'" 505msgid "Timeline for list '%s'"
506msgstr "Tijdlijn voor lijst '%s'" 506msgstr "Tijdlijn voor lijst '%s'"
507 507
508#: html.c:3077 html.c:4169 508#: html.c:3365 html.c:4589
509msgid "Pinned posts" 509msgid "Pinned posts"
510msgstr "Vastgezette berichten" 510msgstr "Vastgezette berichten"
511 511
512#: html.c:3089 html.c:4184 512#: html.c:3377 html.c:4604
513msgid "Bookmarked posts" 513msgid "Bookmarked posts"
514msgstr "Favoriete berichten" 514msgstr "Favoriete berichten"
515 515
516#: html.c:3101 html.c:4199 516#: html.c:3389 html.c:4619
517msgid "Post drafts" 517msgid "Post drafts"
518msgstr "Berichtenconcepten" 518msgstr "Berichtenconcepten"
519 519
520#: html.c:3177 520#: html.c:3465
521msgid "No more unseen posts" 521msgid "No more unseen posts"
522msgstr "Geen ongelezen berichten meer" 522msgstr "Geen ongelezen berichten meer"
523 523
524#: html.c:3181 html.c:3290 524#: html.c:3469 html.c:3578
525msgid "Back to top" 525msgid "Back to top"
526msgstr "Terug naar boven" 526msgstr "Terug naar boven"
527 527
528#: html.c:3243 528#: html.c:3531
529msgid "History" 529msgid "History"
530msgstr "Geschiedenis" 530msgstr "Geschiedenis"
531 531
532#: html.c:3295 html.c:3734 532#: html.c:3583 html.c:4149
533msgid "More..." 533msgid "More..."
534msgstr "Meer..." 534msgstr "Meer..."
535 535
536#: html.c:3391 html.c:4813 536#: html.c:3767 html.c:5257
537msgid "Unlimit" 537msgid "Unlimit"
538msgstr "Ongelimiteerd" 538msgstr "Ongelimiteerd"
539 539
540#: html.c:3392 540#: html.c:3768
541msgid "Allow announces (boosts) from this user" 541msgid "Allow announces (boosts) from this user"
542msgstr "Sta aankondigingen (boosts) van deze gebruiker toe" 542msgstr "Sta aankondigingen (boosts) van deze gebruiker toe"
543 543
544#: html.c:3395 html.c:4809 544#: html.c:3771 html.c:5253
545msgid "Limit" 545msgid "Limit"
546msgstr "Limiteer" 546msgstr "Limiteer"
547 547
548#: html.c:3396 548#: html.c:3772
549msgid "Block announces (boosts) from this user" 549msgid "Block announces (boosts) from this user"
550msgstr "Blokkeer aankondigingen (boosts) van deze gebruiker" 550msgstr "Blokkeer aankondigingen (boosts) van deze gebruiker"
551 551
552#: html.c:3405 552#: html.c:3781
553msgid "Delete this user" 553msgid "Delete this user"
554msgstr "Verwijder deze gebruiker" 554msgstr "Verwijder deze gebruiker"
555 555
556#: html.c:3410 html.c:4927 556#: html.c:3786 html.c:5371
557msgid "Approve" 557msgid "Approve"
558msgstr "Goedkeuren" 558msgstr "Goedkeuren"
559 559
560#: html.c:3411 560#: html.c:3787
561msgid "Approve this follow request" 561msgid "Approve this follow request"
562msgstr "Keurt dit volgverzoek goed" 562msgstr "Keurt dit volgverzoek goed"
563 563
564#: html.c:3414 html.c:4951 564#: html.c:3790 html.c:5395
565msgid "Discard" 565msgid "Discard"
566msgstr "Afwijzen" 566msgstr "Afwijzen"
567 567
568#: html.c:3414 568#: html.c:3790
569msgid "Discard this follow request" 569msgid "Discard this follow request"
570msgstr "Wijs dit volgverzoek af" 570msgstr "Wijs dit volgverzoek af"
571 571
572#: html.c:3419 html.c:4795 572#: html.c:3795 html.c:5239
573msgid "Unmute" 573msgid "Unmute"
574msgstr "Niet meer dempen" 574msgstr "Niet meer dempen"
575 575
576#: html.c:3420 576#: html.c:3796
577msgid "Stop blocking activities from this user" 577msgid "Stop blocking activities from this user"
578msgstr "Stop met het blokkeren van activiteiten van deze gebruiker" 578msgstr "Stop met het blokkeren van activiteiten van deze gebruiker"
579 579
580#: html.c:3424 580#: html.c:3800
581msgid "Block any activity from this user" 581msgid "Block any activity from this user"
582msgstr "Blokkeer alle activiteit van deze gebruiker" 582msgstr "Blokkeer alle activiteit van deze gebruiker"
583 583
584#: html.c:3432 584#: html.c:3808
585msgid "Direct Message..." 585msgid "Direct Message..."
586msgstr "Persoonlijk bericht..." 586msgstr "Persoonlijk bericht..."
587 587
588#: html.c:3467 588#: html.c:3843
589msgid "Pending follow confirmations" 589msgid "Pending follow confirmations"
590msgstr "Openstaande volgbevestigingen" 590msgstr "Openstaande volgbevestigingen"
591 591
592#: html.c:3471 592#: html.c:3847
593msgid "People you follow" 593msgid "People you follow"
594msgstr "Mensen die je volgt" 594msgstr "Mensen die je volgt"
595 595
596#: html.c:3472 596#: html.c:3848
597msgid "People that follow you" 597msgid "People that follow you"
598msgstr "Mensen die jou volgen" 598msgstr "Mensen die jou volgen"
599 599
600#: html.c:3511 600#: html.c:3887
601msgid "Clear all" 601msgid "Clear all"
602msgstr "Alle wissen" 602msgstr "Alle wissen"
603 603
604#: html.c:3571 604#: html.c:3951
605msgid "Mention" 605msgid "Mention"
606msgstr "Benoemen" 606msgstr "Benoemen"
607 607
608#: html.c:3574 608#: html.c:3954
609msgid "Finished poll" 609msgid "Finished poll"
610msgstr "Afgeronde peiling" 610msgstr "Afgeronde peiling"
611 611
612#: html.c:3590 612#: html.c:3979
613msgid "Follow Request" 613msgid "Follow Request"
614msgstr "Volgverzoek" 614msgstr "Volgverzoek"
615 615
616#: html.c:3674 616#: html.c:4089
617msgid "Context" 617msgid "Context"
618msgstr "Context" 618msgstr "Context"
619 619
620#: html.c:3692 620#: html.c:4107
621msgid "New" 621msgid "New"
622msgstr "Nieuw" 622msgstr "Nieuw"
623 623
624#: html.c:3707 624#: html.c:4122
625msgid "Already seen" 625msgid "Already seen"
626msgstr "Al gezien" 626msgstr "Al gezien"
627 627
628#: html.c:3722 628#: html.c:4137
629msgid "None" 629msgid "None"
630msgstr "Geen" 630msgstr "Geen"
631 631
632#: html.c:3994 632#: html.c:4414
633#, c-format 633#, c-format
634msgid "Search results for account %s" 634msgid "Search results for account %s"
635msgstr "Zoekresultaten voor account %s" 635msgstr "Zoekresultaten voor account %s"
636 636
637#: html.c:4001 637#: html.c:4421
638#, c-format 638#, c-format
639msgid "Account %s not found" 639msgid "Account %s not found"
640msgstr "Account %s niet gevonden" 640msgstr "Account %s niet gevonden"
641 641
642#: html.c:4032 642#: html.c:4452
643#, c-format 643#, c-format
644msgid "Search results for tag %s" 644msgid "Search results for tag %s"
645msgstr "Zoekresultaten voor tag %s" 645msgstr "Zoekresultaten voor tag %s"
646 646
647#: html.c:4032 647#: html.c:4452
648#, c-format 648#, c-format
649msgid "Nothing found for tag %s" 649msgid "Nothing found for tag %s"
650msgstr "Niets gevonden voor tag %s" 650msgstr "Niets gevonden voor tag %s"
651 651
652#: html.c:4048 652#: html.c:4468
653#, c-format 653#, c-format
654msgid "Search results for '%s' (may be more)" 654msgid "Search results for '%s' (may be more)"
655msgstr "Zoekresultaten voor '%s' (mogelijk meer)" 655msgstr "Zoekresultaten voor '%s' (mogelijk meer)"
656 656
657#: html.c:4051 657#: html.c:4471
658#, c-format 658#, c-format
659msgid "Search results for '%s'" 659msgid "Search results for '%s'"
660msgstr "Zoekresultaten voor '%s'" 660msgstr "Zoekresultaten voor '%s'"
661 661
662#: html.c:4054 662#: html.c:4474
663#, c-format 663#, c-format
664msgid "No more matches for '%s'" 664msgid "No more matches for '%s'"
665msgstr "Geen verdere overeenkomsten voor '%s'" 665msgstr "Geen verdere overeenkomsten voor '%s'"
666 666
667#: html.c:4056 667#: html.c:4476
668#, c-format 668#, c-format
669msgid "Nothing found for '%s'" 669msgid "Nothing found for '%s'"
670msgstr "Niets gevonden voor '%s'" 670msgstr "Niets gevonden voor '%s'"
671 671
672#: html.c:4154 672#: html.c:4574
673msgid "Showing instance timeline" 673msgid "Showing instance timeline"
674msgstr "Toond tijdlijn van instantie" 674msgstr "Toond tijdlijn van instantie"
675 675
676#: html.c:4237 676#: html.c:4657
677#, c-format 677#, c-format
678msgid "Showing timeline for list '%s'" 678msgid "Showing timeline for list '%s'"
679msgstr "Toond tijdlijn voor lijst '%s'" 679msgstr "Toond tijdlijn voor lijst '%s'"
680 680
681#: httpd.c:258 681#: httpd.c:259
682#, c-format 682#, c-format
683msgid "Search results for tag #%s" 683msgid "Search results for tag #%s"
684msgstr "Zoekresultaten voor tag #%s" 684msgstr "Zoekresultaten voor tag #%s"
685 685
686#: httpd.c:267 686#: httpd.c:268
687msgid "Recent posts by users in this instance" 687msgid "Recent posts by users in this instance"
688msgstr "Recente berichten van gebruikers in deze instantie" 688msgstr "Recente berichten van gebruikers in deze instantie"
689 689
690#: html.c:1764 690#: html.c:1842
691msgid "Blocked hashtags..." 691msgid "Blocked hashtags..."
692msgstr "Geblokkeerde hashtags..." 692msgstr "Geblokkeerde hashtags..."
693 693
694#: html.c:518 694#: html.c:574
695msgid "Optional URL to reply to" 695msgid "Optional URL to reply to"
696msgstr "Optionele URL om op te antwoorden" 696msgstr "Optionele URL om op te antwoorden"
697 697
698#: html.c:695 698#: html.c:751
699msgid "" 699msgid ""
700"Option 1...\n" 700"Option 1...\n"
701"Option 2...\n" 701"Option 2...\n"
@@ -707,94 +707,106 @@ msgstr ""
707"Optie 3...\n" 707"Optie 3...\n"
708"..." 708"..."
709 709
710#: html.c:1558 710#: html.c:1636
711msgid "Bot API key" 711msgid "Bot API key"
712msgstr "Bot API sleutel" 712msgstr "Bot API sleutel"
713 713
714#: html.c:1564 714#: html.c:1642
715msgid "Chat id" 715msgid "Chat id"
716msgstr "Chat id" 716msgstr "Chat id"
717 717
718#: html.c:1572 718#: html.c:1650
719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 719msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
720msgstr "ntfy server - volledige URL (voorbeeld: https://ntfy.sh/YourTopic)" 720msgstr "ntfy server - volledige URL (voorbeeld: https://ntfy.sh/YourTopic)"
721 721
722#: html.c:1578 722#: html.c:1656
723msgid "ntfy token - if needed" 723msgid "ntfy token - if needed"
724msgstr "ntfy token - indien nodig" 724msgstr "ntfy token - indien nodig"
725 725
726#: html.c:3078 726#: html.c:3366
727msgid "pinned" 727msgid "pinned"
728msgstr "vastgezet" 728msgstr "vastgezet"
729 729
730#: html.c:3090 730#: html.c:3378
731msgid "bookmarks" 731msgid "bookmarks"
732msgstr "favorieten" 732msgstr "favorieten"
733 733
734#: html.c:3102 734#: html.c:3390
735msgid "drafts" 735msgid "drafts"
736msgstr "concepten" 736msgstr "concepten"
737 737
738#: html.c:584 738#: html.c:640
739msgid "Scheduled post..." 739msgid "Scheduled post..."
740msgstr "Gepland bericht..." 740msgstr "Gepland bericht..."
741 741
742msgid "Post date and time:" 742msgid "Post date and time:"
743msgstr "Bericht datum en tijd:" 743msgstr "Bericht datum en tijd:"
744 744
745#: html.c:3113 html.c:4214 745#: html.c:3401 html.c:4634
746msgid "Scheduled posts" 746msgid "Scheduled posts"
747msgstr "Geplande berichten" 747msgstr "Geplande berichten"
748 748
749#: html.c:3114 749#: html.c:3402
750msgid "scheduled posts" 750msgid "scheduled posts"
751msgstr "geplande berichten" 751msgstr "geplande berichten"
752 752
753#: html.c:578 753#: html.c:634
754#, c-format 754#, c-format
755msgid "Post date and time (timezone: %s):" 755msgid "Post date and time (timezone: %s):"
756msgstr "Bericht datum en tijd (tijdzone: %s):" 756msgstr "Bericht datum en tijd (tijdzone: %s):"
757 757
758#: html.c:1689 758#: html.c:1767
759msgid "Time zone:" 759msgid "Time zone:"
760msgstr "Tijdzone:" 760msgstr "Tijdzone:"
761 761
762#: html.c:559 762#: html.c:615
763msgid "Language:" 763msgid "Language:"
764msgstr "" 764msgstr ""
765 765
766#: html.c:1580 766#: html.c:1658
767msgid "Notify webhook:" 767msgid "Notify webhook:"
768msgstr "" 768msgstr ""
769 769
770#: html.c:1586 770#: html.c:1664
771msgid "http://example.com/webhook" 771msgid "http://example.com/webhook"
772msgstr "" 772msgstr ""
773 773
774#: html.c:1694 774#: html.c:1772
775msgid "Languages you usually post in:" 775msgid "Languages you usually post in:"
776msgstr "" 776msgstr ""
777 777
778#: html.c:1700 778#: html.c:1778
779msgid "en fr es de_AT" 779msgid "en fr es de_AT"
780msgstr "" 780msgstr ""
781 781
782#: html.c:460 782#: html.c:428
783msgid "Visibility: " 783msgid "Visibility: "
784msgstr "" 784msgstr ""
785 785
786#: html.c:468
787msgid "Public" 786msgid "Public"
788msgstr "" 787msgstr ""
789 788
790#: html.c:477
791msgid "Unlisted" 789msgid "Unlisted"
792msgstr "" 790msgstr ""
793 791
794#: html.c:486
795msgid "Followers-only" 792msgid "Followers-only"
796msgstr "" 793msgstr ""
797 794
798#: html.c:495
799msgid "Direct Message" 795msgid "Direct Message"
800msgstr "" 796msgstr ""
797
798#: html.c:488 html.c:2534 html.c:2559 html.c:5177
799msgid "EmojiUnreact"
800msgstr ""
801
802#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
803msgid "EmojiReact"
804msgstr ""
805
806#: html.c:2115
807msgid "Emoji react..."
808msgstr ""
809
810#: html.c:2609
811msgid "Emoji reactions: "
812msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 12f8a83..71b0132 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -4,127 +4,127 @@
4msgid "" 4msgid ""
5msgstr "" 5msgstr ""
6"Project-Id-Version: snac\n" 6"Project-Id-Version: snac\n"
7"PO-Revision-Date: 2025-10-11 16:48-0300\n" 7"PO-Revision-Date: 2025-12-22 07:55-0300\n"
8"Last-Translator: Daltux <@daltux@snac.daltux.net>\n" 8"Last-Translator: Daltux <@daltux@snac.daltux.net>\n"
9"Language: pt_BR\n" 9"Language: pt_BR\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
11"Content-Type: text/plain; charset=UTF-8\n" 11"Content-Type: text/plain; charset=UTF-8\n"
12"Content-Transfer-Encoding: 8bit\n" 12"Content-Transfer-Encoding: 8bit\n"
13"X-Generator: Poedit 3.7\n" 13"X-Generator: Geany / PoHelper 2.0\n"
14 14
15#: html.c:440 15#: html.c:534
16msgid "Sensitive content: " 16msgid "Sensitive content: "
17msgstr "Conteúdo sensível: " 17msgstr "Conteúdo sensível: "
18 18
19#: html.c:448 19#: html.c:542
20msgid "Sensitive content description" 20msgid "Sensitive content description"
21msgstr "Descrição do conteúdo sensível" 21msgstr "Descrição do conteúdo sensível"
22 22
23msgid "Only for mentioned people: " 23msgid "Only for mentioned people: "
24msgstr "Apenas para pessoas mencionadas: " 24msgstr "Apenas para pessoas mencionadas: "
25 25
26#: html.c:514 26#: html.c:570
27msgid "Reply to (URL): " 27msgid "Reply to (URL): "
28msgstr "Resposta para (URL): " 28msgstr "Resposta para (URL): "
29 29
30#: html.c:523 30#: html.c:579
31msgid "Don't send, but store as a draft" 31msgid "Don't send, but store as a draft"
32msgstr "Não enviar, mas guardar como rascunho" 32msgstr "Não enviar, mas guardar como rascunho"
33 33
34#: html.c:524 34#: html.c:580
35msgid "Draft:" 35msgid "Draft:"
36msgstr "Rascunho:" 36msgstr "Rascunho:"
37 37
38#: html.c:614 38#: html.c:670
39msgid "Attachments..." 39msgid "Attachments..."
40msgstr "Anexos..." 40msgstr "Anexos..."
41 41
42#: html.c:637 42#: html.c:693
43msgid "File:" 43msgid "File:"
44msgstr "Arquivo:" 44msgstr "Arquivo:"
45 45
46#: html.c:641 46#: html.c:697
47msgid "Clear this field to delete the attachment" 47msgid "Clear this field to delete the attachment"
48msgstr "Limpe este campo para remover o anexo" 48msgstr "Limpe este campo para remover o anexo"
49 49
50#: html.c:650 html.c:675 50#: html.c:706 html.c:731
51msgid "Attachment description" 51msgid "Attachment description"
52msgstr "Descrição do anexo" 52msgstr "Descrição do anexo"
53 53
54#: html.c:686 54#: html.c:742
55msgid "Poll..." 55msgid "Poll..."
56msgstr "Enquete..." 56msgstr "Enquete..."
57 57
58#: html.c:688 58#: html.c:744
59msgid "Poll options (one per line, up to 8):" 59msgid "Poll options (one per line, up to 8):"
60msgstr "Alternativas da enquete (uma por linha, até 8):" 60msgstr "Alternativas da enquete (uma por linha, até 8):"
61 61
62#: html.c:700 62#: html.c:756
63msgid "One choice" 63msgid "One choice"
64msgstr "Escolha única" 64msgstr "Escolha única"
65 65
66#: html.c:703 66#: html.c:759
67msgid "Multiple choices" 67msgid "Multiple choices"
68msgstr "Escolhas múltiplas" 68msgstr "Escolhas múltiplas"
69 69
70#: html.c:709 70#: html.c:765
71msgid "End in 5 minutes" 71msgid "End in 5 minutes"
72msgstr "Encerrar em 5 minutos" 72msgstr "Encerrar em 5 minutos"
73 73
74#: html.c:713 74#: html.c:769
75msgid "End in 1 hour" 75msgid "End in 1 hour"
76msgstr "Encerrar em 1 hora" 76msgstr "Encerrar em 1 hora"
77 77
78#: html.c:716 78#: html.c:772
79msgid "End in 1 day" 79msgid "End in 1 day"
80msgstr "Encerrar em 1 dia" 80msgstr "Encerrar em 1 dia"
81 81
82#: html.c:724 82#: html.c:780
83msgid "Post" 83msgid "Post"
84msgstr "Publicar" 84msgstr "Publicar"
85 85
86#: html.c:826 html.c:833 86#: html.c:882 html.c:889
87msgid "Site description" 87msgid "Site description"
88msgstr "Descrição do sítio eletrônico" 88msgstr "Descrição do sítio eletrônico"
89 89
90#: html.c:844 90#: html.c:900
91msgid "Admin email" 91msgid "Admin email"
92msgstr "E-mail da administração" 92msgstr "E-mail da administração"
93 93
94#: html.c:857 94#: html.c:913
95msgid "Admin account" 95msgid "Admin account"
96msgstr "Conta de quem administra" 96msgstr "Conta de quem administra"
97 97
98#: html.c:922 html.c:1278 98#: html.c:978 html.c:1334
99#, c-format 99#, c-format
100msgid "%d following, %d followers" 100msgid "%d following, %d followers"
101msgstr "%d seguidos, %d seguidores" 101msgstr "%d seguidos, %d seguidores"
102 102
103#: html.c:1019 103#: html.c:1075
104msgid "RSS" 104msgid "RSS"
105msgstr "RSS" 105msgstr "RSS"
106 106
107#: html.c:1024 html.c:1063 107#: html.c:1080 html.c:1119
108msgid "private" 108msgid "private"
109msgstr "privado" 109msgstr "privado"
110 110
111#: html.c:1059 111#: html.c:1115
112msgid "public" 112msgid "public"
113msgstr "público" 113msgstr "público"
114 114
115#: html.c:1067 115#: html.c:1123
116msgid "notifications" 116msgid "notifications"
117msgstr "notificações" 117msgstr "notificações"
118 118
119#: html.c:1072 119#: html.c:1128
120msgid "people" 120msgid "people"
121msgstr "pessoas" 121msgstr "pessoas"
122 122
123#: html.c:1077 123#: html.c:1133
124msgid "instance" 124msgid "instance"
125msgstr "instância" 125msgstr "instância"
126 126
127#: html.c:1086 127#: html.c:1142
128msgid "" 128msgid ""
129"Search posts by URL or content (regular expression), @user@host accounts, or " 129"Search posts by URL or content (regular expression), @user@host accounts, or "
130"#tag" 130"#tag"
@@ -132,574 +132,574 @@ msgstr ""
132"Procurar publicações por URL ou conteúdo (expressão regular), contas " 132"Procurar publicações por URL ou conteúdo (expressão regular), contas "
133"(@perfil@servidor) ou #tag" 133"(@perfil@servidor) ou #tag"
134 134
135#: html.c:1087 135#: html.c:1143
136msgid "Content search" 136msgid "Content search"
137msgstr "Buscar conteúdo" 137msgstr "Buscar conteúdo"
138 138
139#: html.c:1213 139#: html.c:1269
140msgid "verified link" 140msgid "verified link"
141msgstr "ligação verificada" 141msgstr "ligação verificada"
142 142
143#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 143#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
144msgid "Location: " 144msgid "Location: "
145msgstr "Localização: " 145msgstr "Localização: "
146 146
147#: html.c:1302 147#: html.c:1358
148msgid "New Post..." 148msgid "New Post..."
149msgstr "Nova publicação..." 149msgstr "Nova publicação..."
150 150
151#: html.c:1304 151#: html.c:1360
152msgid "What's on your mind?" 152msgid "What's on your mind?"
153msgstr "O que tem em mente?" 153msgstr "O que tem em mente?"
154 154
155#: html.c:1313 155#: html.c:1369
156msgid "Operations..." 156msgid "Operations..."
157msgstr "Operações..." 157msgstr "Operações..."
158 158
159#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 159#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
160msgid "Follow" 160msgid "Follow"
161msgstr "Seguir" 161msgstr "Seguir"
162 162
163#: html.c:1330 163#: html.c:1386
164msgid "(by URL or user@host)" 164msgid "(by URL or user@host)"
165msgstr "(por URL ou conta@servidor)" 165msgstr "(por URL ou conta@servidor)"
166 166
167#: html.c:1345 html.c:1925 html.c:4766 167#: html.c:1401 html.c:2003 html.c:5210
168msgid "Boost" 168msgid "Boost"
169msgstr "Impulsionar" 169msgstr "Impulsionar"
170 170
171#: html.c:1347 html.c:1364 171#: html.c:1403 html.c:1420 html.c:1442
172msgid "(by URL)" 172msgid "(by URL)"
173msgstr "(por URL)" 173msgstr "(por URL)"
174 174
175#: html.c:1362 html.c:1904 html.c:4757 175#: html.c:1418 html.c:1982 html.c:5201
176msgid "Like" 176msgid "Like"
177msgstr "Curtir" 177msgstr "Curtir"
178 178
179#: html.c:1490 179#: html.c:1568
180msgid "User Settings..." 180msgid "User Settings..."
181msgstr "Definições da conta..." 181msgstr "Definições da conta..."
182 182
183#: html.c:1499 183#: html.c:1577
184msgid "Display name:" 184msgid "Display name:"
185msgstr "Nome a ser exibido:" 185msgstr "Nome a ser exibido:"
186 186
187#: html.c:1505 187#: html.c:1583
188msgid "Your name" 188msgid "Your name"
189msgstr "Seu nome" 189msgstr "Seu nome"
190 190
191#: html.c:1507 191#: html.c:1585
192msgid "Avatar: " 192msgid "Avatar: "
193msgstr "Avatar: " 193msgstr "Avatar: "
194 194
195#: html.c:1515 195#: html.c:1593
196msgid "Delete current avatar" 196msgid "Delete current avatar"
197msgstr "Remover avatar atual" 197msgstr "Remover avatar atual"
198 198
199#: html.c:1517 199#: html.c:1595
200msgid "Header image (banner): " 200msgid "Header image (banner): "
201msgstr "Imagem de cabeçalho (capa): " 201msgstr "Imagem de cabeçalho (capa): "
202 202
203#: html.c:1525 203#: html.c:1603
204msgid "Delete current header image" 204msgid "Delete current header image"
205msgstr "Remover imagem de cabeçalho atual" 205msgstr "Remover imagem de cabeçalho atual"
206 206
207#: html.c:1527 207#: html.c:1605
208msgid "Bio:" 208msgid "Bio:"
209msgstr "Biografia:" 209msgstr "Biografia:"
210 210
211#: html.c:1533 211#: html.c:1611
212msgid "Write about yourself here..." 212msgid "Write about yourself here..."
213msgstr "Escreva aqui sobre você..." 213msgstr "Escreva aqui sobre você..."
214 214
215#: html.c:1542 215#: html.c:1620
216msgid "Always show sensitive content" 216msgid "Always show sensitive content"
217msgstr "Sempre exibir conteúdo sensível" 217msgstr "Sempre exibir conteúdo sensível"
218 218
219#: html.c:1544 219#: html.c:1622
220msgid "Email address for notifications:" 220msgid "Email address for notifications:"
221msgstr "Endereço de e-mail para notificações:" 221msgstr "Endereço de e-mail para notificações:"
222 222
223#: html.c:1552 223#: html.c:1630
224msgid "Telegram notifications (bot key and chat id):" 224msgid "Telegram notifications (bot key and chat id):"
225msgstr "Notificações Telegram (chave do robô e ID da conversa):" 225msgstr "Notificações Telegram (chave do robô e ID da conversa):"
226 226
227#: html.c:1566 227#: html.c:1644
228msgid "ntfy notifications (ntfy server and token):" 228msgid "ntfy notifications (ntfy server and token):"
229msgstr "ntfy - notificações (servidor ntfy e token):" 229msgstr "ntfy - notificações (servidor ntfy e token):"
230 230
231#: html.c:1588 231#: html.c:1666
232msgid "Maximum days to keep posts (0: server settings):" 232msgid "Maximum days to keep posts (0: server settings):"
233msgstr "Máximo de dias a preservar publicações (0: definições do servidor):" 233msgstr "Máximo de dias a preservar publicações (0: definições do servidor):"
234 234
235#: html.c:1602 235#: html.c:1680
236msgid "Drop direct messages from people you don't follow" 236msgid "Drop direct messages from people you don't follow"
237msgstr "Descartar mensagens diretas de quem você não segue" 237msgstr "Descartar mensagens diretas de quem você não segue"
238 238
239#: html.c:1611 239#: html.c:1689
240msgid "This account is a bot" 240msgid "This account is a bot"
241msgstr "Esta conta é robotizada" 241msgstr "Esta conta é robotizada"
242 242
243#: html.c:1620 243#: html.c:1698
244msgid "Auto-boost all mentions to this account" 244msgid "Auto-boost all mentions to this account"
245msgstr "Impulsionar automaticamente todas as menções a esta conta" 245msgstr "Impulsionar automaticamente todas as menções a esta conta"
246 246
247#: html.c:1629 247#: html.c:1707
248msgid "This account is private (posts are not shown through the web)" 248msgid "This account is private (posts are not shown through the web)"
249msgstr "Esta conta é privada (as publicações não são exibidas na Web)" 249msgstr "Esta conta é privada (as publicações não são exibidas na Web)"
250 250
251#: html.c:1639 251#: html.c:1717
252msgid "Collapse top threads by default" 252msgid "Collapse top threads by default"
253msgstr "Recolher por padrão as sequências de publicações" 253msgstr "Recolher por padrão as sequências de publicações"
254 254
255#: html.c:1648 255#: html.c:1726
256msgid "Follow requests must be approved" 256msgid "Follow requests must be approved"
257msgstr "Solicitações de seguimento precisam ser aprovadas" 257msgstr "Solicitações de seguimento precisam ser aprovadas"
258 258
259#: html.c:1657 259#: html.c:1735
260msgid "Publish follower and following metrics" 260msgid "Publish follower and following metrics"
261msgstr "Publicar métricas de seguidores e seguidos" 261msgstr "Publicar métricas de seguidores e seguidos"
262 262
263#: html.c:1659 263#: html.c:1737
264msgid "Current location:" 264msgid "Current location:"
265msgstr "Localização atual:" 265msgstr "Localização atual:"
266 266
267#: html.c:1673 267#: html.c:1751
268msgid "Profile metadata (key=value pairs in each line):" 268msgid "Profile metadata (key=value pairs in each line):"
269msgstr "Metadados do perfil (par de chave=valor em cada linha):" 269msgstr "Metadados do perfil (par de chave=valor em cada linha):"
270 270
271#: html.c:1684 271#: html.c:1762
272msgid "Web interface language:" 272msgid "Web interface language:"
273msgstr "Idioma da interface Web:" 273msgstr "Idioma da interface Web:"
274 274
275#: html.c:1703 275#: html.c:1781
276msgid "New password:" 276msgid "New password:"
277msgstr "Nova senha:" 277msgstr "Nova senha:"
278 278
279#: html.c:1710 279#: html.c:1788
280msgid "Repeat new password:" 280msgid "Repeat new password:"
281msgstr "Repita a nova senha:" 281msgstr "Repita a nova senha:"
282 282
283#: html.c:1720 283#: html.c:1798
284msgid "Update user info" 284msgid "Update user info"
285msgstr "Atualizar informações da conta" 285msgstr "Atualizar informações da conta"
286 286
287#: html.c:1731 287#: html.c:1809
288msgid "Followed hashtags..." 288msgid "Followed hashtags..."
289msgstr "Hashtags seguidas..." 289msgstr "Hashtags seguidas..."
290 290
291#: html.c:1733 html.c:1766 291#: html.c:1811 html.c:1844
292msgid "One hashtag per line" 292msgid "One hashtag per line"
293msgstr "Uma hashtag por linha" 293msgstr "Uma hashtag por linha"
294 294
295#: html.c:1755 html.c:1787 295#: html.c:1833 html.c:1865
296msgid "Update hashtags" 296msgid "Update hashtags"
297msgstr "Atualizar hashtags" 297msgstr "Atualizar hashtags"
298 298
299#: html.c:1904 299#: html.c:1982
300msgid "Say you like this post" 300msgid "Say you like this post"
301msgstr "Declarar que gosta desta publicação" 301msgstr "Declarar que gosta desta publicação"
302 302
303#: html.c:1909 html.c:4775 303#: html.c:1987 html.c:5219
304msgid "Unlike" 304msgid "Unlike"
305msgstr "Descurtir" 305msgstr "Descurtir"
306 306
307#: html.c:1909 307#: html.c:1987
308msgid "Nah don't like it that much" 308msgid "Nah don't like it that much"
309msgstr "Não gosto tanto assim disso" 309msgstr "Não gosto tanto assim disso"
310 310
311#: html.c:1915 html.c:4912 311#: html.c:1993 html.c:5356
312msgid "Unpin" 312msgid "Unpin"
313msgstr "Desafixar" 313msgstr "Desafixar"
314 314
315#: html.c:1915 315#: html.c:1993
316msgid "Unpin this post from your timeline" 316msgid "Unpin this post from your timeline"
317msgstr "Desafixar esta publicação da sua linha do tempo" 317msgstr "Desafixar esta publicação da sua linha do tempo"
318 318
319#: html.c:1918 html.c:4907 319#: html.c:1996 html.c:5351
320msgid "Pin" 320msgid "Pin"
321msgstr "Afixar" 321msgstr "Afixar"
322 322
323#: html.c:1918 323#: html.c:1996
324msgid "Pin this post to the top of your timeline" 324msgid "Pin this post to the top of your timeline"
325msgstr "Afixar esta publicação no topo de sua linha do tempo" 325msgstr "Afixar esta publicação no topo de sua linha do tempo"
326 326
327#: html.c:1925 327#: html.c:2003
328msgid "Announce this post to your followers" 328msgid "Announce this post to your followers"
329msgstr "Anunciar esta publicação para seus seguidores" 329msgstr "Anunciar esta publicação para seus seguidores"
330 330
331#: html.c:1930 html.c:4783 331#: html.c:2008 html.c:5227
332msgid "Unboost" 332msgid "Unboost"
333msgstr "Desimpulsionar" 333msgstr "Desimpulsionar"
334 334
335#: html.c:1930 335#: html.c:2008
336msgid "I regret I boosted this" 336msgid "I regret I boosted this"
337msgstr "Arrependo-me de ter impulsionado isso" 337msgstr "Arrependo-me de ter impulsionado isso"
338 338
339#: html.c:1936 html.c:4922 339#: html.c:2014 html.c:5366
340msgid "Unbookmark" 340msgid "Unbookmark"
341msgstr "Desmarcar" 341msgstr "Desmarcar"
342 342
343#: html.c:1936 343#: html.c:2014
344msgid "Delete this post from your bookmarks" 344msgid "Delete this post from your bookmarks"
345msgstr "Remover esta publicação dos seus marcadores" 345msgstr "Remover esta publicação dos seus marcadores"
346 346
347#: html.c:1939 html.c:4917 347#: html.c:2017 html.c:5361
348msgid "Bookmark" 348msgid "Bookmark"
349msgstr "Marcar" 349msgstr "Marcar"
350 350
351#: html.c:1939 351#: html.c:2017
352msgid "Add this post to your bookmarks" 352msgid "Add this post to your bookmarks"
353msgstr "Adicionar esta publicação aos seus marcadores" 353msgstr "Adicionar esta publicação aos seus marcadores"
354 354
355#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 355#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
356msgid "Unfollow" 356msgid "Unfollow"
357msgstr "Deixar de seguir" 357msgstr "Deixar de seguir"
358 358
359#: html.c:1945 html.c:3387 359#: html.c:2023 html.c:3763 html.c:4042
360msgid "Stop following this user's activity" 360msgid "Stop following this user's activity"
361msgstr "Parar de acompanhar a atividade deste perfil" 361msgstr "Parar de acompanhar a atividade deste perfil"
362 362
363#: html.c:1949 html.c:3401 363#: html.c:2027 html.c:3777 html.c:4044
364msgid "Start following this user's activity" 364msgid "Start following this user's activity"
365msgstr "Começar a acompanhar a atividade deste perfil" 365msgstr "Começar a acompanhar a atividade deste perfil"
366 366
367#: html.c:1955 html.c:4860 367#: html.c:2033 html.c:5304
368msgid "Unfollow Group" 368msgid "Unfollow Group"
369msgstr "Deixar de seguir grupo" 369msgstr "Deixar de seguir grupo"
370 370
371#: html.c:1956 371#: html.c:2034
372msgid "Stop following this group or channel" 372msgid "Stop following this group or channel"
373msgstr "Parar de acompanhar este grupo ou canal" 373msgstr "Parar de acompanhar este grupo ou canal"
374 374
375#: html.c:1960 html.c:4847 375#: html.c:2038 html.c:5291
376msgid "Follow Group" 376msgid "Follow Group"
377msgstr "Seguir grupo" 377msgstr "Seguir grupo"
378 378
379#: html.c:1961 379#: html.c:2039
380msgid "Start following this group or channel" 380msgid "Start following this group or channel"
381msgstr "Começar a acompanhar este grupo ou canal" 381msgstr "Começar a acompanhar este grupo ou canal"
382 382
383#: html.c:1966 html.c:3423 html.c:4791 383#: html.c:2044 html.c:3799 html.c:5235
384msgid "MUTE" 384msgid "MUTE"
385msgstr "MUDO" 385msgstr "MUDO"
386 386
387#: html.c:1967 387#: html.c:2045
388msgid "Block any activity from this user forever" 388msgid "Block any activity from this user forever"
389msgstr "Bloquear toda atividade deste perfil para sempre" 389msgstr "Bloquear toda atividade deste perfil para sempre"
390 390
391#: html.c:1972 html.c:3405 html.c:4877 391#: html.c:2050 html.c:3781 html.c:5321
392msgid "Delete" 392msgid "Delete"
393msgstr "Eliminar" 393msgstr "Eliminar"
394 394
395#: html.c:1972 395#: html.c:2050
396msgid "Delete this post" 396msgid "Delete this post"
397msgstr "Apagar esta publicação" 397msgstr "Apagar esta publicação"
398 398
399#: html.c:1975 html.c:4799 399#: html.c:2053 html.c:5243
400msgid "Hide" 400msgid "Hide"
401msgstr "Ocultar" 401msgstr "Ocultar"
402 402
403#: html.c:1975 403#: html.c:2053
404msgid "Hide this post and its children" 404msgid "Hide this post and its children"
405msgstr "Ocultar esta publicação e suas respostas" 405msgstr "Ocultar esta publicação e suas respostas"
406 406
407#: html.c:2017 407#: html.c:2095
408msgid "Edit..." 408msgid "Edit..."
409msgstr "Editar..." 409msgstr "Editar..."
410 410
411#: html.c:2039 411#: html.c:2133
412msgid "Reply..." 412msgid "Reply..."
413msgstr "Responder..." 413msgstr "Responder..."
414 414
415#: html.c:2090 415#: html.c:2184
416msgid "Truncated (too deep)" 416msgid "Truncated (too deep)"
417msgstr "Truncada (muito extensa)" 417msgstr "Truncada (muito extensa)"
418 418
419#: html.c:2108 419#: html.c:2202
420msgid "follows you" 420msgid "follows you"
421msgstr "segue você" 421msgstr "segue você"
422 422
423#: html.c:2182 423#: html.c:2276
424msgid "Pinned" 424msgid "Pinned"
425msgstr "Afixada" 425msgstr "Afixada"
426 426
427#: html.c:2190 427#: html.c:2284
428msgid "Bookmarked" 428msgid "Bookmarked"
429msgstr "Marcada" 429msgstr "Marcada"
430 430
431#: html.c:2198 431#: html.c:2292
432msgid "Poll" 432msgid "Poll"
433msgstr "Enquete" 433msgstr "Enquete"
434 434
435#: html.c:2205 435#: html.c:2299
436msgid "Voted" 436msgid "Voted"
437msgstr "Votou" 437msgstr "Votou"
438 438
439#: html.c:2214 439#: html.c:2308
440msgid "Event" 440msgid "Event"
441msgstr "Evento" 441msgstr "Evento"
442 442
443#: html.c:2246 html.c:2275 443#: html.c:2340 html.c:2369
444msgid "boosted" 444msgid "boosted"
445msgstr "impulsionou" 445msgstr "impulsionou"
446 446
447#: html.c:2289 447#: html.c:2383
448msgid "in reply to" 448msgid "in reply to"
449msgstr "em resposta a" 449msgstr "em resposta a"
450 450
451#: html.c:2345 451#: html.c:2439
452msgid " [SENSITIVE CONTENT]" 452msgid " [SENSITIVE CONTENT]"
453msgstr " [CONTEÚDO SENSÃVEL]" 453msgstr " [CONTEÚDO SENSÃVEL]"
454 454
455#: html.c:2512 455#: html.c:2796
456msgid "Vote" 456msgid "Vote"
457msgstr "Votar" 457msgstr "Votar"
458 458
459#: html.c:2522 459#: html.c:2806
460msgid "Closed" 460msgid "Closed"
461msgstr "Encerrada" 461msgstr "Encerrada"
462 462
463#: html.c:2547 463#: html.c:2831
464msgid "Closes in" 464msgid "Closes in"
465msgstr "Encerra em" 465msgstr "Encerra em"
466 466
467#: html.c:2627 467#: html.c:2911
468msgid "Video" 468msgid "Video"
469msgstr "Vídeo" 469msgstr "Vídeo"
470 470
471#: html.c:2642 471#: html.c:2926
472msgid "Audio" 472msgid "Audio"
473msgstr "Ãudio" 473msgstr "Ãudio"
474 474
475#: html.c:2670 475#: html.c:2954
476msgid "Attachment" 476msgid "Attachment"
477msgstr "Anexo" 477msgstr "Anexo"
478 478
479#: html.c:2684 479#: html.c:2968
480msgid "Alt..." 480msgid "Alt..."
481msgstr "Texto alternativo..." 481msgstr "Texto alternativo..."
482 482
483#: html.c:2697 483#: html.c:2981
484msgid "Source channel or community" 484msgid "Source channel or community"
485msgstr "Canal ou comunidade de origem" 485msgstr "Canal ou comunidade de origem"
486 486
487#: html.c:2791 487#: html.c:3075
488msgid "Time: " 488msgid "Time: "
489msgstr "Horário: " 489msgstr "Horário: "
490 490
491#: html.c:2872 491#: html.c:3156
492msgid "Older..." 492msgid "Older..."
493msgstr "Anteriores..." 493msgstr "Anteriores..."
494 494
495#: html.c:2974 495#: html.c:3258
496msgid "about this site" 496msgid "about this site"
497msgstr "sobre este sítio eletrônico" 497msgstr "sobre este sítio eletrônico"
498 498
499#: html.c:2976 499#: html.c:3260
500msgid "powered by " 500msgid "powered by "
501msgstr "movido por " 501msgstr "movido por "
502 502
503#: html.c:3041 503#: html.c:3329
504msgid "Dismiss" 504msgid "Dismiss"
505msgstr "Dispensar" 505msgstr "Dispensar"
506 506
507#: html.c:3058 507#: html.c:3346
508#, c-format 508#, c-format
509msgid "Timeline for list '%s'" 509msgid "Timeline for list '%s'"
510msgstr "Linha do tempo da lista '%s'" 510msgstr "Linha do tempo da lista '%s'"
511 511
512#: html.c:3077 html.c:4169 512#: html.c:3365 html.c:4589
513msgid "Pinned posts" 513msgid "Pinned posts"
514msgstr "Publicações afixadas" 514msgstr "Publicações afixadas"
515 515
516#: html.c:3089 html.c:4184 516#: html.c:3377 html.c:4604
517msgid "Bookmarked posts" 517msgid "Bookmarked posts"
518msgstr "Publicações marcadas" 518msgstr "Publicações marcadas"
519 519
520#: html.c:3101 html.c:4199 520#: html.c:3389 html.c:4619
521msgid "Post drafts" 521msgid "Post drafts"
522msgstr "Publicações em rascunho" 522msgstr "Publicações em rascunho"
523 523
524#: html.c:3177 524#: html.c:3465
525msgid "No more unseen posts" 525msgid "No more unseen posts"
526msgstr "Sem mais publicações não vistas" 526msgstr "Sem mais publicações não vistas"
527 527
528#: html.c:3181 html.c:3290 528#: html.c:3469 html.c:3578
529msgid "Back to top" 529msgid "Back to top"
530msgstr "Voltar ao topo" 530msgstr "Voltar ao topo"
531 531
532#: html.c:3243 532#: html.c:3531
533msgid "History" 533msgid "History"
534msgstr "Histórico" 534msgstr "Histórico"
535 535
536#: html.c:3295 html.c:3734 536#: html.c:3583 html.c:4149
537msgid "More..." 537msgid "More..."
538msgstr "Mais..." 538msgstr "Mais..."
539 539
540#: html.c:3391 html.c:4813 540#: html.c:3767 html.c:5257
541msgid "Unlimit" 541msgid "Unlimit"
542msgstr "Retirar restrição" 542msgstr "Retirar restrição"
543 543
544#: html.c:3392 544#: html.c:3768
545msgid "Allow announces (boosts) from this user" 545msgid "Allow announces (boosts) from this user"
546msgstr "Permitir anúncios (impulsionamentos) deste perfil" 546msgstr "Permitir anúncios (impulsionamentos) deste perfil"
547 547
548#: html.c:3395 html.c:4809 548#: html.c:3771 html.c:5253
549msgid "Limit" 549msgid "Limit"
550msgstr "Restringir" 550msgstr "Restringir"
551 551
552#: html.c:3396 552#: html.c:3772
553msgid "Block announces (boosts) from this user" 553msgid "Block announces (boosts) from this user"
554msgstr "Bloquear anúncios (impulsionamentos) deste perfil" 554msgstr "Bloquear anúncios (impulsionamentos) deste perfil"
555 555
556#: html.c:3405 556#: html.c:3781
557msgid "Delete this user" 557msgid "Delete this user"
558msgstr "Apagar este perfil" 558msgstr "Apagar este perfil"
559 559
560#: html.c:3410 html.c:4927 560#: html.c:3786 html.c:5371
561msgid "Approve" 561msgid "Approve"
562msgstr "Aprovar" 562msgstr "Aprovar"
563 563
564#: html.c:3411 564#: html.c:3787
565msgid "Approve this follow request" 565msgid "Approve this follow request"
566msgstr "Aprovar esta solicitação de seguimento" 566msgstr "Aprovar esta solicitação de seguimento"
567 567
568#: html.c:3414 html.c:4951 568#: html.c:3790 html.c:5395
569msgid "Discard" 569msgid "Discard"
570msgstr "Descartar" 570msgstr "Descartar"
571 571
572#: html.c:3414 572#: html.c:3790
573msgid "Discard this follow request" 573msgid "Discard this follow request"
574msgstr "Descartar esta solicitação de seguimento" 574msgstr "Descartar esta solicitação de seguimento"
575 575
576#: html.c:3419 html.c:4795 576#: html.c:3795 html.c:5239
577msgid "Unmute" 577msgid "Unmute"
578msgstr "Desbloquear" 578msgstr "Desbloquear"
579 579
580#: html.c:3420 580#: html.c:3796
581msgid "Stop blocking activities from this user" 581msgid "Stop blocking activities from this user"
582msgstr "Parar de bloquear as atividades deste perfil" 582msgstr "Parar de bloquear as atividades deste perfil"
583 583
584#: html.c:3424 584#: html.c:3800
585msgid "Block any activity from this user" 585msgid "Block any activity from this user"
586msgstr "Bloquear toda atividade deste perfil" 586msgstr "Bloquear toda atividade deste perfil"
587 587
588#: html.c:3432 588#: html.c:3808
589msgid "Direct Message..." 589msgid "Direct Message..."
590msgstr "Mensagem direta..." 590msgstr "Mensagem direta..."
591 591
592#: html.c:3467 592#: html.c:3843
593msgid "Pending follow confirmations" 593msgid "Pending follow confirmations"
594msgstr "Confirmações de seguimento pendentes" 594msgstr "Confirmações de seguimento pendentes"
595 595
596#: html.c:3471 596#: html.c:3847
597msgid "People you follow" 597msgid "People you follow"
598msgstr "Pessoas que você segue" 598msgstr "Pessoas que você segue"
599 599
600#: html.c:3472 600#: html.c:3848
601msgid "People that follow you" 601msgid "People that follow you"
602msgstr "Pessoas que seguem você" 602msgstr "Pessoas que seguem você"
603 603
604#: html.c:3511 604#: html.c:3887
605msgid "Clear all" 605msgid "Clear all"
606msgstr "Limpar tudo" 606msgstr "Limpar tudo"
607 607
608#: html.c:3571 608#: html.c:3951
609msgid "Mention" 609msgid "Mention"
610msgstr "Menção" 610msgstr "Menção"
611 611
612#: html.c:3574 612#: html.c:3954
613msgid "Finished poll" 613msgid "Finished poll"
614msgstr "Enquete encerrada" 614msgstr "Enquete encerrada"
615 615
616#: html.c:3590 616#: html.c:3979
617msgid "Follow Request" 617msgid "Follow Request"
618msgstr "Solicitação de seguimento" 618msgstr "Solicitação de seguimento"
619 619
620#: html.c:3674 620#: html.c:4089
621msgid "Context" 621msgid "Context"
622msgstr "Contexto" 622msgstr "Contexto"
623 623
624#: html.c:3692 624#: html.c:4107
625msgid "New" 625msgid "New"
626msgstr "Novas" 626msgstr "Novas"
627 627
628#: html.c:3707 628#: html.c:4122
629msgid "Already seen" 629msgid "Already seen"
630msgstr "Já vistas" 630msgstr "Já vistas"
631 631
632#: html.c:3722 632#: html.c:4137
633msgid "None" 633msgid "None"
634msgstr "Nenhuma" 634msgstr "Nenhuma"
635 635
636#: html.c:3994 636#: html.c:4414
637#, c-format 637#, c-format
638msgid "Search results for account %s" 638msgid "Search results for account %s"
639msgstr "Resultados da busca pela conta %s" 639msgstr "Resultados da busca pela conta %s"
640 640
641#: html.c:4001 641#: html.c:4421
642#, c-format 642#, c-format
643msgid "Account %s not found" 643msgid "Account %s not found"
644msgstr "Conta %s não encontrada" 644msgstr "Conta %s não encontrada"
645 645
646#: html.c:4032 646#: html.c:4452
647#, c-format 647#, c-format
648msgid "Search results for tag %s" 648msgid "Search results for tag %s"
649msgstr "Resultados da busca pela hashtag %s" 649msgstr "Resultados da busca pela hashtag %s"
650 650
651#: html.c:4032 651#: html.c:4452
652#, c-format 652#, c-format
653msgid "Nothing found for tag %s" 653msgid "Nothing found for tag %s"
654msgstr "Nada consta com hashtag %s" 654msgstr "Nada consta com hashtag %s"
655 655
656#: html.c:4048 656#: html.c:4468
657#, c-format 657#, c-format
658msgid "Search results for '%s' (may be more)" 658msgid "Search results for '%s' (may be more)"
659msgstr "Resultados da busca por '%s' (pode haver mais)" 659msgstr "Resultados da busca por '%s' (pode haver mais)"
660 660
661#: html.c:4051 661#: html.c:4471
662#, c-format 662#, c-format
663msgid "Search results for '%s'" 663msgid "Search results for '%s'"
664msgstr "Resultados da busca por '%s'" 664msgstr "Resultados da busca por '%s'"
665 665
666#: html.c:4054 666#: html.c:4474
667#, c-format 667#, c-format
668msgid "No more matches for '%s'" 668msgid "No more matches for '%s'"
669msgstr "Sem mais combinações para '%s'" 669msgstr "Sem mais combinações para '%s'"
670 670
671#: html.c:4056 671#: html.c:4476
672#, c-format 672#, c-format
673msgid "Nothing found for '%s'" 673msgid "Nothing found for '%s'"
674msgstr "Nada consta com '%s'" 674msgstr "Nada consta com '%s'"
675 675
676#: html.c:4154 676#: html.c:4574
677msgid "Showing instance timeline" 677msgid "Showing instance timeline"
678msgstr "Exibindo linha do tempo da instância" 678msgstr "Exibindo linha do tempo da instância"
679 679
680#: html.c:4237 680#: html.c:4657
681#, c-format 681#, c-format
682msgid "Showing timeline for list '%s'" 682msgid "Showing timeline for list '%s'"
683msgstr "Exibindo linha do tempo da lista '%s'" 683msgstr "Exibindo linha do tempo da lista '%s'"
684 684
685#: httpd.c:258 685#: httpd.c:259
686#, c-format 686#, c-format
687msgid "Search results for tag #%s" 687msgid "Search results for tag #%s"
688msgstr "Resultados da busca pela hashtag #%s" 688msgstr "Resultados da busca pela hashtag #%s"
689 689
690#: httpd.c:267 690#: httpd.c:268
691msgid "Recent posts by users in this instance" 691msgid "Recent posts by users in this instance"
692msgstr "Publicações recentes de perfis desta instância" 692msgstr "Publicações recentes de perfis desta instância"
693 693
694#: html.c:1764 694#: html.c:1842
695msgid "Blocked hashtags..." 695msgid "Blocked hashtags..."
696msgstr "Hashtags bloqueadas..." 696msgstr "Hashtags bloqueadas..."
697 697
698#: html.c:518 698#: html.c:574
699msgid "Optional URL to reply to" 699msgid "Optional URL to reply to"
700msgstr "URL opcional para a qual responder" 700msgstr "URL opcional para a qual responder"
701 701
702#: html.c:695 702#: html.c:751
703msgid "" 703msgid ""
704"Option 1...\n" 704"Option 1...\n"
705"Option 2...\n" 705"Option 2...\n"
@@ -711,94 +711,106 @@ msgstr ""
711"Opção 3...\n" 711"Opção 3...\n"
712"..." 712"..."
713 713
714#: html.c:1558 714#: html.c:1636
715msgid "Bot API key" 715msgid "Bot API key"
716msgstr "Chave de API do robô" 716msgstr "Chave de API do robô"
717 717
718#: html.c:1564 718#: html.c:1642
719msgid "Chat id" 719msgid "Chat id"
720msgstr "ID da conversa" 720msgstr "ID da conversa"
721 721
722#: html.c:1572 722#: html.c:1650
723msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 723msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
724msgstr "ntfy - servidor - URL completa (exemplo: https://ntfy.sh/SeuTópico)" 724msgstr "ntfy - servidor - URL completa (exemplo: https://ntfy.sh/SeuTópico)"
725 725
726#: html.c:1578 726#: html.c:1656
727msgid "ntfy token - if needed" 727msgid "ntfy token - if needed"
728msgstr "ntfy - token (se necessário)" 728msgstr "ntfy - token (se necessário)"
729 729
730#: html.c:3078 730#: html.c:3366
731msgid "pinned" 731msgid "pinned"
732msgstr "afixadas" 732msgstr "afixadas"
733 733
734#: html.c:3090 734#: html.c:3378
735msgid "bookmarks" 735msgid "bookmarks"
736msgstr "marcadores" 736msgstr "marcadores"
737 737
738#: html.c:3102 738#: html.c:3390
739msgid "drafts" 739msgid "drafts"
740msgstr "rascunhos" 740msgstr "rascunhos"
741 741
742#: html.c:584 742#: html.c:640
743msgid "Scheduled post..." 743msgid "Scheduled post..."
744msgstr "Publicação agendada..." 744msgstr "Publicação agendada..."
745 745
746msgid "Post date and time:" 746msgid "Post date and time:"
747msgstr "Data e horário da publicação:" 747msgstr "Data e horário da publicação:"
748 748
749#: html.c:3113 html.c:4214 749#: html.c:3401 html.c:4634
750msgid "Scheduled posts" 750msgid "Scheduled posts"
751msgstr "Publicações agendadas" 751msgstr "Publicações agendadas"
752 752
753#: html.c:3114 753#: html.c:3402
754msgid "scheduled posts" 754msgid "scheduled posts"
755msgstr "publicações agendadas" 755msgstr "publicações agendadas"
756 756
757#: html.c:578 757#: html.c:634
758#, c-format 758#, c-format
759msgid "Post date and time (timezone: %s):" 759msgid "Post date and time (timezone: %s):"
760msgstr "Data e hora da publicação (fuso horário: %s):" 760msgstr "Data e hora da publicação (fuso horário: %s):"
761 761
762#: html.c:1689 762#: html.c:1767
763msgid "Time zone:" 763msgid "Time zone:"
764msgstr "Fuso horário:" 764msgstr "Fuso horário:"
765 765
766#: html.c:559 766#: html.c:615
767msgid "Language:" 767msgid "Language:"
768msgstr "Idioma:" 768msgstr "Idioma:"
769 769
770#: html.c:1580 770#: html.c:1658
771msgid "Notify webhook:" 771msgid "Notify webhook:"
772msgstr "Webhook para notificar:" 772msgstr "Webhook para notificar:"
773 773
774#: html.c:1586 774#: html.c:1664
775msgid "http://example.com/webhook" 775msgid "http://example.com/webhook"
776msgstr "http://exemplo.com.br/webhook" 776msgstr "http://exemplo.com.br/webhook"
777 777
778#: html.c:1694 778#: html.c:1772
779msgid "Languages you usually post in:" 779msgid "Languages you usually post in:"
780msgstr "Idiomas em que costuma postar:" 780msgstr "Idiomas em que costuma postar:"
781 781
782#: html.c:1700 782#: html.c:1778
783msgid "en fr es de_AT" 783msgid "en fr es de_AT"
784msgstr "pt en fr es de_AT" 784msgstr "pt en fr es de_AT"
785 785
786#: html.c:460 786#: html.c:428
787msgid "Visibility: " 787msgid "Visibility: "
788msgstr "Visibilidade: " 788msgstr "Visibilidade: "
789 789
790#: html.c:468
791msgid "Public" 790msgid "Public"
792msgstr "Pública" 791msgstr "Pública"
793 792
794#: html.c:477
795msgid "Unlisted" 793msgid "Unlisted"
796msgstr "Não listada" 794msgstr "Não listada"
797 795
798#: html.c:486
799msgid "Followers-only" 796msgid "Followers-only"
800msgstr "Seguidores apenas" 797msgstr "Seguidores apenas"
801 798
802#: html.c:495
803msgid "Direct Message" 799msgid "Direct Message"
804msgstr "Mensagem direta" 800msgstr "Mensagem direta"
801
802#: html.c:488 html.c:2534 html.c:2559 html.c:5177
803msgid "Desfazer EmojiReação"
804msgstr ""
805
806#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
807msgid "EmojiReact"
808msgstr "EmojiReação"
809
810#: html.c:2115
811msgid "Emoji react..."
812msgstr "EmojiReagir..."
813
814#: html.c:2609
815msgid "Emoji reactions: "
816msgstr "EmojiReações: "
diff --git a/po/ru.po b/po/ru.po
index f91ccf1..0de03ac 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -15,119 +15,119 @@ msgstr ""
15"Content-Transfer-Encoding: 8bit\n" 15"Content-Transfer-Encoding: 8bit\n"
16"X-Generator: Poedit 3.0\n" 16"X-Generator: Poedit 3.0\n"
17 17
18#: html.c:440 18#: html.c:534
19msgid "Sensitive content: " 19msgid "Sensitive content: "
20msgstr "ЧувÑтвительное Ñодержимое: " 20msgstr "ЧувÑтвительное Ñодержимое: "
21 21
22#: html.c:448 22#: html.c:542
23msgid "Sensitive content description" 23msgid "Sensitive content description"
24msgstr "ОпиÑание чувÑтвительного Ñодержимого" 24msgstr "ОпиÑание чувÑтвительного Ñодержимого"
25 25
26msgid "Only for mentioned people: " 26msgid "Only for mentioned people: "
27msgstr "Только Ð´Ð»Ñ ÑƒÐ¿Ð¾Ð¼Ñнутых людей: " 27msgstr "Только Ð´Ð»Ñ ÑƒÐ¿Ð¾Ð¼Ñнутых людей: "
28 28
29#: html.c:514 29#: html.c:570
30msgid "Reply to (URL): " 30msgid "Reply to (URL): "
31msgstr "Ответ на (URL): " 31msgstr "Ответ на (URL): "
32 32
33#: html.c:523 33#: html.c:579
34msgid "Don't send, but store as a draft" 34msgid "Don't send, but store as a draft"
35msgstr "Ðе отправлÑть, Ñохранить черновик" 35msgstr "Ðе отправлÑть, Ñохранить черновик"
36 36
37#: html.c:524 37#: html.c:580
38msgid "Draft:" 38msgid "Draft:"
39msgstr "Черновик:" 39msgstr "Черновик:"
40 40
41#: html.c:614 41#: html.c:670
42msgid "Attachments..." 42msgid "Attachments..."
43msgstr "ВложениÑ..." 43msgstr "ВложениÑ..."
44 44
45#: html.c:637 45#: html.c:693
46msgid "File:" 46msgid "File:"
47msgstr "Файл:" 47msgstr "Файл:"
48 48
49#: html.c:641 49#: html.c:697
50msgid "Clear this field to delete the attachment" 50msgid "Clear this field to delete the attachment"
51msgstr "ОчиÑтите Ñто поле, чтоб удалить вложение" 51msgstr "ОчиÑтите Ñто поле, чтоб удалить вложение"
52 52
53#: html.c:650 html.c:675 53#: html.c:706 html.c:731
54msgid "Attachment description" 54msgid "Attachment description"
55msgstr "ОпиÑание вложениÑ" 55msgstr "ОпиÑание вложениÑ"
56 56
57#: html.c:686 57#: html.c:742
58msgid "Poll..." 58msgid "Poll..."
59msgstr "ОпроÑ..." 59msgstr "ОпроÑ..."
60 60
61#: html.c:688 61#: html.c:744
62msgid "Poll options (one per line, up to 8):" 62msgid "Poll options (one per line, up to 8):"
63msgstr "Варианты ответа (один на Ñтроку, до 8 шт):" 63msgstr "Варианты ответа (один на Ñтроку, до 8 шт):"
64 64
65#: html.c:700 65#: html.c:756
66msgid "One choice" 66msgid "One choice"
67msgstr "Один выбор" 67msgstr "Один выбор"
68 68
69#: html.c:703 69#: html.c:759
70msgid "Multiple choices" 70msgid "Multiple choices"
71msgstr "МножеÑтвенный выбор" 71msgstr "МножеÑтвенный выбор"
72 72
73#: html.c:709 73#: html.c:765
74msgid "End in 5 minutes" 74msgid "End in 5 minutes"
75msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 5 минут" 75msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 5 минут"
76 76
77#: html.c:713 77#: html.c:769
78msgid "End in 1 hour" 78msgid "End in 1 hour"
79msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 1 чаÑ" 79msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 1 чаÑ"
80 80
81#: html.c:716 81#: html.c:772
82msgid "End in 1 day" 82msgid "End in 1 day"
83msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 1 день" 83msgstr "ЗаканчиваетÑÑ Ñ‡ÐµÑ€ÐµÐ· 1 день"
84 84
85#: html.c:724 85#: html.c:780
86msgid "Post" 86msgid "Post"
87msgstr "Отправить" 87msgstr "Отправить"
88 88
89#: html.c:826 html.c:833 89#: html.c:882 html.c:889
90msgid "Site description" 90msgid "Site description"
91msgstr "ОпиÑание Ñайта" 91msgstr "ОпиÑание Ñайта"
92 92
93#: html.c:844 93#: html.c:900
94msgid "Admin email" 94msgid "Admin email"
95msgstr "Почта админа" 95msgstr "Почта админа"
96 96
97#: html.c:857 97#: html.c:913
98msgid "Admin account" 98msgid "Admin account"
99msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админа" 99msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админа"
100 100
101#: html.c:922 html.c:1278 101#: html.c:978 html.c:1334
102#, c-format 102#, c-format
103msgid "%d following, %d followers" 103msgid "%d following, %d followers"
104msgstr "%d подпиÑан, %d подпиÑчиков" 104msgstr "%d подпиÑан, %d подпиÑчиков"
105 105
106#: html.c:1019 106#: html.c:1075
107msgid "RSS" 107msgid "RSS"
108msgstr "RSS" 108msgstr "RSS"
109 109
110#: html.c:1024 html.c:1063 110#: html.c:1080 html.c:1119
111msgid "private" 111msgid "private"
112msgstr "личное" 112msgstr "личное"
113 113
114#: html.c:1059 114#: html.c:1115
115msgid "public" 115msgid "public"
116msgstr "публичное" 116msgstr "публичное"
117 117
118#: html.c:1067 118#: html.c:1123
119msgid "notifications" 119msgid "notifications"
120msgstr "уведомлениÑ" 120msgstr "уведомлениÑ"
121 121
122#: html.c:1072 122#: html.c:1128
123msgid "people" 123msgid "people"
124msgstr "люди" 124msgstr "люди"
125 125
126#: html.c:1077 126#: html.c:1133
127msgid "instance" 127msgid "instance"
128msgstr "Ñервер" 128msgstr "Ñервер"
129 129
130#: html.c:1086 130#: html.c:1142
131msgid "" 131msgid ""
132"Search posts by URL or content (regular expression), @user@host accounts, or " 132"Search posts by URL or content (regular expression), @user@host accounts, or "
133"#tag" 133"#tag"
@@ -135,574 +135,574 @@ msgstr ""
135"ПоиÑк Ñообщений по URL или Ñодержимому (регулÑрное выражение), учетной " 135"ПоиÑк Ñообщений по URL или Ñодержимому (регулÑрное выражение), учетной "
136"запиÑи вида @user@host, или #тегу" 136"запиÑи вида @user@host, или #тегу"
137 137
138#: html.c:1087 138#: html.c:1143
139msgid "Content search" 139msgid "Content search"
140msgstr "ПоиÑк Ñодержимого" 140msgstr "ПоиÑк Ñодержимого"
141 141
142#: html.c:1213 142#: html.c:1269
143msgid "verified link" 143msgid "verified link"
144msgstr "Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ð°Ñ ÑÑылка" 144msgstr "Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ð°Ñ ÑÑылка"
145 145
146#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 146#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
147msgid "Location: " 147msgid "Location: "
148msgstr "МеÑтоположение: " 148msgstr "МеÑтоположение: "
149 149
150#: html.c:1302 150#: html.c:1358
151msgid "New Post..." 151msgid "New Post..."
152msgstr "Ðовое Ñообщение..." 152msgstr "Ðовое Ñообщение..."
153 153
154#: html.c:1304 154#: html.c:1360
155msgid "What's on your mind?" 155msgid "What's on your mind?"
156msgstr "Что у Ð²Ð°Ñ Ð½Ð° уме?" 156msgstr "Что у Ð²Ð°Ñ Ð½Ð° уме?"
157 157
158#: html.c:1313 158#: html.c:1369
159msgid "Operations..." 159msgid "Operations..."
160msgstr "ДейÑтвиÑ..." 160msgstr "ДейÑтвиÑ..."
161 161
162#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 162#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
163msgid "Follow" 163msgid "Follow"
164msgstr "ПодпиÑатьÑÑ" 164msgstr "ПодпиÑатьÑÑ"
165 165
166#: html.c:1330 166#: html.c:1386
167msgid "(by URL or user@host)" 167msgid "(by URL or user@host)"
168msgstr "(по URL или user@host)" 168msgstr "(по URL или user@host)"
169 169
170#: html.c:1345 html.c:1925 html.c:4766 170#: html.c:1401 html.c:2003 html.c:5210
171msgid "Boost" 171msgid "Boost"
172msgstr "Продвинуть" 172msgstr "Продвинуть"
173 173
174#: html.c:1347 html.c:1364 174#: html.c:1403 html.c:1420 html.c:1442
175msgid "(by URL)" 175msgid "(by URL)"
176msgstr "(по URL)" 176msgstr "(по URL)"
177 177
178#: html.c:1362 html.c:1904 html.c:4757 178#: html.c:1418 html.c:1982 html.c:5201
179msgid "Like" 179msgid "Like"
180msgstr "Лайкнуть" 180msgstr "Лайкнуть"
181 181
182#: html.c:1490 182#: html.c:1568
183msgid "User Settings..." 183msgid "User Settings..."
184msgstr "ПользовательÑкие наÑтройки..." 184msgstr "ПользовательÑкие наÑтройки..."
185 185
186#: html.c:1499 186#: html.c:1577
187msgid "Display name:" 187msgid "Display name:"
188msgstr "Отображаемое имÑ:" 188msgstr "Отображаемое имÑ:"
189 189
190#: html.c:1505 190#: html.c:1583
191msgid "Your name" 191msgid "Your name"
192msgstr "Ваше имÑ" 192msgstr "Ваше имÑ"
193 193
194#: html.c:1507 194#: html.c:1585
195msgid "Avatar: " 195msgid "Avatar: "
196msgstr "Ðватар: " 196msgstr "Ðватар: "
197 197
198#: html.c:1515 198#: html.c:1593
199msgid "Delete current avatar" 199msgid "Delete current avatar"
200msgstr "Удалить текущий аватар" 200msgstr "Удалить текущий аватар"
201 201
202#: html.c:1517 202#: html.c:1595
203msgid "Header image (banner): " 203msgid "Header image (banner): "
204msgstr "Заглавное изображение (баннер): " 204msgstr "Заглавное изображение (баннер): "
205 205
206#: html.c:1525 206#: html.c:1603
207msgid "Delete current header image" 207msgid "Delete current header image"
208msgstr "Удалить текущее заглавное изображение" 208msgstr "Удалить текущее заглавное изображение"
209 209
210#: html.c:1527 210#: html.c:1605
211msgid "Bio:" 211msgid "Bio:"
212msgstr "О Ñебе:" 212msgstr "О Ñебе:"
213 213
214#: html.c:1533 214#: html.c:1611
215msgid "Write about yourself here..." 215msgid "Write about yourself here..."
216msgstr "Ðапишите что-нибудь про ÑебÑ..." 216msgstr "Ðапишите что-нибудь про ÑебÑ..."
217 217
218#: html.c:1542 218#: html.c:1620
219msgid "Always show sensitive content" 219msgid "Always show sensitive content"
220msgstr "Ð’Ñегда показывать чувÑтвительное Ñодержимое" 220msgstr "Ð’Ñегда показывать чувÑтвительное Ñодержимое"
221 221
222#: html.c:1544 222#: html.c:1622
223msgid "Email address for notifications:" 223msgid "Email address for notifications:"
224msgstr "Почтовый Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹:" 224msgstr "Почтовый Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹:"
225 225
226#: html.c:1552 226#: html.c:1630
227msgid "Telegram notifications (bot key and chat id):" 227msgid "Telegram notifications (bot key and chat id):"
228msgstr "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² Telegram (ключ бота и id чата):" 228msgstr "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² Telegram (ключ бота и id чата):"
229 229
230#: html.c:1566 230#: html.c:1644
231msgid "ntfy notifications (ntfy server and token):" 231msgid "ntfy notifications (ntfy server and token):"
232msgstr "ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² ntfy (Ñервер и токен ntfy):" 232msgstr "ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² ntfy (Ñервер и токен ntfy):"
233 233
234#: html.c:1588 234#: html.c:1666
235msgid "Maximum days to keep posts (0: server settings):" 235msgid "Maximum days to keep posts (0: server settings):"
236msgstr "МакÑимальное Ð²Ñ€ÐµÐ¼Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñообщений (0: наÑтройки Ñервера):" 236msgstr "МакÑимальное Ð²Ñ€ÐµÐ¼Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñообщений (0: наÑтройки Ñервера):"
237 237
238#: html.c:1602 238#: html.c:1680
239msgid "Drop direct messages from people you don't follow" 239msgid "Drop direct messages from people you don't follow"
240msgstr "ОтклонÑть личные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ незнакомцев" 240msgstr "ОтклонÑть личные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ незнакомцев"
241 241
242#: html.c:1611 242#: html.c:1689
243msgid "This account is a bot" 243msgid "This account is a bot"
244msgstr "Это аккаунт бота" 244msgstr "Это аккаунт бота"
245 245
246#: html.c:1620 246#: html.c:1698
247msgid "Auto-boost all mentions to this account" 247msgid "Auto-boost all mentions to this account"
248msgstr "ÐвтоматичеÑки продвигать вÑе ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñтого аккаунта" 248msgstr "ÐвтоматичеÑки продвигать вÑе ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñтого аккаунта"
249 249
250#: html.c:1629 250#: html.c:1707
251msgid "This account is private (posts are not shown through the web)" 251msgid "This account is private (posts are not shown through the web)"
252msgstr "Это закрытый аккаунт (ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ показываютÑÑ Ð² Ñети)" 252msgstr "Это закрытый аккаунт (ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ показываютÑÑ Ð² Ñети)"
253 253
254#: html.c:1639 254#: html.c:1717
255msgid "Collapse top threads by default" 255msgid "Collapse top threads by default"
256msgstr "Сворачивать обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию" 256msgstr "Сворачивать обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
257 257
258#: html.c:1648 258#: html.c:1726
259msgid "Follow requests must be approved" 259msgid "Follow requests must be approved"
260msgstr "ЗапроÑÑ‹ подпиÑки требуют подтверждениÑ" 260msgstr "ЗапроÑÑ‹ подпиÑки требуют подтверждениÑ"
261 261
262#: html.c:1657 262#: html.c:1735
263msgid "Publish follower and following metrics" 263msgid "Publish follower and following metrics"
264msgstr "Публиковать ÑтатиÑтику подпиÑок и подпиÑчиков" 264msgstr "Публиковать ÑтатиÑтику подпиÑок и подпиÑчиков"
265 265
266#: html.c:1659 266#: html.c:1737
267msgid "Current location:" 267msgid "Current location:"
268msgstr "Текущее метоположение:" 268msgstr "Текущее метоположение:"
269 269
270#: html.c:1673 270#: html.c:1751
271msgid "Profile metadata (key=value pairs in each line):" 271msgid "Profile metadata (key=value pairs in each line):"
272msgstr "Метаданные Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (пары ключ=значение, по одной на Ñтроку)" 272msgstr "Метаданные Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (пары ключ=значение, по одной на Ñтроку)"
273 273
274#: html.c:1684 274#: html.c:1762
275msgid "Web interface language:" 275msgid "Web interface language:"
276msgstr "Язык интерфейÑа:" 276msgstr "Язык интерфейÑа:"
277 277
278#: html.c:1703 278#: html.c:1781
279msgid "New password:" 279msgid "New password:"
280msgstr "Ðовый пароль:" 280msgstr "Ðовый пароль:"
281 281
282#: html.c:1710 282#: html.c:1788
283msgid "Repeat new password:" 283msgid "Repeat new password:"
284msgstr "Повторите новый пароль:" 284msgstr "Повторите новый пароль:"
285 285
286#: html.c:1720 286#: html.c:1798
287msgid "Update user info" 287msgid "Update user info"
288msgstr "Обновить данные пользователÑ" 288msgstr "Обновить данные пользователÑ"
289 289
290#: html.c:1731 290#: html.c:1809
291msgid "Followed hashtags..." 291msgid "Followed hashtags..."
292msgstr "ОтÑлеживаемые хештеги..." 292msgstr "ОтÑлеживаемые хештеги..."
293 293
294#: html.c:1733 html.c:1766 294#: html.c:1811 html.c:1844
295msgid "One hashtag per line" 295msgid "One hashtag per line"
296msgstr "По одному на Ñтроку" 296msgstr "По одному на Ñтроку"
297 297
298#: html.c:1755 html.c:1787 298#: html.c:1833 html.c:1865
299msgid "Update hashtags" 299msgid "Update hashtags"
300msgstr "Обновить хештеги" 300msgstr "Обновить хештеги"
301 301
302#: html.c:1904 302#: html.c:1982
303msgid "Say you like this post" 303msgid "Say you like this post"
304msgstr "Отметить Ñообщение понравившимÑÑ" 304msgstr "Отметить Ñообщение понравившимÑÑ"
305 305
306#: html.c:1909 html.c:4775 306#: html.c:1987 html.c:5219
307msgid "Unlike" 307msgid "Unlike"
308msgstr "Больше не нравитÑÑ" 308msgstr "Больше не нравитÑÑ"
309 309
310#: html.c:1909 310#: html.c:1987
311msgid "Nah don't like it that much" 311msgid "Nah don't like it that much"
312msgstr "Ðе так уж и понравилоÑÑŒ" 312msgstr "Ðе так уж и понравилоÑÑŒ"
313 313
314#: html.c:1915 html.c:4912 314#: html.c:1993 html.c:5356
315msgid "Unpin" 315msgid "Unpin"
316msgstr "Открепить" 316msgstr "Открепить"
317 317
318#: html.c:1915 318#: html.c:1993
319msgid "Unpin this post from your timeline" 319msgid "Unpin this post from your timeline"
320msgstr "Открепить Ñто Ñообщение из Ñвоей ленты" 320msgstr "Открепить Ñто Ñообщение из Ñвоей ленты"
321 321
322#: html.c:1918 html.c:4907 322#: html.c:1996 html.c:5351
323msgid "Pin" 323msgid "Pin"
324msgstr "Закрепить" 324msgstr "Закрепить"
325 325
326#: html.c:1918 326#: html.c:1996
327msgid "Pin this post to the top of your timeline" 327msgid "Pin this post to the top of your timeline"
328msgstr "Закрепить Ñто Ñообщение в Ñвоей ленте" 328msgstr "Закрепить Ñто Ñообщение в Ñвоей ленте"
329 329
330#: html.c:1925 330#: html.c:2003
331msgid "Announce this post to your followers" 331msgid "Announce this post to your followers"
332msgstr "ПоделитьÑÑ Ñтим Ñообщением Ñо Ñвоими подпиÑчиками" 332msgstr "ПоделитьÑÑ Ñтим Ñообщением Ñо Ñвоими подпиÑчиками"
333 333
334#: html.c:1930 html.c:4783 334#: html.c:2008 html.c:5227
335msgid "Unboost" 335msgid "Unboost"
336msgstr "Отменить продвижение" 336msgstr "Отменить продвижение"
337 337
338#: html.c:1930 338#: html.c:2008
339msgid "I regret I boosted this" 339msgid "I regret I boosted this"
340msgstr "Ðе буду продвигать, пожалуй" 340msgstr "Ðе буду продвигать, пожалуй"
341 341
342#: html.c:1936 html.c:4922 342#: html.c:2014 html.c:5366
343msgid "Unbookmark" 343msgid "Unbookmark"
344msgstr "Удалить из закладок" 344msgstr "Удалить из закладок"
345 345
346#: html.c:1936 346#: html.c:2014
347msgid "Delete this post from your bookmarks" 347msgid "Delete this post from your bookmarks"
348msgstr "Удалить Ñто Ñообщение из закладок" 348msgstr "Удалить Ñто Ñообщение из закладок"
349 349
350#: html.c:1939 html.c:4917 350#: html.c:2017 html.c:5361
351msgid "Bookmark" 351msgid "Bookmark"
352msgstr "Добавить в закладки" 352msgstr "Добавить в закладки"
353 353
354#: html.c:1939 354#: html.c:2017
355msgid "Add this post to your bookmarks" 355msgid "Add this post to your bookmarks"
356msgstr "Добавить Ñообщение в закладки" 356msgstr "Добавить Ñообщение в закладки"
357 357
358#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 358#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
359msgid "Unfollow" 359msgid "Unfollow"
360msgstr "ОтпиÑатьÑÑ" 360msgstr "ОтпиÑатьÑÑ"
361 361
362#: html.c:1945 html.c:3387 362#: html.c:2023 html.c:3763 html.c:4042
363msgid "Stop following this user's activity" 363msgid "Stop following this user's activity"
364msgstr "Отменить подпиÑку на Ñтого пользователÑ" 364msgstr "Отменить подпиÑку на Ñтого пользователÑ"
365 365
366#: html.c:1949 html.c:3401 366#: html.c:2027 html.c:3777 html.c:4044
367msgid "Start following this user's activity" 367msgid "Start following this user's activity"
368msgstr "Ðачать Ñледовать за Ñтим пользователем" 368msgstr "Ðачать Ñледовать за Ñтим пользователем"
369 369
370#: html.c:1955 html.c:4860 370#: html.c:2033 html.c:5304
371msgid "Unfollow Group" 371msgid "Unfollow Group"
372msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ группы" 372msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ группы"
373 373
374#: html.c:1956 374#: html.c:2034
375msgid "Stop following this group or channel" 375msgid "Stop following this group or channel"
376msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ группы или канала" 376msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ группы или канала"
377 377
378#: html.c:1960 html.c:4847 378#: html.c:2038 html.c:5291
379msgid "Follow Group" 379msgid "Follow Group"
380msgstr "ПодпиÑатьÑÑ Ð½Ð° группу" 380msgstr "ПодпиÑатьÑÑ Ð½Ð° группу"
381 381
382#: html.c:1961 382#: html.c:2039
383msgid "Start following this group or channel" 383msgid "Start following this group or channel"
384msgstr "ПодпиÑатьÑÑ Ð½Ð° группу или канал" 384msgstr "ПодпиÑатьÑÑ Ð½Ð° группу или канал"
385 385
386#: html.c:1966 html.c:3423 html.c:4791 386#: html.c:2044 html.c:3799 html.c:5235
387msgid "MUTE" 387msgid "MUTE"
388msgstr "Заглушить" 388msgstr "Заглушить"
389 389
390#: html.c:1967 390#: html.c:2045
391msgid "Block any activity from this user forever" 391msgid "Block any activity from this user forever"
392msgstr "Заглушить вÑÑŽ активноÑть от Ñтого пользователÑ, навÑегда" 392msgstr "Заглушить вÑÑŽ активноÑть от Ñтого пользователÑ, навÑегда"
393 393
394#: html.c:1972 html.c:3405 html.c:4877 394#: html.c:2050 html.c:3781 html.c:5321
395msgid "Delete" 395msgid "Delete"
396msgstr "Удалить" 396msgstr "Удалить"
397 397
398#: html.c:1972 398#: html.c:2050
399msgid "Delete this post" 399msgid "Delete this post"
400msgstr "Удалить Ñто Ñообщение" 400msgstr "Удалить Ñто Ñообщение"
401 401
402#: html.c:1975 html.c:4799 402#: html.c:2053 html.c:5243
403msgid "Hide" 403msgid "Hide"
404msgstr "Скрыть" 404msgstr "Скрыть"
405 405
406#: html.c:1975 406#: html.c:2053
407msgid "Hide this post and its children" 407msgid "Hide this post and its children"
408msgstr "Скрыть Ñто Ñообщение вмеÑте Ñ Ð¾Ð±Ñуждением" 408msgstr "Скрыть Ñто Ñообщение вмеÑте Ñ Ð¾Ð±Ñуждением"
409 409
410#: html.c:2017 410#: html.c:2095
411msgid "Edit..." 411msgid "Edit..."
412msgstr "Редактировать..." 412msgstr "Редактировать..."
413 413
414#: html.c:2039 414#: html.c:2133
415msgid "Reply..." 415msgid "Reply..."
416msgstr "Ответить..." 416msgstr "Ответить..."
417 417
418#: html.c:2090 418#: html.c:2184
419msgid "Truncated (too deep)" 419msgid "Truncated (too deep)"
420msgstr "Обрезано (Ñлишком много)" 420msgstr "Обрезано (Ñлишком много)"
421 421
422#: html.c:2108 422#: html.c:2202
423msgid "follows you" 423msgid "follows you"
424msgstr "подпиÑан на ваÑ" 424msgstr "подпиÑан на ваÑ"
425 425
426#: html.c:2182 426#: html.c:2276
427msgid "Pinned" 427msgid "Pinned"
428msgstr "Закреплено" 428msgstr "Закреплено"
429 429
430#: html.c:2190 430#: html.c:2284
431msgid "Bookmarked" 431msgid "Bookmarked"
432msgstr "Добавлено в закладки" 432msgstr "Добавлено в закладки"
433 433
434#: html.c:2198 434#: html.c:2292
435msgid "Poll" 435msgid "Poll"
436msgstr "ОпроÑ" 436msgstr "ОпроÑ"
437 437
438#: html.c:2205 438#: html.c:2299
439msgid "Voted" 439msgid "Voted"
440msgstr "ПроголоÑовано" 440msgstr "ПроголоÑовано"
441 441
442#: html.c:2214 442#: html.c:2308
443msgid "Event" 443msgid "Event"
444msgstr "Событие" 444msgstr "Событие"
445 445
446#: html.c:2246 html.c:2275 446#: html.c:2340 html.c:2369
447msgid "boosted" 447msgid "boosted"
448msgstr "поделилÑÑ" 448msgstr "поделилÑÑ"
449 449
450#: html.c:2289 450#: html.c:2383
451msgid "in reply to" 451msgid "in reply to"
452msgstr "в ответ на" 452msgstr "в ответ на"
453 453
454#: html.c:2345 454#: html.c:2439
455msgid " [SENSITIVE CONTENT]" 455msgid " [SENSITIVE CONTENT]"
456msgstr " [ЧУВСТВИТЕЛЬÐО СОДЕРЖИМОЕ]" 456msgstr " [ЧУВСТВИТЕЛЬÐО СОДЕРЖИМОЕ]"
457 457
458#: html.c:2512 458#: html.c:2796
459msgid "Vote" 459msgid "Vote"
460msgstr "ГолоÑ" 460msgstr "ГолоÑ"
461 461
462#: html.c:2522 462#: html.c:2806
463msgid "Closed" 463msgid "Closed"
464msgstr "Закрыт" 464msgstr "Закрыт"
465 465
466#: html.c:2547 466#: html.c:2831
467msgid "Closes in" 467msgid "Closes in"
468msgstr "ЗакрываетÑÑ Ñ‡ÐµÑ€ÐµÐ·" 468msgstr "ЗакрываетÑÑ Ñ‡ÐµÑ€ÐµÐ·"
469 469
470#: html.c:2627 470#: html.c:2911
471msgid "Video" 471msgid "Video"
472msgstr "Видео" 472msgstr "Видео"
473 473
474#: html.c:2642 474#: html.c:2926
475msgid "Audio" 475msgid "Audio"
476msgstr "Ðудио" 476msgstr "Ðудио"
477 477
478#: html.c:2670 478#: html.c:2954
479msgid "Attachment" 479msgid "Attachment"
480msgstr "Вложение" 480msgstr "Вложение"
481 481
482#: html.c:2684 482#: html.c:2968
483msgid "Alt..." 483msgid "Alt..."
484msgstr "ОпиÑание..." 484msgstr "ОпиÑание..."
485 485
486#: html.c:2697 486#: html.c:2981
487msgid "Source channel or community" 487msgid "Source channel or community"
488msgstr "ИÑходный канал или ÑообщеÑтво" 488msgstr "ИÑходный канал или ÑообщеÑтво"
489 489
490#: html.c:2791 490#: html.c:3075
491msgid "Time: " 491msgid "Time: "
492msgstr "ВремÑ: " 492msgstr "ВремÑ: "
493 493
494#: html.c:2872 494#: html.c:3156
495msgid "Older..." 495msgid "Older..."
496msgstr "Ранее..." 496msgstr "Ранее..."
497 497
498#: html.c:2974 498#: html.c:3258
499msgid "about this site" 499msgid "about this site"
500msgstr "про Ñтот Ñайт" 500msgstr "про Ñтот Ñайт"
501 501
502#: html.c:2976 502#: html.c:3260
503msgid "powered by " 503msgid "powered by "
504msgstr "на оÑнове " 504msgstr "на оÑнове "
505 505
506#: html.c:3041 506#: html.c:3329
507msgid "Dismiss" 507msgid "Dismiss"
508msgstr "Скрыть" 508msgstr "Скрыть"
509 509
510#: html.c:3058 510#: html.c:3346
511#, c-format 511#, c-format
512msgid "Timeline for list '%s'" 512msgid "Timeline for list '%s'"
513msgstr "Ленты Ð´Ð»Ñ ÑпиÑка '%s'" 513msgstr "Ленты Ð´Ð»Ñ ÑпиÑка '%s'"
514 514
515#: html.c:3077 html.c:4169 515#: html.c:3365 html.c:4589
516msgid "Pinned posts" 516msgid "Pinned posts"
517msgstr "Закреплённые ÑообщениÑ" 517msgstr "Закреплённые ÑообщениÑ"
518 518
519#: html.c:3089 html.c:4184 519#: html.c:3377 html.c:4604
520msgid "Bookmarked posts" 520msgid "Bookmarked posts"
521msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² закладках" 521msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² закладках"
522 522
523#: html.c:3101 html.c:4199 523#: html.c:3389 html.c:4619
524msgid "Post drafts" 524msgid "Post drafts"
525msgstr "Черновики Ñообщений" 525msgstr "Черновики Ñообщений"
526 526
527#: html.c:3177 527#: html.c:3465
528msgid "No more unseen posts" 528msgid "No more unseen posts"
529msgstr "Ð’ÑÑ‘ проÑмотрено" 529msgstr "Ð’ÑÑ‘ проÑмотрено"
530 530
531#: html.c:3181 html.c:3290 531#: html.c:3469 html.c:3578
532msgid "Back to top" 532msgid "Back to top"
533msgstr "ВернутьÑÑ Ð½Ð°Ð²ÐµÑ€Ñ…" 533msgstr "ВернутьÑÑ Ð½Ð°Ð²ÐµÑ€Ñ…"
534 534
535#: html.c:3243 535#: html.c:3531
536msgid "History" 536msgid "History"
537msgstr "ИÑториÑ" 537msgstr "ИÑториÑ"
538 538
539#: html.c:3295 html.c:3734 539#: html.c:3583 html.c:4149
540msgid "More..." 540msgid "More..."
541msgstr "Ещё..." 541msgstr "Ещё..."
542 542
543#: html.c:3391 html.c:4813 543#: html.c:3767 html.c:5257
544msgid "Unlimit" 544msgid "Unlimit"
545msgstr "Без ограничениÑ" 545msgstr "Без ограничениÑ"
546 546
547#: html.c:3392 547#: html.c:3768
548msgid "Allow announces (boosts) from this user" 548msgid "Allow announces (boosts) from this user"
549msgstr "Разрешить Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого пользователÑ" 549msgstr "Разрешить Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого пользователÑ"
550 550
551#: html.c:3395 html.c:4809 551#: html.c:3771 html.c:5253
552msgid "Limit" 552msgid "Limit"
553msgstr "Лимит" 553msgstr "Лимит"
554 554
555#: html.c:3396 555#: html.c:3772
556msgid "Block announces (boosts) from this user" 556msgid "Block announces (boosts) from this user"
557msgstr "Запретить Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого пользователÑ" 557msgstr "Запретить Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого пользователÑ"
558 558
559#: html.c:3405 559#: html.c:3781
560msgid "Delete this user" 560msgid "Delete this user"
561msgstr "Удалить пользователÑ" 561msgstr "Удалить пользователÑ"
562 562
563#: html.c:3410 html.c:4927 563#: html.c:3786 html.c:5371
564msgid "Approve" 564msgid "Approve"
565msgstr "Подтвердить" 565msgstr "Подтвердить"
566 566
567#: html.c:3411 567#: html.c:3787
568msgid "Approve this follow request" 568msgid "Approve this follow request"
569msgstr "Подтвердить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку" 569msgstr "Подтвердить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку"
570 570
571#: html.c:3414 html.c:4951 571#: html.c:3790 html.c:5395
572msgid "Discard" 572msgid "Discard"
573msgstr "Отклонить" 573msgstr "Отклонить"
574 574
575#: html.c:3414 575#: html.c:3790
576msgid "Discard this follow request" 576msgid "Discard this follow request"
577msgstr "Отклонить Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку" 577msgstr "Отклонить Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку"
578 578
579#: html.c:3419 html.c:4795 579#: html.c:3795 html.c:5239
580msgid "Unmute" 580msgid "Unmute"
581msgstr "Отменить глушение" 581msgstr "Отменить глушение"
582 582
583#: html.c:3420 583#: html.c:3796
584msgid "Stop blocking activities from this user" 584msgid "Stop blocking activities from this user"
585msgstr "Прекратить глушение дейÑтвий Ñтого пользователÑ" 585msgstr "Прекратить глушение дейÑтвий Ñтого пользователÑ"
586 586
587#: html.c:3424 587#: html.c:3800
588msgid "Block any activity from this user" 588msgid "Block any activity from this user"
589msgstr "Заглушить вÑе дейÑÑ‚Ð²Ð¸Ñ Ñтого пользователÑ" 589msgstr "Заглушить вÑе дейÑÑ‚Ð²Ð¸Ñ Ñтого пользователÑ"
590 590
591#: html.c:3432 591#: html.c:3808
592msgid "Direct Message..." 592msgid "Direct Message..."
593msgstr "Личное Ñообщение..." 593msgstr "Личное Ñообщение..."
594 594
595#: html.c:3467 595#: html.c:3843
596msgid "Pending follow confirmations" 596msgid "Pending follow confirmations"
597msgstr "Ожидающие запроÑÑ‹ на подпиÑку" 597msgstr "Ожидающие запроÑÑ‹ на подпиÑку"
598 598
599#: html.c:3471 599#: html.c:3847
600msgid "People you follow" 600msgid "People you follow"
601msgstr "Ваши подпиÑки" 601msgstr "Ваши подпиÑки"
602 602
603#: html.c:3472 603#: html.c:3848
604msgid "People that follow you" 604msgid "People that follow you"
605msgstr "Ваши подпиÑчики" 605msgstr "Ваши подпиÑчики"
606 606
607#: html.c:3511 607#: html.c:3887
608msgid "Clear all" 608msgid "Clear all"
609msgstr "ОчиÑтить вÑÑ‘" 609msgstr "ОчиÑтить вÑÑ‘"
610 610
611#: html.c:3571 611#: html.c:3951
612msgid "Mention" 612msgid "Mention"
613msgstr "Упоминание" 613msgstr "Упоминание"
614 614
615#: html.c:3574 615#: html.c:3954
616msgid "Finished poll" 616msgid "Finished poll"
617msgstr "Завершённый опроÑ" 617msgstr "Завершённый опроÑ"
618 618
619#: html.c:3590 619#: html.c:3979
620msgid "Follow Request" 620msgid "Follow Request"
621msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку" 621msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку"
622 622
623#: html.c:3674 623#: html.c:4089
624msgid "Context" 624msgid "Context"
625msgstr "КонтекÑÑ‚" 625msgstr "КонтекÑÑ‚"
626 626
627#: html.c:3692 627#: html.c:4107
628msgid "New" 628msgid "New"
629msgstr "Ðовое" 629msgstr "Ðовое"
630 630
631#: html.c:3707 631#: html.c:4122
632msgid "Already seen" 632msgid "Already seen"
633msgstr "Уже проÑмотрено" 633msgstr "Уже проÑмотрено"
634 634
635#: html.c:3722 635#: html.c:4137
636msgid "None" 636msgid "None"
637msgstr "Ðет" 637msgstr "Ðет"
638 638
639#: html.c:3994 639#: html.c:4414
640#, c-format 640#, c-format
641msgid "Search results for account %s" 641msgid "Search results for account %s"
642msgstr "Результаты поиÑка Ð´Ð»Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи %s" 642msgstr "Результаты поиÑка Ð´Ð»Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи %s"
643 643
644#: html.c:4001 644#: html.c:4421
645#, c-format 645#, c-format
646msgid "Account %s not found" 646msgid "Account %s not found"
647msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ %s не найдена" 647msgstr "Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ %s не найдена"
648 648
649#: html.c:4032 649#: html.c:4452
650#, c-format 650#, c-format
651msgid "Search results for tag %s" 651msgid "Search results for tag %s"
652msgstr "Результаты поиÑка тега %s" 652msgstr "Результаты поиÑка тега %s"
653 653
654#: html.c:4032 654#: html.c:4452
655#, c-format 655#, c-format
656msgid "Nothing found for tag %s" 656msgid "Nothing found for tag %s"
657msgstr "Ðичего не найдено по тегу %s" 657msgstr "Ðичего не найдено по тегу %s"
658 658
659#: html.c:4048 659#: html.c:4468
660#, c-format 660#, c-format
661msgid "Search results for '%s' (may be more)" 661msgid "Search results for '%s' (may be more)"
662msgstr "Результаты поиÑка Ð´Ð»Ñ '%s' (возможно, еÑть ещё)" 662msgstr "Результаты поиÑка Ð´Ð»Ñ '%s' (возможно, еÑть ещё)"
663 663
664#: html.c:4051 664#: html.c:4471
665#, c-format 665#, c-format
666msgid "Search results for '%s'" 666msgid "Search results for '%s'"
667msgstr "Результаты поиÑка Ð´Ð»Ñ '%s'" 667msgstr "Результаты поиÑка Ð´Ð»Ñ '%s'"
668 668
669#: html.c:4054 669#: html.c:4474
670#, c-format 670#, c-format
671msgid "No more matches for '%s'" 671msgid "No more matches for '%s'"
672msgstr "Больше нет Ñовпадений Ð´Ð»Ñ '%s'" 672msgstr "Больше нет Ñовпадений Ð´Ð»Ñ '%s'"
673 673
674#: html.c:4056 674#: html.c:4476
675#, c-format 675#, c-format
676msgid "Nothing found for '%s'" 676msgid "Nothing found for '%s'"
677msgstr "Ðичего не найдено Ð´Ð»Ñ '%s'" 677msgstr "Ðичего не найдено Ð´Ð»Ñ '%s'"
678 678
679#: html.c:4154 679#: html.c:4574
680msgid "Showing instance timeline" 680msgid "Showing instance timeline"
681msgstr "Показываем ленту Ñервера" 681msgstr "Показываем ленту Ñервера"
682 682
683#: html.c:4237 683#: html.c:4657
684#, c-format 684#, c-format
685msgid "Showing timeline for list '%s'" 685msgid "Showing timeline for list '%s'"
686msgstr "Показываем ленту Ð´Ð»Ñ ÑпиÑка '%s'" 686msgstr "Показываем ленту Ð´Ð»Ñ ÑпиÑка '%s'"
687 687
688#: httpd.c:258 688#: httpd.c:259
689#, c-format 689#, c-format
690msgid "Search results for tag #%s" 690msgid "Search results for tag #%s"
691msgstr "Результаты поиÑка Ð´Ð»Ñ Ñ‚ÐµÐ³Ð° #%s" 691msgstr "Результаты поиÑка Ð´Ð»Ñ Ñ‚ÐµÐ³Ð° #%s"
692 692
693#: httpd.c:267 693#: httpd.c:268
694msgid "Recent posts by users in this instance" 694msgid "Recent posts by users in this instance"
695msgstr "ПоÑледние ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° Ñтом Ñервере" 695msgstr "ПоÑледние ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° Ñтом Ñервере"
696 696
697#: html.c:1764 697#: html.c:1842
698msgid "Blocked hashtags..." 698msgid "Blocked hashtags..."
699msgstr "Заблокированные теги..." 699msgstr "Заблокированные теги..."
700 700
701#: html.c:518 701#: html.c:574
702msgid "Optional URL to reply to" 702msgid "Optional URL to reply to"
703msgstr "ÐеобÑзательный URL Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°" 703msgstr "ÐеобÑзательный URL Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°"
704 704
705#: html.c:695 705#: html.c:751
706msgid "" 706msgid ""
707"Option 1...\n" 707"Option 1...\n"
708"Option 2...\n" 708"Option 2...\n"
@@ -714,94 +714,106 @@ msgstr ""
714"Вариант 3...\n" 714"Вариант 3...\n"
715"..." 715"..."
716 716
717#: html.c:1558 717#: html.c:1636
718msgid "Bot API key" 718msgid "Bot API key"
719msgstr "Ключ API Ð´Ð»Ñ Ð±Ð¾Ñ‚Ð°" 719msgstr "Ключ API Ð´Ð»Ñ Ð±Ð¾Ñ‚Ð°"
720 720
721#: html.c:1564 721#: html.c:1642
722msgid "Chat id" 722msgid "Chat id"
723msgstr "Id чата" 723msgstr "Id чата"
724 724
725#: html.c:1572 725#: html.c:1650
726msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 726msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
727msgstr "полный URL Ñервера ntfy (например https://ntfy.sh/YourTopic)" 727msgstr "полный URL Ñервера ntfy (например https://ntfy.sh/YourTopic)"
728 728
729#: html.c:1578 729#: html.c:1656
730msgid "ntfy token - if needed" 730msgid "ntfy token - if needed"
731msgstr "токен ntfy - еÑли нужен" 731msgstr "токен ntfy - еÑли нужен"
732 732
733#: html.c:3078 733#: html.c:3366
734msgid "pinned" 734msgid "pinned"
735msgstr "закреплено" 735msgstr "закреплено"
736 736
737#: html.c:3090 737#: html.c:3378
738msgid "bookmarks" 738msgid "bookmarks"
739msgstr "закладки" 739msgstr "закладки"
740 740
741#: html.c:3102 741#: html.c:3390
742msgid "drafts" 742msgid "drafts"
743msgstr "черновики" 743msgstr "черновики"
744 744
745#: html.c:584 745#: html.c:640
746msgid "Scheduled post..." 746msgid "Scheduled post..."
747msgstr "Запланировать..." 747msgstr "Запланировать..."
748 748
749msgid "Post date and time:" 749msgid "Post date and time:"
750msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñта:" 750msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñта:"
751 751
752#: html.c:3113 html.c:4214 752#: html.c:3401 html.c:4634
753msgid "Scheduled posts" 753msgid "Scheduled posts"
754msgstr "Запланированные поÑты" 754msgstr "Запланированные поÑты"
755 755
756#: html.c:3114 756#: html.c:3402
757msgid "scheduled posts" 757msgid "scheduled posts"
758msgstr "запланированные поÑты" 758msgstr "запланированные поÑты"
759 759
760#: html.c:578 760#: html.c:634
761#, c-format 761#, c-format
762msgid "Post date and time (timezone: %s):" 762msgid "Post date and time (timezone: %s):"
763msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñта (ЧаÑовой поÑÑ: %s):" 763msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñта (ЧаÑовой поÑÑ: %s):"
764 764
765#: html.c:1689 765#: html.c:1767
766msgid "Time zone:" 766msgid "Time zone:"
767msgstr "ЧаÑовой поÑÑ:" 767msgstr "ЧаÑовой поÑÑ:"
768 768
769#: html.c:559 769#: html.c:615
770msgid "Language:" 770msgid "Language:"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1580 773#: html.c:1658
774msgid "Notify webhook:" 774msgid "Notify webhook:"
775msgstr "" 775msgstr ""
776 776
777#: html.c:1586 777#: html.c:1664
778msgid "http://example.com/webhook" 778msgid "http://example.com/webhook"
779msgstr "" 779msgstr ""
780 780
781#: html.c:1694 781#: html.c:1772
782msgid "Languages you usually post in:" 782msgid "Languages you usually post in:"
783msgstr "" 783msgstr ""
784 784
785#: html.c:1700 785#: html.c:1778
786msgid "en fr es de_AT" 786msgid "en fr es de_AT"
787msgstr "" 787msgstr ""
788 788
789#: html.c:460 789#: html.c:428
790msgid "Visibility: " 790msgid "Visibility: "
791msgstr "" 791msgstr ""
792 792
793#: html.c:468
794msgid "Public" 793msgid "Public"
795msgstr "" 794msgstr ""
796 795
797#: html.c:477
798msgid "Unlisted" 796msgid "Unlisted"
799msgstr "" 797msgstr ""
800 798
801#: html.c:486
802msgid "Followers-only" 799msgid "Followers-only"
803msgstr "" 800msgstr ""
804 801
805#: html.c:495
806msgid "Direct Message" 802msgid "Direct Message"
807msgstr "" 803msgstr ""
804
805#: html.c:488 html.c:2534 html.c:2559 html.c:5177
806msgid "EmojiUnreact"
807msgstr ""
808
809#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
810msgid "EmojiReact"
811msgstr ""
812
813#: html.c:2115
814msgid "Emoji react..."
815msgstr ""
816
817#: html.c:2609
818msgid "Emoji reactions: "
819msgstr ""
diff --git a/po/uk.po b/po/uk.po
index cf8c204..d342978 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -15,119 +15,119 @@ msgstr ""
15"Content-Transfer-Encoding: 8bit\n" 15"Content-Transfer-Encoding: 8bit\n"
16"X-Generator: Poedit 3.0\n" 16"X-Generator: Poedit 3.0\n"
17 17
18#: html.c:440 18#: html.c:534
19msgid "Sensitive content: " 19msgid "Sensitive content: "
20msgstr "Делікатний вміÑÑ‚: " 20msgstr "Делікатний вміÑÑ‚: "
21 21
22#: html.c:448 22#: html.c:542
23msgid "Sensitive content description" 23msgid "Sensitive content description"
24msgstr "ÐžÐ¿Ð¸Ñ Ð´ÐµÐ»Ñ–ÐºÐ°Ñ‚Ð½Ð¾Ð³Ð¾ вміÑту" 24msgstr "ÐžÐ¿Ð¸Ñ Ð´ÐµÐ»Ñ–ÐºÐ°Ñ‚Ð½Ð¾Ð³Ð¾ вміÑту"
25 25
26msgid "Only for mentioned people: " 26msgid "Only for mentioned people: "
27msgstr "Тільки Ð´Ð»Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ… оÑіб: " 27msgstr "Тільки Ð´Ð»Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ… оÑіб: "
28 28
29#: html.c:514 29#: html.c:570
30msgid "Reply to (URL): " 30msgid "Reply to (URL): "
31msgstr "ВідповіÑти до (URL): " 31msgstr "ВідповіÑти до (URL): "
32 32
33#: html.c:523 33#: html.c:579
34msgid "Don't send, but store as a draft" 34msgid "Don't send, but store as a draft"
35msgstr "Ðе надÑилати, але зберігти Ñк чернетку" 35msgstr "Ðе надÑилати, але зберігти Ñк чернетку"
36 36
37#: html.c:524 37#: html.c:580
38msgid "Draft:" 38msgid "Draft:"
39msgstr "Чернетка:" 39msgstr "Чернетка:"
40 40
41#: html.c:614 41#: html.c:670
42msgid "Attachments..." 42msgid "Attachments..."
43msgstr "ВкладеннÑ..." 43msgstr "ВкладеннÑ..."
44 44
45#: html.c:637 45#: html.c:693
46msgid "File:" 46msgid "File:"
47msgstr "Файл:" 47msgstr "Файл:"
48 48
49#: html.c:641 49#: html.c:697
50msgid "Clear this field to delete the attachment" 50msgid "Clear this field to delete the attachment"
51msgstr "ОчиÑтіть це поле, щоб видалити вкладеннÑ" 51msgstr "ОчиÑтіть це поле, щоб видалити вкладеннÑ"
52 52
53#: html.c:650 html.c:675 53#: html.c:706 html.c:731
54msgid "Attachment description" 54msgid "Attachment description"
55msgstr "ÐžÐ¿Ð¸Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ" 55msgstr "ÐžÐ¿Ð¸Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ"
56 56
57#: html.c:686 57#: html.c:742
58msgid "Poll..." 58msgid "Poll..."
59msgstr "ОпитуваннÑ..." 59msgstr "ОпитуваннÑ..."
60 60
61#: html.c:688 61#: html.c:744
62msgid "Poll options (one per line, up to 8):" 62msgid "Poll options (one per line, up to 8):"
63msgstr "Варіанти відповідей (по одному в Ñ€Ñдку, до 8):" 63msgstr "Варіанти відповідей (по одному в Ñ€Ñдку, до 8):"
64 64
65#: html.c:700 65#: html.c:756
66msgid "One choice" 66msgid "One choice"
67msgstr "Єдиний вибір" 67msgstr "Єдиний вибір"
68 68
69#: html.c:703 69#: html.c:759
70msgid "Multiple choices" 70msgid "Multiple choices"
71msgstr "Декілька варіантів вибору" 71msgstr "Декілька варіантів вибору"
72 72
73#: html.c:709 73#: html.c:765
74msgid "End in 5 minutes" 74msgid "End in 5 minutes"
75msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 5 хвилин" 75msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 5 хвилин"
76 76
77#: html.c:713 77#: html.c:769
78msgid "End in 1 hour" 78msgid "End in 1 hour"
79msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 1 годину" 79msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 1 годину"
80 80
81#: html.c:716 81#: html.c:772
82msgid "End in 1 day" 82msgid "End in 1 day"
83msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 1 день" 83msgstr "Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· 1 день"
84 84
85#: html.c:724 85#: html.c:780
86msgid "Post" 86msgid "Post"
87msgstr "ÐадіÑлати" 87msgstr "ÐадіÑлати"
88 88
89#: html.c:826 html.c:833 89#: html.c:882 html.c:889
90msgid "Site description" 90msgid "Site description"
91msgstr "ÐžÐ¿Ð¸Ñ Ñайту" 91msgstr "ÐžÐ¿Ð¸Ñ Ñайту"
92 92
93#: html.c:844 93#: html.c:900
94msgid "Admin email" 94msgid "Admin email"
95msgstr "Пошта админа" 95msgstr "Пошта админа"
96 96
97#: html.c:857 97#: html.c:913
98msgid "Admin account" 98msgid "Admin account"
99msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð°Ð´Ð¼Ñ–Ð½Ð°" 99msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð°Ð´Ð¼Ñ–Ð½Ð°"
100 100
101#: html.c:922 html.c:1278 101#: html.c:978 html.c:1334
102#, c-format 102#, c-format
103msgid "%d following, %d followers" 103msgid "%d following, %d followers"
104msgstr "%d підпиÑок, %d підпиÑників" 104msgstr "%d підпиÑок, %d підпиÑників"
105 105
106#: html.c:1019 106#: html.c:1075
107msgid "RSS" 107msgid "RSS"
108msgstr "RSS" 108msgstr "RSS"
109 109
110#: html.c:1024 html.c:1063 110#: html.c:1080 html.c:1119
111msgid "private" 111msgid "private"
112msgstr "оÑобиÑте" 112msgstr "оÑобиÑте"
113 113
114#: html.c:1059 114#: html.c:1115
115msgid "public" 115msgid "public"
116msgstr "публічне" 116msgstr "публічне"
117 117
118#: html.c:1067 118#: html.c:1123
119msgid "notifications" 119msgid "notifications"
120msgstr "повідомленнÑ" 120msgstr "повідомленнÑ"
121 121
122#: html.c:1072 122#: html.c:1128
123msgid "people" 123msgid "people"
124msgstr "люди" 124msgstr "люди"
125 125
126#: html.c:1077 126#: html.c:1133
127msgid "instance" 127msgid "instance"
128msgstr "Ñервер" 128msgstr "Ñервер"
129 129
130#: html.c:1086 130#: html.c:1142
131msgid "" 131msgid ""
132"Search posts by URL or content (regular expression), @user@host accounts, or " 132"Search posts by URL or content (regular expression), @user@host accounts, or "
133"#tag" 133"#tag"
@@ -135,574 +135,574 @@ msgstr ""
135"Шукати допиÑи за URL або вміÑтом (регулÑрний вираз), акаунтами @user@host " 135"Шукати допиÑи за URL або вміÑтом (регулÑрний вираз), акаунтами @user@host "
136"або #тегом" 136"або #тегом"
137 137
138#: html.c:1087 138#: html.c:1143
139msgid "Content search" 139msgid "Content search"
140msgstr "Пошук за вміÑтом" 140msgstr "Пошук за вміÑтом"
141 141
142#: html.c:1213 142#: html.c:1269
143msgid "verified link" 143msgid "verified link"
144msgstr "перевірене поÑиланнÑ" 144msgstr "перевірене поÑиланнÑ"
145 145
146#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 146#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
147msgid "Location: " 147msgid "Location: "
148msgstr "МіÑце знаходженнÑ: " 148msgstr "МіÑце знаходженнÑ: "
149 149
150#: html.c:1302 150#: html.c:1358
151msgid "New Post..." 151msgid "New Post..."
152msgstr "Ðовий допиÑ..." 152msgstr "Ðовий допиÑ..."
153 153
154#: html.c:1304 154#: html.c:1360
155msgid "What's on your mind?" 155msgid "What's on your mind?"
156msgstr "Що у Ð²Ð°Ñ Ð½Ð° думці?" 156msgstr "Що у Ð²Ð°Ñ Ð½Ð° думці?"
157 157
158#: html.c:1313 158#: html.c:1369
159msgid "Operations..." 159msgid "Operations..."
160msgstr "Дії..." 160msgstr "Дії..."
161 161
162#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 162#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
163msgid "Follow" 163msgid "Follow"
164msgstr "ПідпиÑатиÑÑ" 164msgstr "ПідпиÑатиÑÑ"
165 165
166#: html.c:1330 166#: html.c:1386
167msgid "(by URL or user@host)" 167msgid "(by URL or user@host)"
168msgstr "(за URL або user@host)" 168msgstr "(за URL або user@host)"
169 169
170#: html.c:1345 html.c:1925 html.c:4766 170#: html.c:1401 html.c:2003 html.c:5210
171msgid "Boost" 171msgid "Boost"
172msgstr "ПроÑувати" 172msgstr "ПроÑувати"
173 173
174#: html.c:1347 html.c:1364 174#: html.c:1403 html.c:1420 html.c:1442
175msgid "(by URL)" 175msgid "(by URL)"
176msgstr "(за URL)" 176msgstr "(за URL)"
177 177
178#: html.c:1362 html.c:1904 html.c:4757 178#: html.c:1418 html.c:1982 html.c:5201
179msgid "Like" 179msgid "Like"
180msgstr "Вподобайка" 180msgstr "Вподобайка"
181 181
182#: html.c:1490 182#: html.c:1568
183msgid "User Settings..." 183msgid "User Settings..."
184msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача..." 184msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача..."
185 185
186#: html.c:1499 186#: html.c:1577
187msgid "Display name:" 187msgid "Display name:"
188msgstr "Видиме ім'Ñ:" 188msgstr "Видиме ім'Ñ:"
189 189
190#: html.c:1505 190#: html.c:1583
191msgid "Your name" 191msgid "Your name"
192msgstr "Ваше ім'Ñ" 192msgstr "Ваше ім'Ñ"
193 193
194#: html.c:1507 194#: html.c:1585
195msgid "Avatar: " 195msgid "Avatar: "
196msgstr "Ðватар: " 196msgstr "Ðватар: "
197 197
198#: html.c:1515 198#: html.c:1593
199msgid "Delete current avatar" 199msgid "Delete current avatar"
200msgstr "Видалити поточний аватар" 200msgstr "Видалити поточний аватар"
201 201
202#: html.c:1517 202#: html.c:1595
203msgid "Header image (banner): " 203msgid "Header image (banner): "
204msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° (банер): " 204msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° (банер): "
205 205
206#: html.c:1525 206#: html.c:1603
207msgid "Delete current header image" 207msgid "Delete current header image"
208msgstr "Видалити поточне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°" 208msgstr "Видалити поточне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°"
209 209
210#: html.c:1527 210#: html.c:1605
211msgid "Bio:" 211msgid "Bio:"
212msgstr "Про Ñебе:" 212msgstr "Про Ñебе:"
213 213
214#: html.c:1533 214#: html.c:1611
215msgid "Write about yourself here..." 215msgid "Write about yourself here..."
216msgstr "Ðапишіть про Ñебе тут..." 216msgstr "Ðапишіть про Ñебе тут..."
217 217
218#: html.c:1542 218#: html.c:1620
219msgid "Always show sensitive content" 219msgid "Always show sensitive content"
220msgstr "Завжди показувати делікатний вміÑÑ‚" 220msgstr "Завжди показувати делікатний вміÑÑ‚"
221 221
222#: html.c:1544 222#: html.c:1622
223msgid "Email address for notifications:" 223msgid "Email address for notifications:"
224msgstr "Поштова адреÑа Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ:" 224msgstr "Поштова адреÑа Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ:"
225 225
226#: html.c:1552 226#: html.c:1630
227msgid "Telegram notifications (bot key and chat id):" 227msgid "Telegram notifications (bot key and chat id):"
228msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² Telegram (ключ бота та id чату):" 228msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² Telegram (ключ бота та id чату):"
229 229
230#: html.c:1566 230#: html.c:1644
231msgid "ntfy notifications (ntfy server and token):" 231msgid "ntfy notifications (ntfy server and token):"
232msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² ntfy (Ñервер та токен ntfy):" 232msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² ntfy (Ñервер та токен ntfy):"
233 233
234#: html.c:1588 234#: html.c:1666
235msgid "Maximum days to keep posts (0: server settings):" 235msgid "Maximum days to keep posts (0: server settings):"
236msgstr "МакÑимальний Ñ‡Ð°Ñ Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð´Ð¾Ð¿Ð¸Ñів (0: Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñервера):" 236msgstr "МакÑимальний Ñ‡Ð°Ñ Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð´Ð¾Ð¿Ð¸Ñів (0: Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñервера):"
237 237
238#: html.c:1602 238#: html.c:1680
239msgid "Drop direct messages from people you don't follow" 239msgid "Drop direct messages from people you don't follow"
240msgstr "ВідхилÑти оÑобиÑті Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ незнайомців" 240msgstr "ВідхилÑти оÑобиÑті Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ незнайомців"
241 241
242#: html.c:1611 242#: html.c:1689
243msgid "This account is a bot" 243msgid "This account is a bot"
244msgstr "Цей акаунт є ботом" 244msgstr "Цей акаунт є ботом"
245 245
246#: html.c:1620 246#: html.c:1698
247msgid "Auto-boost all mentions to this account" 247msgid "Auto-boost all mentions to this account"
248msgstr "Ðвтоматично проÑувати вÑÑ– згадки цього акаунта" 248msgstr "Ðвтоматично проÑувати вÑÑ– згадки цього акаунта"
249 249
250#: html.c:1629 250#: html.c:1707
251msgid "This account is private (posts are not shown through the web)" 251msgid "This account is private (posts are not shown through the web)"
252msgstr "Це закритий акаунт (допиÑи не показуютьÑÑ Ð² мережі)" 252msgstr "Це закритий акаунт (допиÑи не показуютьÑÑ Ð² мережі)"
253 253
254#: html.c:1639 254#: html.c:1717
255msgid "Collapse top threads by default" 255msgid "Collapse top threads by default"
256msgstr "Згорнути потоки за замовчуваннÑм" 256msgstr "Згорнути потоки за замовчуваннÑм"
257 257
258#: html.c:1648 258#: html.c:1726
259msgid "Follow requests must be approved" 259msgid "Follow requests must be approved"
260msgstr "Запити на підпиÑку мають бути Ñхвалені" 260msgstr "Запити на підпиÑку мають бути Ñхвалені"
261 261
262#: html.c:1657 262#: html.c:1735
263msgid "Publish follower and following metrics" 263msgid "Publish follower and following metrics"
264msgstr "Публікувати метрики підпиÑок та підпиÑників" 264msgstr "Публікувати метрики підпиÑок та підпиÑників"
265 265
266#: html.c:1659 266#: html.c:1737
267msgid "Current location:" 267msgid "Current location:"
268msgstr "Поточне міÑцезнаходженнÑ:" 268msgstr "Поточне міÑцезнаходженнÑ:"
269 269
270#: html.c:1673 270#: html.c:1751
271msgid "Profile metadata (key=value pairs in each line):" 271msgid "Profile metadata (key=value pairs in each line):"
272msgstr "Метадані профілю (пари ключ=Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² кожному Ñ€Ñдку):" 272msgstr "Метадані профілю (пари ключ=Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² кожному Ñ€Ñдку):"
273 273
274#: html.c:1684 274#: html.c:1762
275msgid "Web interface language:" 275msgid "Web interface language:"
276msgstr "Мова інтерфейÑу:" 276msgstr "Мова інтерфейÑу:"
277 277
278#: html.c:1703 278#: html.c:1781
279msgid "New password:" 279msgid "New password:"
280msgstr "Ðовий пароль:" 280msgstr "Ðовий пароль:"
281 281
282#: html.c:1710 282#: html.c:1788
283msgid "Repeat new password:" 283msgid "Repeat new password:"
284msgstr "Повторити новий пароль:" 284msgstr "Повторити новий пароль:"
285 285
286#: html.c:1720 286#: html.c:1798
287msgid "Update user info" 287msgid "Update user info"
288msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… кориÑтувача" 288msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… кориÑтувача"
289 289
290#: html.c:1731 290#: html.c:1809
291msgid "Followed hashtags..." 291msgid "Followed hashtags..."
292msgstr "ПідпиÑані хештеги..." 292msgstr "ПідпиÑані хештеги..."
293 293
294#: html.c:1733 html.c:1766 294#: html.c:1811 html.c:1844
295msgid "One hashtag per line" 295msgid "One hashtag per line"
296msgstr "Один хештег на Ñ€Ñдок" 296msgstr "Один хештег на Ñ€Ñдок"
297 297
298#: html.c:1755 html.c:1787 298#: html.c:1833 html.c:1865
299msgid "Update hashtags" 299msgid "Update hashtags"
300msgstr "Оновити хештеги" 300msgstr "Оновити хештеги"
301 301
302#: html.c:1904 302#: html.c:1982
303msgid "Say you like this post" 303msgid "Say you like this post"
304msgstr "Позначте Ð´Ð¾Ð¿Ð¸Ñ Ñк вподобаний" 304msgstr "Позначте Ð´Ð¾Ð¿Ð¸Ñ Ñк вподобаний"
305 305
306#: html.c:1909 html.c:4775 306#: html.c:1987 html.c:5219
307msgid "Unlike" 307msgid "Unlike"
308msgstr "Більше не подобаєтьÑÑ" 308msgstr "Більше не подобаєтьÑÑ"
309 309
310#: html.c:1909 310#: html.c:1987
311msgid "Nah don't like it that much" 311msgid "Nah don't like it that much"
312msgstr "Мені це не дуже подобаєтьÑÑ" 312msgstr "Мені це не дуже подобаєтьÑÑ"
313 313
314#: html.c:1915 html.c:4912 314#: html.c:1993 html.c:5356
315msgid "Unpin" 315msgid "Unpin"
316msgstr "Відкріпити" 316msgstr "Відкріпити"
317 317
318#: html.c:1915 318#: html.c:1993
319msgid "Unpin this post from your timeline" 319msgid "Unpin this post from your timeline"
320msgstr "Відкріпити цей Ð´Ð¾Ð¿Ð¸Ñ Ð·Ñ– влаÑної Ñтрічки" 320msgstr "Відкріпити цей Ð´Ð¾Ð¿Ð¸Ñ Ð·Ñ– влаÑної Ñтрічки"
321 321
322#: html.c:1918 html.c:4907 322#: html.c:1996 html.c:5351
323msgid "Pin" 323msgid "Pin"
324msgstr "Закріпити" 324msgstr "Закріпити"
325 325
326#: html.c:1918 326#: html.c:1996
327msgid "Pin this post to the top of your timeline" 327msgid "Pin this post to the top of your timeline"
328msgstr "Закріпити цей Ð´Ð¾Ð¿Ð¸Ñ Ð´Ð¾ влаÑної Ñтрічки" 328msgstr "Закріпити цей Ð´Ð¾Ð¿Ð¸Ñ Ð´Ð¾ влаÑної Ñтрічки"
329 329
330#: html.c:1925 330#: html.c:2003
331msgid "Announce this post to your followers" 331msgid "Announce this post to your followers"
332msgstr "ПоділитиÑÑ Ñ†Ð¸Ð¼ допиÑом зі Ñвоїми підпиÑниками" 332msgstr "ПоділитиÑÑ Ñ†Ð¸Ð¼ допиÑом зі Ñвоїми підпиÑниками"
333 333
334#: html.c:1930 html.c:4783 334#: html.c:2008 html.c:5227
335msgid "Unboost" 335msgid "Unboost"
336msgstr "СкаÑувати проÑуваннÑ" 336msgstr "СкаÑувати проÑуваннÑ"
337 337
338#: html.c:1930 338#: html.c:2008
339msgid "I regret I boosted this" 339msgid "I regret I boosted this"
340msgstr "Я шкодую, що проÑував це" 340msgstr "Я шкодую, що проÑував це"
341 341
342#: html.c:1936 html.c:4922 342#: html.c:2014 html.c:5366
343msgid "Unbookmark" 343msgid "Unbookmark"
344msgstr "Видалити з закладок" 344msgstr "Видалити з закладок"
345 345
346#: html.c:1936 346#: html.c:2014
347msgid "Delete this post from your bookmarks" 347msgid "Delete this post from your bookmarks"
348msgstr "Видалити цей Ð´Ð¾Ð¿Ð¸Ñ Ð· закладок" 348msgstr "Видалити цей Ð´Ð¾Ð¿Ð¸Ñ Ð· закладок"
349 349
350#: html.c:1939 html.c:4917 350#: html.c:2017 html.c:5361
351msgid "Bookmark" 351msgid "Bookmark"
352msgstr "Додати в закладки" 352msgstr "Додати в закладки"
353 353
354#: html.c:1939 354#: html.c:2017
355msgid "Add this post to your bookmarks" 355msgid "Add this post to your bookmarks"
356msgstr "Додайте цей Ð´Ð¾Ð¿Ð¸Ñ Ð² закладки" 356msgstr "Додайте цей Ð´Ð¾Ð¿Ð¸Ñ Ð² закладки"
357 357
358#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 358#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
359msgid "Unfollow" 359msgid "Unfollow"
360msgstr "ВідпиÑатиÑÑ" 360msgstr "ВідпиÑатиÑÑ"
361 361
362#: html.c:1945 html.c:3387 362#: html.c:2023 html.c:3763 html.c:4042
363msgid "Stop following this user's activity" 363msgid "Stop following this user's activity"
364msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ цього кориÑтувача" 364msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ цього кориÑтувача"
365 365
366#: html.c:1949 html.c:3401 366#: html.c:2027 html.c:3777 html.c:4044
367msgid "Start following this user's activity" 367msgid "Start following this user's activity"
368msgstr "ПідпиÑатиÑÑ Ð´Ð¾ цього кориÑтувача" 368msgstr "ПідпиÑатиÑÑ Ð´Ð¾ цього кориÑтувача"
369 369
370#: html.c:1955 html.c:4860 370#: html.c:2033 html.c:5304
371msgid "Unfollow Group" 371msgid "Unfollow Group"
372msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ групи" 372msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ групи"
373 373
374#: html.c:1956 374#: html.c:2034
375msgid "Stop following this group or channel" 375msgid "Stop following this group or channel"
376msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ групи чи канала" 376msgstr "ВідпиÑатиÑÑ Ð²Ñ–Ð´ групи чи канала"
377 377
378#: html.c:1960 html.c:4847 378#: html.c:2038 html.c:5291
379msgid "Follow Group" 379msgid "Follow Group"
380msgstr "ПідпиÑатиÑÑ Ð½Ð° групу" 380msgstr "ПідпиÑатиÑÑ Ð½Ð° групу"
381 381
382#: html.c:1961 382#: html.c:2039
383msgid "Start following this group or channel" 383msgid "Start following this group or channel"
384msgstr "ПідпиÑатиÑÑ Ð½Ð° групу чи канал" 384msgstr "ПідпиÑатиÑÑ Ð½Ð° групу чи канал"
385 385
386#: html.c:1966 html.c:3423 html.c:4791 386#: html.c:2044 html.c:3799 html.c:5235
387msgid "MUTE" 387msgid "MUTE"
388msgstr "Заглушити" 388msgstr "Заглушити"
389 389
390#: html.c:1967 390#: html.c:2045
391msgid "Block any activity from this user forever" 391msgid "Block any activity from this user forever"
392msgstr "Ðазавжди заблокувати активніÑть цього кориÑтувача" 392msgstr "Ðазавжди заблокувати активніÑть цього кориÑтувача"
393 393
394#: html.c:1972 html.c:3405 html.c:4877 394#: html.c:2050 html.c:3781 html.c:5321
395msgid "Delete" 395msgid "Delete"
396msgstr "Видалити" 396msgstr "Видалити"
397 397
398#: html.c:1972 398#: html.c:2050
399msgid "Delete this post" 399msgid "Delete this post"
400msgstr "Видалити цей допиÑ" 400msgstr "Видалити цей допиÑ"
401 401
402#: html.c:1975 html.c:4799 402#: html.c:2053 html.c:5243
403msgid "Hide" 403msgid "Hide"
404msgstr "Приховати" 404msgstr "Приховати"
405 405
406#: html.c:1975 406#: html.c:2053
407msgid "Hide this post and its children" 407msgid "Hide this post and its children"
408msgstr "Приховати цей Ð´Ð¾Ð¿Ð¸Ñ Ñ€Ð°Ð·Ð¾Ð¼ з обговореннÑм" 408msgstr "Приховати цей Ð´Ð¾Ð¿Ð¸Ñ Ñ€Ð°Ð·Ð¾Ð¼ з обговореннÑм"
409 409
410#: html.c:2017 410#: html.c:2095
411msgid "Edit..." 411msgid "Edit..."
412msgstr "Редагувати..." 412msgstr "Редагувати..."
413 413
414#: html.c:2039 414#: html.c:2133
415msgid "Reply..." 415msgid "Reply..."
416msgstr "ВідповіÑти..." 416msgstr "ВідповіÑти..."
417 417
418#: html.c:2090 418#: html.c:2184
419msgid "Truncated (too deep)" 419msgid "Truncated (too deep)"
420msgstr "Обрізано (занадто багато)" 420msgstr "Обрізано (занадто багато)"
421 421
422#: html.c:2108 422#: html.c:2202
423msgid "follows you" 423msgid "follows you"
424msgstr "підпиÑан на ваÑ" 424msgstr "підпиÑан на ваÑ"
425 425
426#: html.c:2182 426#: html.c:2276
427msgid "Pinned" 427msgid "Pinned"
428msgstr "Закріплено" 428msgstr "Закріплено"
429 429
430#: html.c:2190 430#: html.c:2284
431msgid "Bookmarked" 431msgid "Bookmarked"
432msgstr "Додано до закладок" 432msgstr "Додано до закладок"
433 433
434#: html.c:2198 434#: html.c:2292
435msgid "Poll" 435msgid "Poll"
436msgstr "ОпитуваннÑ" 436msgstr "ОпитуваннÑ"
437 437
438#: html.c:2205 438#: html.c:2299
439msgid "Voted" 439msgid "Voted"
440msgstr "ПроголоÑовано" 440msgstr "ПроголоÑовано"
441 441
442#: html.c:2214 442#: html.c:2308
443msgid "Event" 443msgid "Event"
444msgstr "ПодіÑ" 444msgstr "ПодіÑ"
445 445
446#: html.c:2246 html.c:2275 446#: html.c:2340 html.c:2369
447msgid "boosted" 447msgid "boosted"
448msgstr "проÑунуто" 448msgstr "проÑунуто"
449 449
450#: html.c:2289 450#: html.c:2383
451msgid "in reply to" 451msgid "in reply to"
452msgstr "у відповідь на" 452msgstr "у відповідь на"
453 453
454#: html.c:2345 454#: html.c:2439
455msgid " [SENSITIVE CONTENT]" 455msgid " [SENSITIVE CONTENT]"
456msgstr " [ДЕЛІКÐТÐИЙ ВМІСТ]" 456msgstr " [ДЕЛІКÐТÐИЙ ВМІСТ]"
457 457
458#: html.c:2512 458#: html.c:2796
459msgid "Vote" 459msgid "Vote"
460msgstr "ГолоÑ" 460msgstr "ГолоÑ"
461 461
462#: html.c:2522 462#: html.c:2806
463msgid "Closed" 463msgid "Closed"
464msgstr "Завершено" 464msgstr "Завершено"
465 465
466#: html.c:2547 466#: html.c:2831
467msgid "Closes in" 467msgid "Closes in"
468msgstr "ЗавершуєтьÑÑ Ñ‡ÐµÑ€ÐµÐ·" 468msgstr "ЗавершуєтьÑÑ Ñ‡ÐµÑ€ÐµÐ·"
469 469
470#: html.c:2627 470#: html.c:2911
471msgid "Video" 471msgid "Video"
472msgstr "Відео" 472msgstr "Відео"
473 473
474#: html.c:2642 474#: html.c:2926
475msgid "Audio" 475msgid "Audio"
476msgstr "Ðудіо" 476msgstr "Ðудіо"
477 477
478#: html.c:2670 478#: html.c:2954
479msgid "Attachment" 479msgid "Attachment"
480msgstr "ВкладеннÑ" 480msgstr "ВкладеннÑ"
481 481
482#: html.c:2684 482#: html.c:2968
483msgid "Alt..." 483msgid "Alt..."
484msgstr "ОпиÑ..." 484msgstr "ОпиÑ..."
485 485
486#: html.c:2697 486#: html.c:2981
487msgid "Source channel or community" 487msgid "Source channel or community"
488msgstr "Вихідний канал або Ñпільнота" 488msgstr "Вихідний канал або Ñпільнота"
489 489
490#: html.c:2791 490#: html.c:3075
491msgid "Time: " 491msgid "Time: "
492msgstr "ЧаÑ: " 492msgstr "ЧаÑ: "
493 493
494#: html.c:2872 494#: html.c:3156
495msgid "Older..." 495msgid "Older..."
496msgstr "Раніше..." 496msgstr "Раніше..."
497 497
498#: html.c:2974 498#: html.c:3258
499msgid "about this site" 499msgid "about this site"
500msgstr "про цей Ñайт" 500msgstr "про цей Ñайт"
501 501
502#: html.c:2976 502#: html.c:3260
503msgid "powered by " 503msgid "powered by "
504msgstr "на базі " 504msgstr "на базі "
505 505
506#: html.c:3041 506#: html.c:3329
507msgid "Dismiss" 507msgid "Dismiss"
508msgstr "Відхилити" 508msgstr "Відхилити"
509 509
510#: html.c:3058 510#: html.c:3346
511#, c-format 511#, c-format
512msgid "Timeline for list '%s'" 512msgid "Timeline for list '%s'"
513msgstr "Стрічки Ð´Ð»Ñ ÑпиÑку '%s'" 513msgstr "Стрічки Ð´Ð»Ñ ÑпиÑку '%s'"
514 514
515#: html.c:3077 html.c:4169 515#: html.c:3365 html.c:4589
516msgid "Pinned posts" 516msgid "Pinned posts"
517msgstr "Закріплені допиÑи" 517msgstr "Закріплені допиÑи"
518 518
519#: html.c:3089 html.c:4184 519#: html.c:3377 html.c:4604
520msgid "Bookmarked posts" 520msgid "Bookmarked posts"
521msgstr "ДопиÑи у закладках" 521msgstr "ДопиÑи у закладках"
522 522
523#: html.c:3101 html.c:4199 523#: html.c:3389 html.c:4619
524msgid "Post drafts" 524msgid "Post drafts"
525msgstr "Чернетки допиÑів" 525msgstr "Чернетки допиÑів"
526 526
527#: html.c:3177 527#: html.c:3465
528msgid "No more unseen posts" 528msgid "No more unseen posts"
529msgstr "УÑе переглÑнуто" 529msgstr "УÑе переглÑнуто"
530 530
531#: html.c:3181 html.c:3290 531#: html.c:3469 html.c:3578
532msgid "Back to top" 532msgid "Back to top"
533msgstr "ПовернутиÑÑ Ð´Ð¾ початку" 533msgstr "ПовернутиÑÑ Ð´Ð¾ початку"
534 534
535#: html.c:3243 535#: html.c:3531
536msgid "History" 536msgid "History"
537msgstr "ІÑторіÑ" 537msgstr "ІÑторіÑ"
538 538
539#: html.c:3295 html.c:3734 539#: html.c:3583 html.c:4149
540msgid "More..." 540msgid "More..."
541msgstr "Більше..." 541msgstr "Більше..."
542 542
543#: html.c:3391 html.c:4813 543#: html.c:3767 html.c:5257
544msgid "Unlimit" 544msgid "Unlimit"
545msgstr "Без обмеженнÑ" 545msgstr "Без обмеженнÑ"
546 546
547#: html.c:3392 547#: html.c:3768
548msgid "Allow announces (boosts) from this user" 548msgid "Allow announces (boosts) from this user"
549msgstr "Дозволити проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ цього кориÑтувача" 549msgstr "Дозволити проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ цього кориÑтувача"
550 550
551#: html.c:3395 html.c:4809 551#: html.c:3771 html.c:5253
552msgid "Limit" 552msgid "Limit"
553msgstr "Обмежити" 553msgstr "Обмежити"
554 554
555#: html.c:3396 555#: html.c:3772
556msgid "Block announces (boosts) from this user" 556msgid "Block announces (boosts) from this user"
557msgstr "Заборонити проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ цього кориÑтувача" 557msgstr "Заборонити проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ цього кориÑтувача"
558 558
559#: html.c:3405 559#: html.c:3781
560msgid "Delete this user" 560msgid "Delete this user"
561msgstr "Видалити кориÑтувача" 561msgstr "Видалити кориÑтувача"
562 562
563#: html.c:3410 html.c:4927 563#: html.c:3786 html.c:5371
564msgid "Approve" 564msgid "Approve"
565msgstr "Підтвердити" 565msgstr "Підтвердити"
566 566
567#: html.c:3411 567#: html.c:3787
568msgid "Approve this follow request" 568msgid "Approve this follow request"
569msgstr "Підтвердити цей запит на підпиÑку" 569msgstr "Підтвердити цей запит на підпиÑку"
570 570
571#: html.c:3414 html.c:4951 571#: html.c:3790 html.c:5395
572msgid "Discard" 572msgid "Discard"
573msgstr "Відхилити" 573msgstr "Відхилити"
574 574
575#: html.c:3414 575#: html.c:3790
576msgid "Discard this follow request" 576msgid "Discard this follow request"
577msgstr "Відхилити цей запит на підпиÑку" 577msgstr "Відхилити цей запит на підпиÑку"
578 578
579#: html.c:3419 html.c:4795 579#: html.c:3795 html.c:5239
580msgid "Unmute" 580msgid "Unmute"
581msgstr "СкаÑувати глушіннÑ" 581msgstr "СкаÑувати глушіннÑ"
582 582
583#: html.c:3420 583#: html.c:3796
584msgid "Stop blocking activities from this user" 584msgid "Stop blocking activities from this user"
585msgstr "Припинити Ð³Ð»ÑƒÑˆÑ–Ð½Ð½Ñ Ð´Ñ–Ð¹ цього кориÑтувача" 585msgstr "Припинити Ð³Ð»ÑƒÑˆÑ–Ð½Ð½Ñ Ð´Ñ–Ð¹ цього кориÑтувача"
586 586
587#: html.c:3424 587#: html.c:3800
588msgid "Block any activity from this user" 588msgid "Block any activity from this user"
589msgstr "Заглушити вÑÑ– дії цього кориÑтувача" 589msgstr "Заглушити вÑÑ– дії цього кориÑтувача"
590 590
591#: html.c:3432 591#: html.c:3808
592msgid "Direct Message..." 592msgid "Direct Message..."
593msgstr "ОÑобиÑте повідомленнÑ..." 593msgstr "ОÑобиÑте повідомленнÑ..."
594 594
595#: html.c:3467 595#: html.c:3843
596msgid "Pending follow confirmations" 596msgid "Pending follow confirmations"
597msgstr "Запити на підпиÑку очікують на розглÑд" 597msgstr "Запити на підпиÑку очікують на розглÑд"
598 598
599#: html.c:3471 599#: html.c:3847
600msgid "People you follow" 600msgid "People you follow"
601msgstr "Ваші підпиÑки" 601msgstr "Ваші підпиÑки"
602 602
603#: html.c:3472 603#: html.c:3848
604msgid "People that follow you" 604msgid "People that follow you"
605msgstr "Ваші підпиÑники" 605msgstr "Ваші підпиÑники"
606 606
607#: html.c:3511 607#: html.c:3887
608msgid "Clear all" 608msgid "Clear all"
609msgstr "ОчиÑтити вÑе" 609msgstr "ОчиÑтити вÑе"
610 610
611#: html.c:3571 611#: html.c:3951
612msgid "Mention" 612msgid "Mention"
613msgstr "Згадка" 613msgstr "Згадка"
614 614
615#: html.c:3574 615#: html.c:3954
616msgid "Finished poll" 616msgid "Finished poll"
617msgstr "Завершене опитуваннÑ" 617msgstr "Завершене опитуваннÑ"
618 618
619#: html.c:3590 619#: html.c:3979
620msgid "Follow Request" 620msgid "Follow Request"
621msgstr "Запит на підпиÑку" 621msgstr "Запит на підпиÑку"
622 622
623#: html.c:3674 623#: html.c:4089
624msgid "Context" 624msgid "Context"
625msgstr "КонтекÑÑ‚" 625msgstr "КонтекÑÑ‚"
626 626
627#: html.c:3692 627#: html.c:4107
628msgid "New" 628msgid "New"
629msgstr "Ðове" 629msgstr "Ðове"
630 630
631#: html.c:3707 631#: html.c:4122
632msgid "Already seen" 632msgid "Already seen"
633msgstr "Вже переглÑнуто" 633msgstr "Вже переглÑнуто"
634 634
635#: html.c:3722 635#: html.c:4137
636msgid "None" 636msgid "None"
637msgstr "Ðема" 637msgstr "Ðема"
638 638
639#: html.c:3994 639#: html.c:4414
640#, c-format 640#, c-format
641msgid "Search results for account %s" 641msgid "Search results for account %s"
642msgstr "Результати пошуку Ð´Ð»Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу %s" 642msgstr "Результати пошуку Ð´Ð»Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу %s"
643 643
644#: html.c:4001 644#: html.c:4421
645#, c-format 645#, c-format
646msgid "Account %s not found" 646msgid "Account %s not found"
647msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ %s не знайдений" 647msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ %s не знайдений"
648 648
649#: html.c:4032 649#: html.c:4452
650#, c-format 650#, c-format
651msgid "Search results for tag %s" 651msgid "Search results for tag %s"
652msgstr "Результати пошуку тега %s" 652msgstr "Результати пошуку тега %s"
653 653
654#: html.c:4032 654#: html.c:4452
655#, c-format 655#, c-format
656msgid "Nothing found for tag %s" 656msgid "Nothing found for tag %s"
657msgstr "Ðічого не знайдено за тегом %s" 657msgstr "Ðічого не знайдено за тегом %s"
658 658
659#: html.c:4048 659#: html.c:4468
660#, c-format 660#, c-format
661msgid "Search results for '%s' (may be more)" 661msgid "Search results for '%s' (may be more)"
662msgstr "Результати пошуку Ð´Ð»Ñ '%s' (можливо Ñ” більше)" 662msgstr "Результати пошуку Ð´Ð»Ñ '%s' (можливо Ñ” більше)"
663 663
664#: html.c:4051 664#: html.c:4471
665#, c-format 665#, c-format
666msgid "Search results for '%s'" 666msgid "Search results for '%s'"
667msgstr "Результати пошуку Ð´Ð»Ñ '%s'" 667msgstr "Результати пошуку Ð´Ð»Ñ '%s'"
668 668
669#: html.c:4054 669#: html.c:4474
670#, c-format 670#, c-format
671msgid "No more matches for '%s'" 671msgid "No more matches for '%s'"
672msgstr "Ðемає більше збігів Ð´Ð»Ñ '%s'" 672msgstr "Ðемає більше збігів Ð´Ð»Ñ '%s'"
673 673
674#: html.c:4056 674#: html.c:4476
675#, c-format 675#, c-format
676msgid "Nothing found for '%s'" 676msgid "Nothing found for '%s'"
677msgstr "Ðічого не знайдено Ð´Ð»Ñ '%s'" 677msgstr "Ðічого не знайдено Ð´Ð»Ñ '%s'"
678 678
679#: html.c:4154 679#: html.c:4574
680msgid "Showing instance timeline" 680msgid "Showing instance timeline"
681msgstr "Показуємо Ñтрічку Ñервера" 681msgstr "Показуємо Ñтрічку Ñервера"
682 682
683#: html.c:4237 683#: html.c:4657
684#, c-format 684#, c-format
685msgid "Showing timeline for list '%s'" 685msgid "Showing timeline for list '%s'"
686msgstr "Показуємо Ñтрічку Ð´Ð»Ñ ÑпиÑку '%s'" 686msgstr "Показуємо Ñтрічку Ð´Ð»Ñ ÑпиÑку '%s'"
687 687
688#: httpd.c:258 688#: httpd.c:259
689#, c-format 689#, c-format
690msgid "Search results for tag #%s" 690msgid "Search results for tag #%s"
691msgstr "Результати пошуку Ð´Ð»Ñ Ñ‚ÐµÐ³Ð° #%s" 691msgstr "Результати пошуку Ð´Ð»Ñ Ñ‚ÐµÐ³Ð° #%s"
692 692
693#: httpd.c:267 693#: httpd.c:268
694msgid "Recent posts by users in this instance" 694msgid "Recent posts by users in this instance"
695msgstr "ОÑтанні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° цьому Ñервері" 695msgstr "ОÑтанні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° цьому Ñервері"
696 696
697#: html.c:1764 697#: html.c:1842
698msgid "Blocked hashtags..." 698msgid "Blocked hashtags..."
699msgstr "Заблоковані теги..." 699msgstr "Заблоковані теги..."
700 700
701#: html.c:518 701#: html.c:574
702msgid "Optional URL to reply to" 702msgid "Optional URL to reply to"
703msgstr "Ðеобов'Ñзковий URL Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ–" 703msgstr "Ðеобов'Ñзковий URL Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ–"
704 704
705#: html.c:695 705#: html.c:751
706msgid "" 706msgid ""
707"Option 1...\n" 707"Option 1...\n"
708"Option 2...\n" 708"Option 2...\n"
@@ -714,94 +714,106 @@ msgstr ""
714"Варіант 3...\n" 714"Варіант 3...\n"
715"..." 715"..."
716 716
717#: html.c:1558 717#: html.c:1636
718msgid "Bot API key" 718msgid "Bot API key"
719msgstr "Ключ API Ð´Ð»Ñ Ð±Ð¾Ñ‚Ð°" 719msgstr "Ключ API Ð´Ð»Ñ Ð±Ð¾Ñ‚Ð°"
720 720
721#: html.c:1564 721#: html.c:1642
722msgid "Chat id" 722msgid "Chat id"
723msgstr "Id чату" 723msgstr "Id чату"
724 724
725#: html.c:1572 725#: html.c:1650
726msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 726msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
727msgstr "повна URL Ñервера ntfy (наприклад https://ntfy.sh/YourTopic)" 727msgstr "повна URL Ñервера ntfy (наприклад https://ntfy.sh/YourTopic)"
728 728
729#: html.c:1578 729#: html.c:1656
730msgid "ntfy token - if needed" 730msgid "ntfy token - if needed"
731msgstr "токен ntfy - Ñкщо потрібно" 731msgstr "токен ntfy - Ñкщо потрібно"
732 732
733#: html.c:3078 733#: html.c:3366
734msgid "pinned" 734msgid "pinned"
735msgstr "закріплено" 735msgstr "закріплено"
736 736
737#: html.c:3090 737#: html.c:3378
738msgid "bookmarks" 738msgid "bookmarks"
739msgstr "закладки" 739msgstr "закладки"
740 740
741#: html.c:3102 741#: html.c:3390
742msgid "drafts" 742msgid "drafts"
743msgstr "чернетки" 743msgstr "чернетки"
744 744
745#: html.c:584 745#: html.c:640
746msgid "Scheduled post..." 746msgid "Scheduled post..."
747msgstr "Запланувати..." 747msgstr "Запланувати..."
748 748
749msgid "Post date and time:" 749msgid "Post date and time:"
750msgstr "Ð§Ð°Ñ Ð´Ð¾Ð¿Ð¸Ñу:" 750msgstr "Ð§Ð°Ñ Ð´Ð¾Ð¿Ð¸Ñу:"
751 751
752#: html.c:3113 html.c:4214 752#: html.c:3401 html.c:4634
753msgid "Scheduled posts" 753msgid "Scheduled posts"
754msgstr "Заплановані допиÑи" 754msgstr "Заплановані допиÑи"
755 755
756#: html.c:3114 756#: html.c:3402
757msgid "scheduled posts" 757msgid "scheduled posts"
758msgstr "заплановані допиÑи" 758msgstr "заплановані допиÑи"
759 759
760#: html.c:578 760#: html.c:634
761#, c-format 761#, c-format
762msgid "Post date and time (timezone: %s):" 762msgid "Post date and time (timezone: %s):"
763msgstr "Дата та Ñ‡Ð°Ñ Ð´Ð¾Ð¿Ð¸Ñу (чаÑовий поÑÑ: %s):" 763msgstr "Дата та Ñ‡Ð°Ñ Ð´Ð¾Ð¿Ð¸Ñу (чаÑовий поÑÑ: %s):"
764 764
765#: html.c:1689 765#: html.c:1767
766msgid "Time zone:" 766msgid "Time zone:"
767msgstr "ЧаÑовий поÑÑ:" 767msgstr "ЧаÑовий поÑÑ:"
768 768
769#: html.c:559 769#: html.c:615
770msgid "Language:" 770msgid "Language:"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1580 773#: html.c:1658
774msgid "Notify webhook:" 774msgid "Notify webhook:"
775msgstr "" 775msgstr ""
776 776
777#: html.c:1586 777#: html.c:1664
778msgid "http://example.com/webhook" 778msgid "http://example.com/webhook"
779msgstr "" 779msgstr ""
780 780
781#: html.c:1694 781#: html.c:1772
782msgid "Languages you usually post in:" 782msgid "Languages you usually post in:"
783msgstr "" 783msgstr ""
784 784
785#: html.c:1700 785#: html.c:1778
786msgid "en fr es de_AT" 786msgid "en fr es de_AT"
787msgstr "" 787msgstr ""
788 788
789#: html.c:460 789#: html.c:428
790msgid "Visibility: " 790msgid "Visibility: "
791msgstr "" 791msgstr ""
792 792
793#: html.c:468
794msgid "Public" 793msgid "Public"
795msgstr "" 794msgstr ""
796 795
797#: html.c:477
798msgid "Unlisted" 796msgid "Unlisted"
799msgstr "" 797msgstr ""
800 798
801#: html.c:486
802msgid "Followers-only" 799msgid "Followers-only"
803msgstr "" 800msgstr ""
804 801
805#: html.c:495
806msgid "Direct Message" 802msgid "Direct Message"
807msgstr "" 803msgstr ""
804
805#: html.c:488 html.c:2534 html.c:2559 html.c:5177
806msgid "EmojiUnreact"
807msgstr ""
808
809#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
810msgid "EmojiReact"
811msgstr ""
812
813#: html.c:2115
814msgid "Emoji react..."
815msgstr ""
816
817#: html.c:2609
818msgid "Emoji reactions: "
819msgstr ""
diff --git a/po/zh.po b/po/zh.po
index 5ed5edc..1e2897d 100644
--- a/po/zh.po
+++ b/po/zh.po
@@ -8,693 +8,693 @@ msgstr ""
8"Language: zh\n" 8"Language: zh\n"
9"Content-Type: text/plain; charset=UTF-8\n" 9"Content-Type: text/plain; charset=UTF-8\n"
10 10
11#: html.c:440 11#: html.c:534
12msgid "Sensitive content: " 12msgid "Sensitive content: "
13msgstr "æ•æ„Ÿå†…容:" 13msgstr "æ•æ„Ÿå†…容:"
14 14
15#: html.c:448 15#: html.c:542
16msgid "Sensitive content description" 16msgid "Sensitive content description"
17msgstr "æ•æ„Ÿå†…容æè¿°" 17msgstr "æ•æ„Ÿå†…容æè¿°"
18 18
19msgid "Only for mentioned people: " 19msgid "Only for mentioned people: "
20msgstr "åªæœ‰æåŠåˆ°çš„人:" 20msgstr "åªæœ‰æåŠåˆ°çš„人:"
21 21
22#: html.c:514 22#: html.c:570
23msgid "Reply to (URL): " 23msgid "Reply to (URL): "
24msgstr "回å¤ç»™(URL):" 24msgstr "回å¤ç»™(URL):"
25 25
26#: html.c:523 26#: html.c:579
27msgid "Don't send, but store as a draft" 27msgid "Don't send, but store as a draft"
28msgstr "ä¸å‘é€ï¼Œä½†ä¿å­˜ä¸ºè‰ç¨¿" 28msgstr "ä¸å‘é€ï¼Œä½†ä¿å­˜ä¸ºè‰ç¨¿"
29 29
30#: html.c:524 30#: html.c:580
31msgid "Draft:" 31msgid "Draft:"
32msgstr "è‰ç¨¿ï¼š" 32msgstr "è‰ç¨¿ï¼š"
33 33
34#: html.c:614 34#: html.c:670
35msgid "Attachments..." 35msgid "Attachments..."
36msgstr "附件..." 36msgstr "附件..."
37 37
38#: html.c:637 38#: html.c:693
39msgid "File:" 39msgid "File:"
40msgstr "文件:" 40msgstr "文件:"
41 41
42#: html.c:641 42#: html.c:697
43msgid "Clear this field to delete the attachment" 43msgid "Clear this field to delete the attachment"
44msgstr "清除此项以删除附件" 44msgstr "清除此项以删除附件"
45 45
46#: html.c:650 html.c:675 46#: html.c:706 html.c:731
47msgid "Attachment description" 47msgid "Attachment description"
48msgstr "附件æè¿°" 48msgstr "附件æè¿°"
49 49
50#: html.c:686 50#: html.c:742
51msgid "Poll..." 51msgid "Poll..."
52msgstr "投票..." 52msgstr "投票..."
53 53
54#: html.c:688 54#: html.c:744
55msgid "Poll options (one per line, up to 8):" 55msgid "Poll options (one per line, up to 8):"
56msgstr "投票选项(æ¯è¡Œä¸€é¡¹ï¼Œæœ€å¤šå…«é¡¹ï¼‰ï¼š" 56msgstr "投票选项(æ¯è¡Œä¸€é¡¹ï¼Œæœ€å¤šå…«é¡¹ï¼‰ï¼š"
57 57
58#: html.c:700 58#: html.c:756
59msgid "One choice" 59msgid "One choice"
60msgstr "å•选" 60msgstr "å•选"
61 61
62#: html.c:703 62#: html.c:759
63msgid "Multiple choices" 63msgid "Multiple choices"
64msgstr "多选" 64msgstr "多选"
65 65
66#: html.c:709 66#: html.c:765
67msgid "End in 5 minutes" 67msgid "End in 5 minutes"
68msgstr "五分钟åŽç»“æŸ" 68msgstr "五分钟åŽç»“æŸ"
69 69
70#: html.c:713 70#: html.c:769
71msgid "End in 1 hour" 71msgid "End in 1 hour"
72msgstr "䏀尿—¶åŽç»“æŸ" 72msgstr "䏀尿—¶åŽç»“æŸ"
73 73
74#: html.c:716 74#: html.c:772
75msgid "End in 1 day" 75msgid "End in 1 day"
76msgstr "一天åŽç»“æŸ" 76msgstr "一天åŽç»“æŸ"
77 77
78#: html.c:724 78#: html.c:780
79msgid "Post" 79msgid "Post"
80msgstr "å‘布" 80msgstr "å‘布"
81 81
82#: html.c:826 html.c:833 82#: html.c:882 html.c:889
83msgid "Site description" 83msgid "Site description"
84msgstr "站点æè¿°" 84msgstr "站点æè¿°"
85 85
86#: html.c:844 86#: html.c:900
87msgid "Admin email" 87msgid "Admin email"
88msgstr "管ç†å‘˜é‚®ç®±" 88msgstr "管ç†å‘˜é‚®ç®±"
89 89
90#: html.c:857 90#: html.c:913
91msgid "Admin account" 91msgid "Admin account"
92msgstr "管ç†å‘˜å¸å·" 92msgstr "管ç†å‘˜å¸å·"
93 93
94#: html.c:922 html.c:1278 94#: html.c:978 html.c:1334
95#, c-format 95#, c-format
96msgid "%d following, %d followers" 96msgid "%d following, %d followers"
97msgstr "%d 个正在关注,%d 个关注者" 97msgstr "%d 个正在关注,%d 个关注者"
98 98
99#: html.c:1019 99#: html.c:1075
100msgid "RSS" 100msgid "RSS"
101msgstr "RSS" 101msgstr "RSS"
102 102
103#: html.c:1024 html.c:1063 103#: html.c:1080 html.c:1119
104msgid "private" 104msgid "private"
105msgstr "ç§å¯†" 105msgstr "ç§å¯†"
106 106
107#: html.c:1059 107#: html.c:1115
108msgid "public" 108msgid "public"
109msgstr "公开" 109msgstr "公开"
110 110
111#: html.c:1067 111#: html.c:1123
112msgid "notifications" 112msgid "notifications"
113msgstr "通知" 113msgstr "通知"
114 114
115#: html.c:1072 115#: html.c:1128
116msgid "people" 116msgid "people"
117msgstr "æˆå‘˜" 117msgstr "æˆå‘˜"
118 118
119#: html.c:1077 119#: html.c:1133
120msgid "instance" 120msgid "instance"
121msgstr "实例" 121msgstr "实例"
122 122
123#: html.c:1086 123#: html.c:1142
124msgid "" 124msgid ""
125"Search posts by URL or content (regular expression), @user@host accounts, or " 125"Search posts by URL or content (regular expression), @user@host accounts, or "
126"#tag" 126"#tag"
127msgstr "" 127msgstr ""
128"通过 URLã€å†…容(正则表达å¼ï¼‰ã€@<用户å>@<主机å>å¸å·ï¼Œæˆ–者 #è¯é¢˜æ ‡ç­¾ æœç´¢è´´å­" 128"通过 URLã€å†…容(正则表达å¼ï¼‰ã€@<用户å>@<主机å>å¸å·ï¼Œæˆ–者 #è¯é¢˜æ ‡ç­¾ æœç´¢è´´å­"
129 129
130#: html.c:1087 130#: html.c:1143
131msgid "Content search" 131msgid "Content search"
132msgstr "æœç´¢å†…容" 132msgstr "æœç´¢å†…容"
133 133
134#: html.c:1213 134#: html.c:1269
135msgid "verified link" 135msgid "verified link"
136msgstr "已验è¯çš„链接" 136msgstr "已验è¯çš„链接"
137 137
138#: html.c:1270 html.c:2726 html.c:2739 html.c:2748 html.c:3680 138#: html.c:1326 html.c:3010 html.c:3023 html.c:3032 html.c:4095
139msgid "Location: " 139msgid "Location: "
140msgstr "ä½ç½®ï¼š" 140msgstr "ä½ç½®ï¼š"
141 141
142#: html.c:1302 142#: html.c:1358
143msgid "New Post..." 143msgid "New Post..."
144msgstr "æ–°è´´å­..." 144msgstr "æ–°è´´å­..."
145 145
146#: html.c:1304 146#: html.c:1360
147msgid "What's on your mind?" 147msgid "What's on your mind?"
148msgstr "你在想什么?" 148msgstr "你在想什么?"
149 149
150#: html.c:1313 150#: html.c:1369
151msgid "Operations..." 151msgid "Operations..."
152msgstr "æ“作..." 152msgstr "æ“作..."
153 153
154#: html.c:1328 html.c:1949 html.c:3400 html.c:4817 154#: html.c:1384 html.c:2027 html.c:3776 html.c:4044 html.c:5261
155msgid "Follow" 155msgid "Follow"
156msgstr "关注" 156msgstr "关注"
157 157
158#: html.c:1330 158#: html.c:1386
159msgid "(by URL or user@host)" 159msgid "(by URL or user@host)"
160msgstr "(通过 URL 或者 <用户å>@<主机å>)" 160msgstr "(通过 URL 或者 <用户å>@<主机å>)"
161 161
162#: html.c:1345 html.c:1925 html.c:4766 162#: html.c:1401 html.c:2003 html.c:5210
163msgid "Boost" 163msgid "Boost"
164msgstr "转å‘" 164msgstr "转å‘"
165 165
166#: html.c:1347 html.c:1364 166#: html.c:1403 html.c:1420 html.c:1442
167msgid "(by URL)" 167msgid "(by URL)"
168msgstr "(通过 URL)" 168msgstr "(通过 URL)"
169 169
170#: html.c:1362 html.c:1904 html.c:4757 170#: html.c:1418 html.c:1982 html.c:5201
171msgid "Like" 171msgid "Like"
172msgstr "点赞" 172msgstr "点赞"
173 173
174#: html.c:1490 174#: html.c:1568
175msgid "User Settings..." 175msgid "User Settings..."
176msgstr "用户设置..." 176msgstr "用户设置..."
177 177
178#: html.c:1499 178#: html.c:1577
179msgid "Display name:" 179msgid "Display name:"
180msgstr "显示å字:" 180msgstr "显示å字:"
181 181
182#: html.c:1505 182#: html.c:1583
183msgid "Your name" 183msgid "Your name"
184msgstr "ä½ çš„åå­—" 184msgstr "ä½ çš„åå­—"
185 185
186#: html.c:1507 186#: html.c:1585
187msgid "Avatar: " 187msgid "Avatar: "
188msgstr "头åƒï¼š" 188msgstr "头åƒï¼š"
189 189
190#: html.c:1515 190#: html.c:1593
191msgid "Delete current avatar" 191msgid "Delete current avatar"
192msgstr "删除当å‰å¤´åƒ" 192msgstr "删除当å‰å¤´åƒ"
193 193
194#: html.c:1517 194#: html.c:1595
195msgid "Header image (banner): " 195msgid "Header image (banner): "
196msgstr "页眉图åƒï¼ˆæ¨ªå¹…)" 196msgstr "页眉图åƒï¼ˆæ¨ªå¹…)"
197 197
198#: html.c:1525 198#: html.c:1603
199msgid "Delete current header image" 199msgid "Delete current header image"
200msgstr "删除当å‰çš„页眉图åƒ" 200msgstr "删除当å‰çš„页眉图åƒ"
201 201
202#: html.c:1527 202#: html.c:1605
203msgid "Bio:" 203msgid "Bio:"
204msgstr "简介" 204msgstr "简介"
205 205
206#: html.c:1533 206#: html.c:1611
207msgid "Write about yourself here..." 207msgid "Write about yourself here..."
208msgstr "在这里介ç»ä½ è‡ªå·±..." 208msgstr "在这里介ç»ä½ è‡ªå·±..."
209 209
210#: html.c:1542 210#: html.c:1620
211msgid "Always show sensitive content" 211msgid "Always show sensitive content"
212msgstr "æ€»æ˜¯æ˜¾ç¤ºæ•æ„Ÿå†…容" 212msgstr "æ€»æ˜¯æ˜¾ç¤ºæ•æ„Ÿå†…容"
213 213
214#: html.c:1544 214#: html.c:1622
215msgid "Email address for notifications:" 215msgid "Email address for notifications:"
216msgstr "用于通知的电å­é‚®ç®±åœ°å€" 216msgstr "用于通知的电å­é‚®ç®±åœ°å€"
217 217
218#: html.c:1552 218#: html.c:1630
219msgid "Telegram notifications (bot key and chat id):" 219msgid "Telegram notifications (bot key and chat id):"
220msgstr "Telegram 通知(bot 密钥和èŠå¤© ID)" 220msgstr "Telegram 通知(bot 密钥和èŠå¤© ID)"
221 221
222#: html.c:1566 222#: html.c:1644
223msgid "ntfy notifications (ntfy server and token):" 223msgid "ntfy notifications (ntfy server and token):"
224msgstr "ntfy 通知(ntfy æœåŠ¡å™¨å’Œä»¤ç‰Œï¼‰ï¼š" 224msgstr "ntfy 通知(ntfy æœåŠ¡å™¨å’Œä»¤ç‰Œï¼‰ï¼š"
225 225
226#: html.c:1588 226#: html.c:1666
227msgid "Maximum days to keep posts (0: server settings):" 227msgid "Maximum days to keep posts (0: server settings):"
228msgstr "ä¿å­˜è´´å­çš„æœ€å¤§å¤©æ•°ï¼ˆ0:æœåŠ¡å™¨è®¾ç½®ï¼‰" 228msgstr "ä¿å­˜è´´å­çš„æœ€å¤§å¤©æ•°ï¼ˆ0:æœåŠ¡å™¨è®¾ç½®ï¼‰"
229 229
230#: html.c:1602 230#: html.c:1680
231msgid "Drop direct messages from people you don't follow" 231msgid "Drop direct messages from people you don't follow"
232msgstr "丢弃你没有关注的人的ç§ä¿¡" 232msgstr "丢弃你没有关注的人的ç§ä¿¡"
233 233
234#: html.c:1611 234#: html.c:1689
235msgid "This account is a bot" 235msgid "This account is a bot"
236msgstr "æ­¤å¸å·æ˜¯æœºå™¨äºº" 236msgstr "æ­¤å¸å·æ˜¯æœºå™¨äºº"
237 237
238#: html.c:1620 238#: html.c:1698
239msgid "Auto-boost all mentions to this account" 239msgid "Auto-boost all mentions to this account"
240msgstr "è‡ªåŠ¨è½¬å‘æ‰€æœ‰å¯¹æ­¤å¸å·çš„æåŠ" 240msgstr "è‡ªåŠ¨è½¬å‘æ‰€æœ‰å¯¹æ­¤å¸å·çš„æåŠ"
241 241
242#: html.c:1629 242#: html.c:1707
243msgid "This account is private (posts are not shown through the web)" 243msgid "This account is private (posts are not shown through the web)"
244msgstr "这是一个ç§å¯†å¸å·ï¼ˆè´´å­ä¸ä¼šåœ¨ç½‘页中显示)" 244msgstr "这是一个ç§å¯†å¸å·ï¼ˆè´´å­ä¸ä¼šåœ¨ç½‘页中显示)"
245 245
246#: html.c:1639 246#: html.c:1717
247msgid "Collapse top threads by default" 247msgid "Collapse top threads by default"
248msgstr "默认收起主题帖" 248msgstr "默认收起主题帖"
249 249
250#: html.c:1648 250#: html.c:1726
251msgid "Follow requests must be approved" 251msgid "Follow requests must be approved"
252msgstr "关注请求必须ç»è¿‡å®¡æ‰¹" 252msgstr "关注请求必须ç»è¿‡å®¡æ‰¹"
253 253
254#: html.c:1657 254#: html.c:1735
255msgid "Publish follower and following metrics" 255msgid "Publish follower and following metrics"
256msgstr "展示关注者和正在关注的数é‡" 256msgstr "展示关注者和正在关注的数é‡"
257 257
258#: html.c:1659 258#: html.c:1737
259msgid "Current location:" 259msgid "Current location:"
260msgstr "当å‰ä½ç½®ï¼š" 260msgstr "当å‰ä½ç½®ï¼š"
261 261
262#: html.c:1673 262#: html.c:1751
263msgid "Profile metadata (key=value pairs in each line):" 263msgid "Profile metadata (key=value pairs in each line):"
264msgstr "个人资料元数æ®ï¼ˆæ¯è¡Œä¸€æ¡ é”®=值)" 264msgstr "个人资料元数æ®ï¼ˆæ¯è¡Œä¸€æ¡ é”®=值)"
265 265
266#: html.c:1684 266#: html.c:1762
267msgid "Web interface language:" 267msgid "Web interface language:"
268msgstr "网页界é¢è¯­è¨€ï¼š" 268msgstr "网页界é¢è¯­è¨€ï¼š"
269 269
270#: html.c:1703 270#: html.c:1781
271msgid "New password:" 271msgid "New password:"
272msgstr "新密ç ï¼š" 272msgstr "新密ç ï¼š"
273 273
274#: html.c:1710 274#: html.c:1788
275msgid "Repeat new password:" 275msgid "Repeat new password:"
276msgstr "é‡å¤æ–°å¯†ç ï¼š" 276msgstr "é‡å¤æ–°å¯†ç ï¼š"
277 277
278#: html.c:1720 278#: html.c:1798
279msgid "Update user info" 279msgid "Update user info"
280msgstr "更新用户信æ¯ï¼š" 280msgstr "更新用户信æ¯ï¼š"
281 281
282#: html.c:1731 282#: html.c:1809
283msgid "Followed hashtags..." 283msgid "Followed hashtags..."
284msgstr "关注的标签..." 284msgstr "关注的标签..."
285 285
286#: html.c:1733 html.c:1766 286#: html.c:1811 html.c:1844
287msgid "One hashtag per line" 287msgid "One hashtag per line"
288msgstr "æ¯è¡Œä¸€ä¸ªæ ‡ç­¾" 288msgstr "æ¯è¡Œä¸€ä¸ªæ ‡ç­¾"
289 289
290#: html.c:1755 html.c:1787 290#: html.c:1833 html.c:1865
291msgid "Update hashtags" 291msgid "Update hashtags"
292msgstr "更新标签" 292msgstr "更新标签"
293 293
294#: html.c:1904 294#: html.c:1982
295msgid "Say you like this post" 295msgid "Say you like this post"
296msgstr "说你喜欢这个贴å­" 296msgstr "说你喜欢这个贴å­"
297 297
298#: html.c:1909 html.c:4775 298#: html.c:1987 html.c:5219
299msgid "Unlike" 299msgid "Unlike"
300msgstr "ä¸å–œæ¬¢" 300msgstr "ä¸å–œæ¬¢"
301 301
302#: html.c:1909 302#: html.c:1987
303msgid "Nah don't like it that much" 303msgid "Nah don't like it that much"
304msgstr "å•Šï¼Œä¸æ€Žä¹ˆå–œæ¬¢è¿™ä¸ª" 304msgstr "å•Šï¼Œä¸æ€Žä¹ˆå–œæ¬¢è¿™ä¸ª"
305 305
306#: html.c:1915 html.c:4912 306#: html.c:1993 html.c:5356
307msgid "Unpin" 307msgid "Unpin"
308msgstr "å–æ¶ˆç½®é¡¶" 308msgstr "å–æ¶ˆç½®é¡¶"
309 309
310#: html.c:1915 310#: html.c:1993
311msgid "Unpin this post from your timeline" 311msgid "Unpin this post from your timeline"
312msgstr "ä»Žä½ çš„æ—¶é—´çº¿ä¸Šå–æ¶ˆç½®é¡¶è¿™ä¸ªè´´å­" 312msgstr "ä»Žä½ çš„æ—¶é—´çº¿ä¸Šå–æ¶ˆç½®é¡¶è¿™ä¸ªè´´å­"
313 313
314#: html.c:1918 html.c:4907 314#: html.c:1996 html.c:5351
315msgid "Pin" 315msgid "Pin"
316msgstr "置顶" 316msgstr "置顶"
317 317
318#: html.c:1918 318#: html.c:1996
319msgid "Pin this post to the top of your timeline" 319msgid "Pin this post to the top of your timeline"
320msgstr "把这æ¡è´´å­ç½®é¡¶åœ¨ä½ çš„æ—¶é—´çº¿ä¸Š" 320msgstr "把这æ¡è´´å­ç½®é¡¶åœ¨ä½ çš„æ—¶é—´çº¿ä¸Š"
321 321
322#: html.c:1925 322#: html.c:2003
323msgid "Announce this post to your followers" 323msgid "Announce this post to your followers"
324msgstr "å‘你的关注者宣布这æ¡è´´å­" 324msgstr "å‘你的关注者宣布这æ¡è´´å­"
325 325
326#: html.c:1930 html.c:4783 326#: html.c:2008 html.c:5227
327msgid "Unboost" 327msgid "Unboost"
328msgstr "å–æ¶ˆè½¬å‘" 328msgstr "å–æ¶ˆè½¬å‘"
329 329
330#: html.c:1930 330#: html.c:2008
331msgid "I regret I boosted this" 331msgid "I regret I boosted this"
332msgstr "æˆ‘åŽæ‚”转å‘这个了" 332msgstr "æˆ‘åŽæ‚”转å‘这个了"
333 333
334#: html.c:1936 html.c:4922 334#: html.c:2014 html.c:5366
335msgid "Unbookmark" 335msgid "Unbookmark"
336msgstr "å–æ¶ˆæ”¶è—" 336msgstr "å–æ¶ˆæ”¶è—"
337 337
338#: html.c:1936 338#: html.c:2014
339msgid "Delete this post from your bookmarks" 339msgid "Delete this post from your bookmarks"
340msgstr "从收è—夹中删除这个贴å­" 340msgstr "从收è—夹中删除这个贴å­"
341 341
342#: html.c:1939 html.c:4917 342#: html.c:2017 html.c:5361
343msgid "Bookmark" 343msgid "Bookmark"
344msgstr "æ”¶è—" 344msgstr "æ”¶è—"
345 345
346#: html.c:1939 346#: html.c:2017
347msgid "Add this post to your bookmarks" 347msgid "Add this post to your bookmarks"
348msgstr "把这个贴å­åŠ å…¥æ”¶è—夹" 348msgstr "把这个贴å­åŠ å…¥æ”¶è—夹"
349 349
350#: html.c:1945 html.c:3386 html.c:3577 html.c:4830 350#: html.c:2023 html.c:3762 html.c:3957 html.c:4042 html.c:5274
351msgid "Unfollow" 351msgid "Unfollow"
352msgstr "å–æ¶ˆå…³æ³¨" 352msgstr "å–æ¶ˆå…³æ³¨"
353 353
354#: html.c:1945 html.c:3387 354#: html.c:2023 html.c:3763 html.c:4042
355msgid "Stop following this user's activity" 355msgid "Stop following this user's activity"
356msgstr "åœæ­¢å…³æ³¨æ­¤ç”¨æˆ·çš„动æ€" 356msgstr "åœæ­¢å…³æ³¨æ­¤ç”¨æˆ·çš„动æ€"
357 357
358#: html.c:1949 html.c:3401 358#: html.c:2027 html.c:3777 html.c:4044
359msgid "Start following this user's activity" 359msgid "Start following this user's activity"
360msgstr "开始关注此用户的动æ€" 360msgstr "开始关注此用户的动æ€"
361 361
362#: html.c:1955 html.c:4860 362#: html.c:2033 html.c:5304
363msgid "Unfollow Group" 363msgid "Unfollow Group"
364msgstr "å–æ¶ˆå…³æ³¨ç¾¤ç»„" 364msgstr "å–æ¶ˆå…³æ³¨ç¾¤ç»„"
365 365
366#: html.c:1956 366#: html.c:2034
367msgid "Stop following this group or channel" 367msgid "Stop following this group or channel"
368msgstr "å–æ¶ˆå…³æ³¨è¿™ä¸ªç¾¤ç»„或频é“" 368msgstr "å–æ¶ˆå…³æ³¨è¿™ä¸ªç¾¤ç»„或频é“"
369 369
370#: html.c:1960 html.c:4847 370#: html.c:2038 html.c:5291
371msgid "Follow Group" 371msgid "Follow Group"
372msgstr "关注群组" 372msgstr "关注群组"
373 373
374#: html.c:1961 374#: html.c:2039
375msgid "Start following this group or channel" 375msgid "Start following this group or channel"
376msgstr "开始关注这个群组或频é“" 376msgstr "开始关注这个群组或频é“"
377 377
378#: html.c:1966 html.c:3423 html.c:4791 378#: html.c:2044 html.c:3799 html.c:5235
379msgid "MUTE" 379msgid "MUTE"
380msgstr "é™éŸ³" 380msgstr "é™éŸ³"
381 381
382#: html.c:1967 382#: html.c:2045
383msgid "Block any activity from this user forever" 383msgid "Block any activity from this user forever"
384msgstr "永久å±è”½æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„任何动æ€" 384msgstr "永久å±è”½æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„任何动æ€"
385 385
386#: html.c:1972 html.c:3405 html.c:4877 386#: html.c:2050 html.c:3781 html.c:5321
387msgid "Delete" 387msgid "Delete"
388msgstr "删除" 388msgstr "删除"
389 389
390#: html.c:1972 390#: html.c:2050
391msgid "Delete this post" 391msgid "Delete this post"
392msgstr "删除这æ¡è´´å­" 392msgstr "删除这æ¡è´´å­"
393 393
394#: html.c:1975 html.c:4799 394#: html.c:2053 html.c:5243
395msgid "Hide" 395msgid "Hide"
396msgstr "éšè—" 396msgstr "éšè—"
397 397
398#: html.c:1975 398#: html.c:2053
399msgid "Hide this post and its children" 399msgid "Hide this post and its children"
400msgstr "删除这æ¡è´´å­åŠå…¶å›žå¤" 400msgstr "删除这æ¡è´´å­åŠå…¶å›žå¤"
401 401
402#: html.c:2017 402#: html.c:2095
403msgid "Edit..." 403msgid "Edit..."
404msgstr "编辑..." 404msgstr "编辑..."
405 405
406#: html.c:2039 406#: html.c:2133
407msgid "Reply..." 407msgid "Reply..."
408msgstr "回å¤..." 408msgstr "回å¤..."
409 409
410#: html.c:2090 410#: html.c:2184
411msgid "Truncated (too deep)" 411msgid "Truncated (too deep)"
412msgstr "已被截断(太深了)" 412msgstr "已被截断(太深了)"
413 413
414#: html.c:2108 414#: html.c:2202
415msgid "follows you" 415msgid "follows you"
416msgstr "关注了你" 416msgstr "关注了你"
417 417
418#: html.c:2182 418#: html.c:2276
419msgid "Pinned" 419msgid "Pinned"
420msgstr "已置顶" 420msgstr "已置顶"
421 421
422#: html.c:2190 422#: html.c:2284
423msgid "Bookmarked" 423msgid "Bookmarked"
424msgstr "已收è—" 424msgstr "已收è—"
425 425
426#: html.c:2198 426#: html.c:2292
427msgid "Poll" 427msgid "Poll"
428msgstr "投票" 428msgstr "投票"
429 429
430#: html.c:2205 430#: html.c:2299
431msgid "Voted" 431msgid "Voted"
432msgstr "已投票" 432msgstr "已投票"
433 433
434#: html.c:2214 434#: html.c:2308
435msgid "Event" 435msgid "Event"
436msgstr "事件" 436msgstr "事件"
437 437
438#: html.c:2246 html.c:2275 438#: html.c:2340 html.c:2369
439msgid "boosted" 439msgid "boosted"
440msgstr "已转å‘" 440msgstr "已转å‘"
441 441
442#: html.c:2289 442#: html.c:2383
443msgid "in reply to" 443msgid "in reply to"
444msgstr "回å¤ç»™" 444msgstr "回å¤ç»™"
445 445
446#: html.c:2345 446#: html.c:2439
447msgid " [SENSITIVE CONTENT]" 447msgid " [SENSITIVE CONTENT]"
448msgstr "ã€æ•感内容】" 448msgstr "ã€æ•感内容】"
449 449
450#: html.c:2512 450#: html.c:2796
451msgid "Vote" 451msgid "Vote"
452msgstr "投票" 452msgstr "投票"
453 453
454#: html.c:2522 454#: html.c:2806
455msgid "Closed" 455msgid "Closed"
456msgstr "已关闭" 456msgstr "已关闭"
457 457
458#: html.c:2547 458#: html.c:2831
459msgid "Closes in" 459msgid "Closes in"
460msgstr "è·ç¦»å…³é—­è¿˜æœ‰" 460msgstr "è·ç¦»å…³é—­è¿˜æœ‰"
461 461
462#: html.c:2627 462#: html.c:2911
463msgid "Video" 463msgid "Video"
464msgstr "视频" 464msgstr "视频"
465 465
466#: html.c:2642 466#: html.c:2926
467msgid "Audio" 467msgid "Audio"
468msgstr "音频" 468msgstr "音频"
469 469
470#: html.c:2670 470#: html.c:2954
471msgid "Attachment" 471msgid "Attachment"
472msgstr "附件" 472msgstr "附件"
473 473
474#: html.c:2684 474#: html.c:2968
475msgid "Alt..." 475msgid "Alt..."
476msgstr "æè¿°..." 476msgstr "æè¿°..."
477 477
478#: html.c:2697 478#: html.c:2981
479msgid "Source channel or community" 479msgid "Source channel or community"
480msgstr "æ¥æºé¢‘铿ˆ–者社群" 480msgstr "æ¥æºé¢‘铿ˆ–者社群"
481 481
482#: html.c:2791 482#: html.c:3075
483msgid "Time: " 483msgid "Time: "
484msgstr "时间:" 484msgstr "时间:"
485 485
486#: html.c:2872 486#: html.c:3156
487msgid "Older..." 487msgid "Older..."
488msgstr "æ›´æ—©çš„..." 488msgstr "æ›´æ—©çš„..."
489 489
490#: html.c:2974 490#: html.c:3258
491msgid "about this site" 491msgid "about this site"
492msgstr "关于此站点" 492msgstr "关于此站点"
493 493
494#: html.c:2976 494#: html.c:3260
495msgid "powered by " 495msgid "powered by "
496msgstr "驱动自" 496msgstr "驱动自"
497 497
498#: html.c:3041 498#: html.c:3329
499msgid "Dismiss" 499msgid "Dismiss"
500msgstr "忽略" 500msgstr "忽略"
501 501
502#: html.c:3058 502#: html.c:3346
503#, c-format 503#, c-format
504msgid "Timeline for list '%s'" 504msgid "Timeline for list '%s'"
505msgstr "列表'%s'的时间线" 505msgstr "列表'%s'的时间线"
506 506
507#: html.c:3077 html.c:4169 507#: html.c:3365 html.c:4589
508msgid "Pinned posts" 508msgid "Pinned posts"
509msgstr "置顶的贴å­" 509msgstr "置顶的贴å­"
510 510
511#: html.c:3089 html.c:4184 511#: html.c:3377 html.c:4604
512msgid "Bookmarked posts" 512msgid "Bookmarked posts"
513msgstr "æ”¶è—的贴å­" 513msgstr "æ”¶è—的贴å­"
514 514
515#: html.c:3101 html.c:4199 515#: html.c:3389 html.c:4619
516msgid "Post drafts" 516msgid "Post drafts"
517msgstr "è´´å­è‰ç¨¿" 517msgstr "è´´å­è‰ç¨¿"
518 518
519#: html.c:3177 519#: html.c:3465
520msgid "No more unseen posts" 520msgid "No more unseen posts"
521msgstr "没有更多未读贴å­äº†" 521msgstr "没有更多未读贴å­äº†"
522 522
523#: html.c:3181 html.c:3290 523#: html.c:3469 html.c:3578
524msgid "Back to top" 524msgid "Back to top"
525msgstr "返回顶部" 525msgstr "返回顶部"
526 526
527#: html.c:3243 527#: html.c:3531
528msgid "History" 528msgid "History"
529msgstr "历å²" 529msgstr "历å²"
530 530
531#: html.c:3295 html.c:3734 531#: html.c:3583 html.c:4149
532msgid "More..." 532msgid "More..."
533msgstr "更多..." 533msgstr "更多..."
534 534
535#: html.c:3391 html.c:4813 535#: html.c:3767 html.c:5257
536msgid "Unlimit" 536msgid "Unlimit"
537msgstr "å–æ¶ˆé™åˆ¶" 537msgstr "å–æ¶ˆé™åˆ¶"
538 538
539#: html.c:3392 539#: html.c:3768
540msgid "Allow announces (boosts) from this user" 540msgid "Allow announces (boosts) from this user"
541msgstr "å…许æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„通知(转å‘)" 541msgstr "å…许æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„通知(转å‘)"
542 542
543#: html.c:3395 html.c:4809 543#: html.c:3771 html.c:5253
544msgid "Limit" 544msgid "Limit"
545msgstr "é™åˆ¶" 545msgstr "é™åˆ¶"
546 546
547#: html.c:3396 547#: html.c:3772
548msgid "Block announces (boosts) from this user" 548msgid "Block announces (boosts) from this user"
549msgstr "å±è”½æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„通知(转å‘)" 549msgstr "å±è”½æ¥è‡ªè¿™ä¸ªç”¨æˆ·çš„通知(转å‘)"
550 550
551#: html.c:3405 551#: html.c:3781
552msgid "Delete this user" 552msgid "Delete this user"
553msgstr "删除此用户" 553msgstr "删除此用户"
554 554
555#: html.c:3410 html.c:4927 555#: html.c:3786 html.c:5371
556msgid "Approve" 556msgid "Approve"
557msgstr "å…许" 557msgstr "å…许"
558 558
559#: html.c:3411 559#: html.c:3787
560msgid "Approve this follow request" 560msgid "Approve this follow request"
561msgstr "å…许这个关注请求" 561msgstr "å…许这个关注请求"
562 562
563#: html.c:3414 html.c:4951 563#: html.c:3790 html.c:5395
564msgid "Discard" 564msgid "Discard"
565msgstr "丢弃" 565msgstr "丢弃"
566 566
567#: html.c:3414 567#: html.c:3790
568msgid "Discard this follow request" 568msgid "Discard this follow request"
569msgstr "丢弃这个关注请求" 569msgstr "丢弃这个关注请求"
570 570
571#: html.c:3419 html.c:4795 571#: html.c:3795 html.c:5239
572msgid "Unmute" 572msgid "Unmute"
573msgstr "å–æ¶ˆé™éŸ³" 573msgstr "å–æ¶ˆé™éŸ³"
574 574
575#: html.c:3420 575#: html.c:3796
576msgid "Stop blocking activities from this user" 576msgid "Stop blocking activities from this user"
577msgstr "åœæ­¢å±è”½æ¥è‡ªæ­¤ç”¨æˆ·çš„动æ€" 577msgstr "åœæ­¢å±è”½æ¥è‡ªæ­¤ç”¨æˆ·çš„动æ€"
578 578
579#: html.c:3424 579#: html.c:3800
580msgid "Block any activity from this user" 580msgid "Block any activity from this user"
581msgstr "å±è”½æ¥è‡ªæ­¤ç”¨æˆ·çš„任何动æ€" 581msgstr "å±è”½æ¥è‡ªæ­¤ç”¨æˆ·çš„任何动æ€"
582 582
583#: html.c:3432 583#: html.c:3808
584msgid "Direct Message..." 584msgid "Direct Message..."
585msgstr "ç§ä¿¡..." 585msgstr "ç§ä¿¡..."
586 586
587#: html.c:3467 587#: html.c:3843
588msgid "Pending follow confirmations" 588msgid "Pending follow confirmations"
589msgstr "待处ç†çš„关注确认" 589msgstr "待处ç†çš„关注确认"
590 590
591#: html.c:3471 591#: html.c:3847
592msgid "People you follow" 592msgid "People you follow"
593msgstr "你关注的人" 593msgstr "你关注的人"
594 594
595#: html.c:3472 595#: html.c:3848
596msgid "People that follow you" 596msgid "People that follow you"
597msgstr "关注你的人" 597msgstr "关注你的人"
598 598
599#: html.c:3511 599#: html.c:3887
600msgid "Clear all" 600msgid "Clear all"
601msgstr "清除全部" 601msgstr "清除全部"
602 602
603#: html.c:3571 603#: html.c:3951
604msgid "Mention" 604msgid "Mention"
605msgstr "æåŠ" 605msgstr "æåŠ"
606 606
607#: html.c:3574 607#: html.c:3954
608msgid "Finished poll" 608msgid "Finished poll"
609msgstr "ç»“æŸæŠ•ç¥¨" 609msgstr "ç»“æŸæŠ•ç¥¨"
610 610
611#: html.c:3590 611#: html.c:3979
612msgid "Follow Request" 612msgid "Follow Request"
613msgstr "关注请求" 613msgstr "关注请求"
614 614
615#: html.c:3674 615#: html.c:4089
616msgid "Context" 616msgid "Context"
617msgstr "上下文" 617msgstr "上下文"
618 618
619#: html.c:3692 619#: html.c:4107
620msgid "New" 620msgid "New"
621msgstr "新建" 621msgstr "新建"
622 622
623#: html.c:3707 623#: html.c:4122
624msgid "Already seen" 624msgid "Already seen"
625msgstr "å·²ç»çœ‹è¿‡" 625msgstr "å·²ç»çœ‹è¿‡"
626 626
627#: html.c:3722 627#: html.c:4137
628msgid "None" 628msgid "None"
629msgstr "没有" 629msgstr "没有"
630 630
631#: html.c:3994 631#: html.c:4414
632#, c-format 632#, c-format
633msgid "Search results for account %s" 633msgid "Search results for account %s"
634msgstr "账户 %s çš„æœç´¢ç»“æžœ" 634msgstr "账户 %s çš„æœç´¢ç»“æžœ"
635 635
636#: html.c:4001 636#: html.c:4421
637#, c-format 637#, c-format
638msgid "Account %s not found" 638msgid "Account %s not found"
639msgstr "没有找到账户 %s" 639msgstr "没有找到账户 %s"
640 640
641#: html.c:4032 641#: html.c:4452
642#, c-format 642#, c-format
643msgid "Search results for tag %s" 643msgid "Search results for tag %s"
644msgstr "标签 %s çš„æœç´¢ç»“æžœ" 644msgstr "标签 %s çš„æœç´¢ç»“æžœ"
645 645
646#: html.c:4032 646#: html.c:4452
647#, c-format 647#, c-format
648msgid "Nothing found for tag %s" 648msgid "Nothing found for tag %s"
649msgstr "没有找到标签'%s'的结果" 649msgstr "没有找到标签'%s'的结果"
650 650
651#: html.c:4048 651#: html.c:4468
652#, c-format 652#, c-format
653msgid "Search results for '%s' (may be more)" 653msgid "Search results for '%s' (may be more)"
654msgstr "'%s'çš„æœç´¢ç»“果(å¯èƒ½è¿˜æœ‰æ›´å¤šï¼‰" 654msgstr "'%s'çš„æœç´¢ç»“果(å¯èƒ½è¿˜æœ‰æ›´å¤šï¼‰"
655 655
656#: html.c:4051 656#: html.c:4471
657#, c-format 657#, c-format
658msgid "Search results for '%s'" 658msgid "Search results for '%s'"
659msgstr "'%s'çš„æœç´¢ç»“æžœ" 659msgstr "'%s'çš„æœç´¢ç»“æžœ"
660 660
661#: html.c:4054 661#: html.c:4474
662#, c-format 662#, c-format
663msgid "No more matches for '%s'" 663msgid "No more matches for '%s'"
664msgstr "没有更多匹é…'%s'的结果了" 664msgstr "没有更多匹é…'%s'的结果了"
665 665
666#: html.c:4056 666#: html.c:4476
667#, c-format 667#, c-format
668msgid "Nothing found for '%s'" 668msgid "Nothing found for '%s'"
669msgstr "没有找到'%s'的结果" 669msgstr "没有找到'%s'的结果"
670 670
671#: html.c:4154 671#: html.c:4574
672msgid "Showing instance timeline" 672msgid "Showing instance timeline"
673msgstr "显示实例时间线" 673msgstr "显示实例时间线"
674 674
675#: html.c:4237 675#: html.c:4657
676#, c-format 676#, c-format
677msgid "Showing timeline for list '%s'" 677msgid "Showing timeline for list '%s'"
678msgstr "显示列表'%s'的事件线" 678msgstr "显示列表'%s'的事件线"
679 679
680#: httpd.c:258 680#: httpd.c:259
681#, c-format 681#, c-format
682msgid "Search results for tag #%s" 682msgid "Search results for tag #%s"
683msgstr "标签 #%s çš„æœç´¢ç»“æžœ" 683msgstr "标签 #%s çš„æœç´¢ç»“æžœ"
684 684
685#: httpd.c:267 685#: httpd.c:268
686msgid "Recent posts by users in this instance" 686msgid "Recent posts by users in this instance"
687msgstr "此实例上的用户最近的贴å­" 687msgstr "此实例上的用户最近的贴å­"
688 688
689#: html.c:1764 689#: html.c:1842
690msgid "Blocked hashtags..." 690msgid "Blocked hashtags..."
691msgstr "å·²å±è”½çš„è¯é¢˜æ ‡ç­¾" 691msgstr "å·²å±è”½çš„è¯é¢˜æ ‡ç­¾"
692 692
693#: html.c:518 693#: html.c:574
694msgid "Optional URL to reply to" 694msgid "Optional URL to reply to"
695msgstr "å¯é€‰çš„回å¤çš„网å€" 695msgstr "å¯é€‰çš„回å¤çš„网å€"
696 696
697#: html.c:695 697#: html.c:751
698msgid "" 698msgid ""
699"Option 1...\n" 699"Option 1...\n"
700"Option 2...\n" 700"Option 2...\n"
@@ -706,94 +706,106 @@ msgstr ""
706"选项 3...\n" 706"选项 3...\n"
707"..." 707"..."
708 708
709#: html.c:1558 709#: html.c:1636
710msgid "Bot API key" 710msgid "Bot API key"
711msgstr "Bot API 密钥" 711msgstr "Bot API 密钥"
712 712
713#: html.c:1564 713#: html.c:1642
714msgid "Chat id" 714msgid "Chat id"
715msgstr "èŠå¤© ID" 715msgstr "èŠå¤© ID"
716 716
717#: html.c:1572 717#: html.c:1650
718msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)" 718msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
719msgstr "ntfy æœåС噍 - 完整网å€ï¼ˆä¾‹å¦‚:https://ntft.sh/YourTopic)" 719msgstr "ntfy æœåС噍 - 完整网å€ï¼ˆä¾‹å¦‚:https://ntft.sh/YourTopic)"
720 720
721#: html.c:1578 721#: html.c:1656
722msgid "ntfy token - if needed" 722msgid "ntfy token - if needed"
723msgstr "ntft 令牌 - 如果需è¦çš„è¯" 723msgstr "ntft 令牌 - 如果需è¦çš„è¯"
724 724
725#: html.c:3078 725#: html.c:3366
726msgid "pinned" 726msgid "pinned"
727msgstr "置顶" 727msgstr "置顶"
728 728
729#: html.c:3090 729#: html.c:3378
730msgid "bookmarks" 730msgid "bookmarks"
731msgstr "æ”¶è—夹" 731msgstr "æ”¶è—夹"
732 732
733#: html.c:3102 733#: html.c:3390
734msgid "drafts" 734msgid "drafts"
735msgstr "è‰ç¨¿" 735msgstr "è‰ç¨¿"
736 736
737#: html.c:584 737#: html.c:640
738msgid "Scheduled post..." 738msgid "Scheduled post..."
739msgstr "计划å‘布定时贴文" 739msgstr "计划å‘布定时贴文"
740 740
741msgid "Post date and time:" 741msgid "Post date and time:"
742msgstr "å‘布日期和时间" 742msgstr "å‘布日期和时间"
743 743
744#: html.c:3113 html.c:4214 744#: html.c:3401 html.c:4634
745msgid "Scheduled posts" 745msgid "Scheduled posts"
746msgstr "å·²å‘布的定时帖文" 746msgstr "å·²å‘布的定时帖文"
747 747
748#: html.c:3114 748#: html.c:3402
749msgid "scheduled posts" 749msgid "scheduled posts"
750msgstr "计划å‘布定时贴文" 750msgstr "计划å‘布定时贴文"
751 751
752#: html.c:578 752#: html.c:634
753#, c-format 753#, c-format
754msgid "Post date and time (timezone: %s):" 754msgid "Post date and time (timezone: %s):"
755msgstr "å‘布日期和时间(时区: %s)" 755msgstr "å‘布日期和时间(时区: %s)"
756 756
757#: html.c:1689 757#: html.c:1767
758msgid "Time zone:" 758msgid "Time zone:"
759msgstr "时区" 759msgstr "时区"
760 760
761#: html.c:559 761#: html.c:615
762msgid "Language:" 762msgid "Language:"
763msgstr "语言" 763msgstr "语言"
764 764
765#: html.c:1580 765#: html.c:1658
766msgid "Notify webhook:" 766msgid "Notify webhook:"
767msgstr "" 767msgstr ""
768 768
769#: html.c:1586 769#: html.c:1664
770msgid "http://example.com/webhook" 770msgid "http://example.com/webhook"
771msgstr "" 771msgstr ""
772 772
773#: html.c:1694 773#: html.c:1772
774msgid "Languages you usually post in:" 774msgid "Languages you usually post in:"
775msgstr "您通常使用的语言:" 775msgstr "您通常使用的语言:"
776 776
777#: html.c:1700 777#: html.c:1778
778msgid "en fr es de_AT" 778msgid "en fr es de_AT"
779msgstr "" 779msgstr ""
780 780
781#: html.c:460 781#: html.c:428
782msgid "Visibility: " 782msgid "Visibility: "
783msgstr "" 783msgstr ""
784 784
785#: html.c:468
786msgid "Public" 785msgid "Public"
787msgstr "" 786msgstr ""
788 787
789#: html.c:477
790msgid "Unlisted" 788msgid "Unlisted"
791msgstr "" 789msgstr ""
792 790
793#: html.c:486
794msgid "Followers-only" 791msgid "Followers-only"
795msgstr "" 792msgstr ""
796 793
797#: html.c:495
798msgid "Direct Message" 794msgid "Direct Message"
799msgstr "" 795msgstr ""
796
797#: html.c:488 html.c:2534 html.c:2559 html.c:5177
798msgid "EmojiUnreact"
799msgstr ""
800
801#: html.c:488 html.c:1440 html.c:2534 html.c:2559 html.c:5188
802msgid "EmojiReact"
803msgstr ""
804
805#: html.c:2115
806msgid "Emoji react..."
807msgstr ""
808
809#: html.c:2609
810msgid "Emoji reactions: "
811msgstr ""
diff --git a/rss.c b/rss.c
index 6e77205..dc26071 100644
--- a/rss.c
+++ b/rss.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_html.h" 5#include "xs_html.h"
@@ -10,6 +10,7 @@
10#include "xs_openssl.h" 10#include "xs_openssl.h"
11#include "xs_json.h" 11#include "xs_json.h"
12#include "xs_http.h" 12#include "xs_http.h"
13#include "xs_unicode.h"
13 14
14#include "snac.h" 15#include "snac.h"
15 16
@@ -59,7 +60,7 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
59 const char *content = xs_dict_get(msg, "content"); 60 const char *content = xs_dict_get(msg, "content");
60 const char *published = xs_dict_get(msg, "published"); 61 const char *published = xs_dict_get(msg, "published");
61 62
62 if (user && !xs_startswith(id, user->actor)) 63 if (user && !is_msg_mine(user, id))
63 continue; 64 continue;
64 65
65 if (!id || !content || !published) 66 if (!id || !content || !published)
@@ -74,7 +75,14 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
74 title = xs_regex_replace_i(title, "&[^;]+;", " "); 75 title = xs_regex_replace_i(title, "&[^;]+;", " ");
75 int i; 76 int i;
76 77
77 for (i = 0; title[i] && title[i] != '\n' && i < 50; i++); 78 for (i = 0; title[i] && title[i] != '\n' && i < 50; ) {
79 const char *p = &title[i];
80 unsigned int cp = xs_utf8_dec(&p);
81 int n = p - title;
82 if (cp == 0xfffd || n > 50)
83 break;
84 i = n;
85 }
78 86
79 if (title[i] != '\0') { 87 if (title[i] != '\0') {
80 title[i] = '\0'; 88 title[i] = '\0';
diff --git a/snac.c b/snac.c
index 31f524f..87b0d63 100644
--- a/snac.c
+++ b/snac.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#define XS_IMPLEMENTATION 4#define XS_IMPLEMENTATION
5 5
@@ -27,11 +27,15 @@
27#include "xs_html.h" 27#include "xs_html.h"
28#include "xs_po.h" 28#include "xs_po.h"
29#include "xs_webmention.h" 29#include "xs_webmention.h"
30#include "xs_list_tools.h"
30 31
31#include "snac.h" 32#include "snac.h"
32 33
33#include <sys/time.h> 34#include <sys/time.h>
34#include <sys/stat.h> 35#include <sys/stat.h>
36#include <sys/wait.h>
37#include <limits.h>
38#include <stdlib.h>
35 39
36xs_str *srv_basedir = NULL; 40xs_str *srv_basedir = NULL;
37xs_dict *srv_config = NULL; 41xs_dict *srv_config = NULL;
@@ -170,3 +174,150 @@ int check_password(const char *uid, const char *passwd, const char *hash)
170 174
171 return ret; 175 return ret;
172} 176}
177
178
179int strip_media(const char *fn)
180/* strips EXIF data from a file */
181{
182 int ret = 0;
183
184 const xs_val *v = xs_dict_get(srv_config, "strip_exif");
185
186 if (xs_type(v) == XSTYPE_TRUE) {
187 /* Heuristic: find 'user/' in the path to make it relative */
188 /* This works for ~/user/..., /var/snac/user/..., etc. */
189 const char *r_fn = strstr(fn, "user/");
190
191 if (r_fn == NULL) {
192 /* Fallback: try to strip ~/ if present */
193 if (strncmp(fn, "~/", 2) == 0)
194 r_fn = fn + 2;
195 else
196 r_fn = fn;
197 }
198
199 xs *l_fn = xs_tolower_i(xs_dup(r_fn));
200
201 /* check image extensions */
202 if (xs_endswith(l_fn, ".jpg") || xs_endswith(l_fn, ".jpeg") ||
203 xs_endswith(l_fn, ".png") || xs_endswith(l_fn, ".webp") ||
204 xs_endswith(l_fn, ".heic") || xs_endswith(l_fn, ".heif") ||
205 xs_endswith(l_fn, ".avif") || xs_endswith(l_fn, ".tiff") ||
206 xs_endswith(l_fn, ".gif") || xs_endswith(l_fn, ".bmp")) {
207
208 const char *mp = xs_dict_get(srv_config, "mogrify_path");
209 if (mp == NULL)
210 mp = "mogrify";
211
212 xs *cmd = xs_fmt("cd \"%s\" && %s -auto-orient -strip \"%s\" 2>/dev/null", srv_basedir, mp, r_fn);
213
214 ret = system(cmd);
215
216 if (ret != 0) {
217 int code = 0;
218 if (WIFEXITED(ret))
219 code = WEXITSTATUS(ret);
220
221 if (code == 127)
222 srv_log(xs_fmt("strip_media: error stripping %s. '%s' not found (exit 127). Set 'mogrify_path' in server.json.", r_fn, mp));
223 else
224 srv_log(xs_fmt("strip_media: error stripping %s %d", r_fn, ret));
225 }
226 else
227 srv_debug(1, xs_fmt("strip_media: stripped %s", r_fn));
228 }
229 else
230 /* check video extensions */
231 if (xs_endswith(l_fn, ".mp4") || xs_endswith(l_fn, ".m4v") ||
232 xs_endswith(l_fn, ".mov") || xs_endswith(l_fn, ".webm") ||
233 xs_endswith(l_fn, ".mkv") || xs_endswith(l_fn, ".avi")) {
234
235 const char *fp = xs_dict_get(srv_config, "ffmpeg_path");
236 if (fp == NULL)
237 fp = "ffmpeg";
238
239 /* ffmpeg cannot modify in-place, so we need a temp file */
240 /* we must preserve valid extension for ffmpeg to guess the format */
241 const char *ext = strrchr(r_fn, '.');
242 if (ext == NULL) ext = "";
243 xs *tmp_fn = xs_fmt("%s.tmp%s", r_fn, ext);
244
245 /* -map_metadata -1 strips all global metadata */
246 /* -c copy copies input streams without re-encoding */
247 /* we don't silence stderr so we can debug issues */
248 /* we explicitly cd to srv_basedir to ensure relative paths work */
249 xs *cmd = xs_fmt("cd \"%s\" && %s -y -i \"%s\" -map_metadata -1 -c copy \"%s\"", srv_basedir, fp, r_fn, tmp_fn);
250
251 ret = system(cmd);
252
253 if (ret != 0) {
254 int code = 0;
255 if (WIFEXITED(ret))
256 code = WEXITSTATUS(ret);
257
258 if (code == 127)
259 srv_log(xs_fmt("strip_media: error stripping %s. '%s' not found (exit 127). Set 'ffmpeg_path' in server.json.", r_fn, fp));
260 else {
261 srv_log(xs_fmt("strip_media: error stripping %s %d", r_fn, ret));
262 srv_log(xs_fmt("strip_media: command was: %s", cmd));
263 }
264
265 /* try to cleanup, just in case */
266 /* unlink needs full path too if we are not in basedir */
267 xs *full_tmp_fn = xs_fmt("%s/%s", srv_basedir, tmp_fn);
268 unlink(full_tmp_fn);
269 }
270 else {
271 /* rename tmp file to original */
272 /* use full path for source because it was created relative to basedir */
273 xs *full_tmp_fn = xs_fmt("%s/%s", srv_basedir, tmp_fn);
274
275 if (rename(full_tmp_fn, fn) == 0)
276 srv_debug(1, xs_fmt("strip_media: stripped %s", fn));
277 else
278 srv_log(xs_fmt("strip_media: error renaming %s to %s", full_tmp_fn, fn));
279 }
280 }
281 }
282
283 return ret;
284}
285
286
287int check_strip_tool(void)
288{
289 const xs_val *v = xs_dict_get(srv_config, "strip_exif");
290 int ret = 1;
291
292 if (xs_type(v) == XSTYPE_TRUE) {
293 /* check mogrify */
294 {
295 const char *mp = xs_dict_get(srv_config, "mogrify_path");
296 if (mp == NULL)
297 mp = "mogrify";
298
299 xs *cmd = xs_fmt("%s -version 2>/dev/null >/dev/null", mp);
300
301 if (system(cmd) != 0) {
302 srv_log(xs_fmt("check_strip_tool: '%s' not working", mp));
303 ret = 0;
304 }
305 }
306
307 /* check ffmpeg */
308 if (ret) {
309 const char *fp = xs_dict_get(srv_config, "ffmpeg_path");
310 if (fp == NULL)
311 fp = "ffmpeg";
312
313 xs *cmd = xs_fmt("%s -version 2>/dev/null >/dev/null", fp);
314
315 if (system(cmd) != 0) {
316 srv_log(xs_fmt("check_strip_tool: '%s' not working", fp));
317 ret = 0;
318 }
319 }
320 }
321
322 return ret;
323}
diff --git a/snac.h b/snac.h
index 91dfa27..ef79594 100644
--- a/snac.h
+++ b/snac.h
@@ -1,7 +1,7 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#define VERSION "2.85-dev" 4#define VERSION "2.89"
5 5
6#define USER_AGENT "snac/" VERSION 6#define USER_AGENT "snac/" VERSION
7 7
@@ -105,6 +105,9 @@ int validate_uid(const char *uid);
105xs_str *hash_password(const char *uid, const char *passwd, const char *nonce); 105xs_str *hash_password(const char *uid, const char *passwd, const char *nonce);
106int check_password(const char *uid, const char *passwd, const char *hash); 106int check_password(const char *uid, const char *passwd, const char *hash);
107 107
108int strip_media(const char *fn);
109int check_strip_tool(void);
110
108void srv_archive(const char *direction, const char *url, xs_dict *req, 111void srv_archive(const char *direction, const char *url, xs_dict *req,
109 const char *payload, int p_size, 112 const char *payload, int p_size,
110 int status, xs_dict *headers, 113 int status, xs_dict *headers,
@@ -146,12 +149,15 @@ void object_touch(const char *id);
146int object_admire(const char *id, const char *actor, int like); 149int object_admire(const char *id, const char *actor, int like);
147int object_unadmire(const char *id, const char *actor, int like); 150int object_unadmire(const char *id, const char *actor, int like);
148 151
152int object_emoji_react(const char *mid, const char *eid);
153int object_rm_emoji_react(const char *mid, const char *eid);
149int object_likes_len(const char *id); 154int object_likes_len(const char *id);
150int object_announces_len(const char *id); 155int object_announces_len(const char *id);
151 156
152xs_list *object_children(const char *id); 157xs_list *object_children(const char *id);
153xs_list *object_likes(const char *id); 158xs_list *object_likes(const char *id);
154xs_list *object_announces(const char *id); 159xs_list *object_announces(const char *id);
160xs_list *object_get_emoji_reacts(const char *id);
155int object_parent(const char *md5, char parent[MD5_HEX_SIZE]); 161int object_parent(const char *md5, char parent[MD5_HEX_SIZE]);
156 162
157int object_user_cache_add(snac *snac, const char *id, const char *cachedir); 163int object_user_cache_add(snac *snac, const char *id, const char *cachedir);
@@ -180,7 +186,8 @@ xs_str *user_index_fn(snac *user, const char *idx_name);
180xs_list *timeline_simple_list(snac *user, const char *idx_name, int skip, int show, int *more); 186xs_list *timeline_simple_list(snac *user, const char *idx_name, int skip, int show, int *more);
181xs_list *timeline_list(snac *snac, const char *idx_name, int skip, int show, int *more); 187xs_list *timeline_list(snac *snac, const char *idx_name, int skip, int show, int *more);
182int timeline_add(snac *snac, const char *id, const xs_dict *o_msg); 188int timeline_add(snac *snac, const char *id, const xs_dict *o_msg);
183int timeline_admire(snac *snac, const char *id, const char *admirer, int like); 189int timeline_admire(snac *snac, const char *id, const char *admirer, int like, const xs_dict *msg);
190int timeline_emoji_react(const char *atto, const char *id, const xs_dict *o_msg);
184 191
185xs_list *timeline_top_level(snac *snac, const xs_list *list); 192xs_list *timeline_top_level(snac *snac, const xs_list *list);
186void timeline_add_mark(snac *user); 193void timeline_add_mark(snac *user);
@@ -201,6 +208,8 @@ void unmute(snac *snac, const char *actor);
201int is_muted(snac *snac, const char *actor); 208int is_muted(snac *snac, const char *actor);
202xs_list *muted_list(snac *user); 209xs_list *muted_list(snac *user);
203 210
211xs_str *emoji_reacted(snac *user, const char *id);
212
204int is_bookmarked(snac *user, const char *id); 213int is_bookmarked(snac *user, const char *id);
205int bookmark(snac *user, const char *id); 214int bookmark(snac *user, const char *id);
206int unbookmark(snac *user, const char *id); 215int unbookmark(snac *user, const char *id);
@@ -358,6 +367,8 @@ xs_list *get_attachments(const xs_dict *msg);
358 367
359xs_dict *msg_admiration(snac *snac, const char *object, const char *type); 368xs_dict *msg_admiration(snac *snac, const char *object, const char *type);
360xs_dict *msg_repulsion(snac *user, const char *id, const char *type); 369xs_dict *msg_repulsion(snac *user, const char *id, const char *type);
370xs_dict *msg_emoji_init(snac *user, const char *mid, const char *eid);
371xs_dict *msg_emoji_unreact(snac *user, const char *id, const char *type);
361xs_dict *msg_create(snac *snac, const xs_dict *object); 372xs_dict *msg_create(snac *snac, const xs_dict *object);
362xs_dict *msg_follow(snac *snac, const char *actor); 373xs_dict *msg_follow(snac *snac, const char *actor);
363 374
@@ -388,6 +399,7 @@ int send_to_inbox(snac *snac, const xs_str *inbox, const xs_dict *msg,
388xs_str *get_actor_inbox(const char *actor, int shared); 399xs_str *get_actor_inbox(const char *actor, int shared);
389int send_to_actor(snac *snac, const char *actor, const xs_dict *msg, 400int send_to_actor(snac *snac, const char *actor, const xs_dict *msg,
390 xs_val **payload, int *p_size, int timeout); 401 xs_val **payload, int *p_size, int timeout);
402int is_msg_mine(snac *user, const char *id);
391int is_msg_public(const xs_dict *msg); 403int is_msg_public(const xs_dict *msg);
392int is_msg_from_private_user(const xs_dict *msg); 404int is_msg_from_private_user(const xs_dict *msg);
393int is_msg_for_me(snac *snac, const xs_dict *msg); 405int is_msg_for_me(snac *snac, const xs_dict *msg);
@@ -403,6 +415,7 @@ int activitypub_post_handler(const xs_dict *req, const char *q_path,
403 char **body, int *b_size, char **ctype); 415 char **body, int *b_size, char **ctype);
404 416
405xs_dict *emojis(void); 417xs_dict *emojis(void);
418xs_dict *emojis_rm_categories(void);
406xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy); 419xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy);
407xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag); 420xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag);
408xs_str *sanitize(const char *content); 421xs_str *sanitize(const char *content);
@@ -410,7 +423,7 @@ xs_str *encode_html(const char *str);
410 423
411xs_str *html_timeline(snac *user, const xs_list *list, int read_only, 424xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
412 int skip, int show, int show_more, 425 int skip, int show, int show_more,
413 const char *title, const char *page, int utl, const char *error); 426 const char *title, const char *page, int utl, const char *error, int terse);
414 427
415int html_get_handler(const xs_dict *req, const char *q_path, 428int html_get_handler(const xs_dict *req, const char *q_path,
416 char **body, int *b_size, char **ctype, 429 char **body, int *b_size, char **ctype,
@@ -485,3 +498,5 @@ void rss_to_timeline(snac *user, const char *url);
485void rss_poll_hashtags(void); 498void rss_poll_hashtags(void);
486 499
487void data_fsck(void); 500void data_fsck(void);
501
502xs_list *user_top_ten(snac *user, int count);
diff --git a/upgrade.c b/upgrade.c
index 87ddfc8..07e9c51 100644
--- a/upgrade.c
+++ b/upgrade.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
@@ -213,7 +213,7 @@ int snac_upgrade(xs_str **error)
213 object_add_ow(id, o); 213 object_add_ow(id, o);
214 214
215 /* if it's from us, add to public */ 215 /* if it's from us, add to public */
216 if (xs_startswith(id, snac.actor)) { 216 if (is_msg_mine(&snac, id)) {
217 const xs_list *p; 217 const xs_list *p;
218 const char *v; 218 const char *v;
219 int c; 219 int c;
diff --git a/utils.c b/utils.c
index b76c0f8..9f4e1b7 100644
--- a/utils.c
+++ b/utils.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_io.h" 5#include "xs_io.h"
@@ -11,6 +11,8 @@
11#include "xs_curl.h" 11#include "xs_curl.h"
12#include "xs_regex.h" 12#include "xs_regex.h"
13#include "xs_http.h" 13#include "xs_http.h"
14#include "xs_list_tools.h"
15#include "xs_set.h"
14 16
15#include "snac.h" 17#include "snac.h"
16 18
@@ -78,11 +80,15 @@ static const char * const default_css =
78 ".snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px;\n" 80 ".snac-list-of-lists li { display: inline; border: 1px solid #a0a0a0; border-radius: 25px;\n"
79 " margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; }\n" 81 " margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; }\n"
80 ".snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; }\n" 82 ".snac-no-more-unseen-posts { border-top: 1px solid #a0a0a0; border-bottom: 1px solid #a0a0a0; padding: 0.5em 0; margin: 1em 0; }\n"
83 ".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"
84 ".snac-reaction-image { max-width: 100%; max-height: 100%; }\n"
85 ".snac-reaction-div { border-left: darkgray; border-left-style: solid; margin-bottom: .3em; padding-left: .3em; border-left-width: 2px; }\n"
81 "@media (prefers-color-scheme: dark) { \n" 86 "@media (prefers-color-scheme: dark) { \n"
82 " body, input, textarea { background-color: #000; color: #fff; }\n" 87 " body, input, textarea { background-color: #000; color: #fff; }\n"
83 " a { color: #7799dd }\n" 88 " a { color: #7799dd }\n"
84 " a:visited { color: #aa99dd }\n" 89 " a:visited { color: #aa99dd }\n"
85 "}\n" 90 "}\n"
91 "select { max-width: 40%; }\n"
86; 92;
87 93
88const char *snac_blurb = 94const char *snac_blurb =
@@ -999,6 +1005,76 @@ void import_csv(snac *user)
999 snac_log(user, xs_fmt("Cannot open file %s", fn)); 1005 snac_log(user, xs_fmt("Cannot open file %s", fn));
1000} 1006}
1001 1007
1008
1009static int top_ten_sort(const void *v1, const void *v2)
1010{
1011 const xs_list *l1 = *(const xs_list **)v1;
1012 const xs_list *l2 = *(const xs_list **)v2;
1013
1014 const char *c1 = xs_list_get(l1, 3);
1015 const char *c2 = xs_list_get(l2, 3);
1016
1017 return xs_cmp(c2, c1);
1018}
1019
1020
1021xs_list *user_top_ten(snac *user, int count)
1022/* returns the top ten more popular posts by a user */
1023{
1024 xs *idx = xs_fmt("%s/private.idx", user->basedir);
1025 xs *list = index_list(idx, XS_ALL);
1026 xs *u_list = xs_list_new();
1027 xs_set u;
1028
1029 xs_set_init(&u);
1030
1031 const char *md5;
1032
1033 xs_list_foreach(list, md5) {
1034 xs *obj = NULL;
1035
1036 if (!valid_status(object_get_by_md5(md5, &obj)))
1037 continue;
1038
1039 const char *id = xs_dict_get_def(obj, "id", "-");
1040
1041 if (!is_msg_mine(user, id))
1042 continue;
1043
1044 if (xs_set_add(&u, id) != 1)
1045 continue;
1046
1047 /* get metrics */
1048 int ls = object_likes_len(id);
1049 int as = object_announces_len(id);
1050
1051 /* build the entry and convert to list */
1052 xs *s = xs_fmt("%s\t%d\t%d\t%010d", id, ls, as, ls + as);
1053 xs *l = xs_split(s, "\t");
1054
1055 u_list = xs_list_append(u_list, l);
1056 }
1057
1058 /* sort by the sum of likes and boosts */
1059 xs *s_list = xs_list_sort(u_list, top_ten_sort);
1060
1061 xs_list *r = xs_list_new();
1062 const xs_list *i;
1063
1064 xs_list_foreach(s_list, i) {
1065 r = xs_list_append(r, i);
1066
1067 if (--count <= 0)
1068 break;
1069 }
1070
1071 xs_set_free(&u);
1072
1073 return r;
1074}
1075
1076
1077
1002static const struct { 1078static const struct {
1003 const char *proto; 1079 const char *proto;
1004 unsigned short default_port; 1080 unsigned short default_port;
diff --git a/webfinger.c b/webfinger.c
index 1ce5e76..264cb85 100644
--- a/webfinger.c
+++ b/webfinger.c
@@ -1,5 +1,5 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
3 3
4#include "xs.h" 4#include "xs.h"
5#include "xs_json.h" 5#include "xs_json.h"
diff --git a/xs.h b/xs.h
index 5f2e6aa..11f0722 100644
--- a/xs.h
+++ b/xs.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_H 3#ifndef _XS_H
4 4
diff --git a/xs_curl.h b/xs_curl.h
index feb23e0..4b510ac 100644
--- a/xs_curl.h
+++ b/xs_curl.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_CURL_H 3#ifndef _XS_CURL_H
4 4
diff --git a/xs_fcgi.h b/xs_fcgi.h
index b3cb892..0af6fcc 100644
--- a/xs_fcgi.h
+++ b/xs_fcgi.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3/* 3/*
4 This is an intentionally-dead-simple FastCGI implementation; 4 This is an intentionally-dead-simple FastCGI implementation;
diff --git a/xs_glob.h b/xs_glob.h
index 6d87ca1..c38ec9a 100644
--- a/xs_glob.h
+++ b/xs_glob.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_GLOB_H 3#ifndef _XS_GLOB_H
4 4
diff --git a/xs_hex.h b/xs_hex.h
index 2507d5d..91c528e 100644
--- a/xs_hex.h
+++ b/xs_hex.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_HEX_H 3#ifndef _XS_HEX_H
4 4
diff --git a/xs_html.h b/xs_html.h
index 29886c6..ab77499 100644
--- a/xs_html.h
+++ b/xs_html.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_HTML_H 3#ifndef _XS_HTML_H
4 4
diff --git a/xs_http.h b/xs_http.h
index f2fd296..b9b5f80 100644
--- a/xs_http.h
+++ b/xs_http.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_HTTP_H 3#ifndef _XS_HTTP_H
4 4
diff --git a/xs_httpd.h b/xs_httpd.h
index 9be51e6..4a4689c 100644
--- a/xs_httpd.h
+++ b/xs_httpd.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_HTTPD_H 3#ifndef _XS_HTTPD_H
4 4
diff --git a/xs_io.h b/xs_io.h
index 9c5018e..9a03e5b 100644
--- a/xs_io.h
+++ b/xs_io.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_IO_H 3#ifndef _XS_IO_H
4 4
diff --git a/xs_json.h b/xs_json.h
index 07800fa..a9577ee 100644
--- a/xs_json.h
+++ b/xs_json.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_JSON_H 3#ifndef _XS_JSON_H
4 4
@@ -28,6 +28,8 @@ int xs_json_load_object(FILE *f, int maxdepth, xs_dict **d);
28 28
29/** IMPLEMENTATION **/ 29/** IMPLEMENTATION **/
30 30
31#include "xs_unicode.h"
32
31/** JSON dumps **/ 33/** JSON dumps **/
32 34
33static void _xs_json_dump_str(const char *data, FILE *f) 35static void _xs_json_dump_str(const char *data, FILE *f)
diff --git a/xs_list_tools.h b/xs_list_tools.h
new file mode 100644
index 0000000..33d4b87
--- /dev/null
+++ b/xs_list_tools.h
@@ -0,0 +1,169 @@
1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2
3#ifndef _XS_LIST_TOOLS_H
4
5#define _XS_LIST_TOOLS_H
6
7 xs_list *xs_list_insert_sorted(xs_list *list, const xs_val *nv);
8 xs_list *xs_list_reverse(const xs_list *l);
9 xs_val **xs_list_to_array(const xs_list *l, int *len);
10 int xs_list_sort_cmp(const void *p1, const void *p2);
11 int xs_list_sort_inv_cmp(const void *p1, const void *p2);
12 int xs_list_sort_dict_cmp(const char *field, const void *p1, const void *p2);
13 xs_list *xs_list_sort(const xs_list *l, int (*cmp)(const void *, const void *));
14 xs_list *xs_list_shuffle(const xs_list *l);
15
16#ifdef XS_IMPLEMENTATION
17
18#include "xs_random.h"
19
20xs_list *xs_list_insert_sorted(xs_list *list, const xs_val *nv)
21/* inserts a string in the list in its ordered position */
22{
23 XS_ASSERT_TYPE(list, XSTYPE_LIST);
24
25 int offset = xs_size(list);
26
27 const xs_val *v;
28 xs_list_foreach(list, v) {
29 /* if this element is greater or equal, insert here */
30 if (xs_cmp(v, nv) >= 0) {
31 offset = v - list;
32 break;
33 }
34 }
35
36 return _xs_list_write_litem(list, offset - 1, nv, xs_size(nv));
37}
38
39
40xs_list *xs_list_reverse(const xs_list *l)
41/* creates a new list as a reverse version of l */
42{
43 xs_list *n = xs_dup(l);
44 const xs_val *v;
45
46 /* move to one byte before the EOM */
47 char *p = n + xs_size(n) - 1;
48
49 xs_list_foreach(l, v) {
50 /* size of v, plus the LITEM */
51 int z = xs_size(v) + 1;
52
53 p -= z;
54
55 /* copy v, including its LITEM */
56 memcpy(p, v - 1, z);
57 }
58
59 return n;
60}
61
62
63xs_val **xs_list_to_array(const xs_list *l, int *len)
64/* converts a list to an array of values */
65/* must be freed after use */
66{
67 *len = xs_list_len(l);
68 xs_val **a = xs_realloc(NULL, *len * sizeof(xs_val *));
69 const xs_val *v;
70 int n = 0;
71
72 xs_list_foreach(l, v)
73 a[n++] = (xs_val *)v;
74
75 return a;
76}
77
78
79int xs_list_sort_cmp(const void *p1, const void *p2)
80/* default list sorting function */
81{
82 const xs_val *v1 = *(xs_val **)p1;
83 const xs_val *v2 = *(xs_val **)p2;
84
85 return xs_cmp(v1, v2);
86}
87
88
89int xs_list_sort_inv_cmp(const void *p1, const void *p2)
90/* default list inverse sorting function */
91{
92 const xs_val *v1 = *(xs_val **)p1;
93 const xs_val *v2 = *(xs_val **)p2;
94
95 return xs_cmp(v2, v1);
96}
97
98
99int xs_list_sort_dict_cmp(const char *field, const void *p1, const void *p2)
100/* compare sorting function for a field an array of dicts */
101{
102 const xs_dict *d1 = *(xs_val **)p1;
103 const xs_dict *d2 = *(xs_val **)p2;
104
105 if (xs_type(d1) != XSTYPE_DICT || xs_type(d2) != XSTYPE_DICT)
106 return 0;
107
108 return xs_cmp(xs_dict_get_def(d1, field, ""),
109 xs_dict_get_def(d2, field, ""));
110}
111
112
113xs_list *xs_list_sort(const xs_list *l, int (*cmp)(const void *, const void *))
114/* returns a sorted copy of l. cmp can be null for standard sorting */
115{
116 int sz;
117 xs_val **a = xs_list_to_array(l, &sz);
118 xs_list *nl = xs_dup(l);
119 char *p = nl + 1 + _XS_TYPE_SIZE;
120
121 /* sort the array */
122 qsort(a, sz, sizeof(xs_val *), cmp ? cmp : xs_list_sort_cmp);
123
124 /* transfer the sorted list over the copy */
125 for (int n = 0; n < sz; n++) {
126 /* get the litem */
127 const char *e = a[n] - 1;
128 int z = xs_size(e);
129
130 memcpy(p, e, z);
131 p += z;
132 }
133
134 xs_free(a);
135
136 return nl;
137}
138
139
140xs_list *xs_list_shuffle(const xs_list *l)
141/* returns a shuffled list */
142{
143 int sz;
144 xs_val **a = xs_list_to_array(l, &sz);
145 xs_list *nl = xs_list_new();
146 unsigned int seed = 0;
147
148 xs_rnd_buf(&seed, sizeof(seed));
149
150 /* shuffle */
151 for (int n = sz - 1; n > 0; n--) {
152 int m = xs_rnd_int32_d(&seed) % n;
153 void *p = a[n];
154 a[n] = a[m];
155 a[m] = p;
156 }
157
158 for (int n = 0; n < sz; n++)
159 nl = xs_list_append(nl, a[n]);
160
161 xs_free(a);
162
163 return nl;
164}
165
166
167#endif /* XS_IMPLEMENTATION */
168
169#endif /* XS_LIST_TOOLS_H */
diff --git a/xs_match.h b/xs_match.h
index 76c1bf3..21830e8 100644
--- a/xs_match.h
+++ b/xs_match.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_MATCH_H 3#ifndef _XS_MATCH_H
4 4
diff --git a/xs_mime.h b/xs_mime.h
index 0146385..6709ec6 100644
--- a/xs_mime.h
+++ b/xs_mime.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_MIME_H 3#ifndef _XS_MIME_H
4 4
diff --git a/xs_openssl.h b/xs_openssl.h
index f215bcc..64b59dd 100644
--- a/xs_openssl.h
+++ b/xs_openssl.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_OPENSSL_H 3#ifndef _XS_OPENSSL_H
4 4
diff --git a/xs_po.h b/xs_po.h
index c6feec9..c1ad2c9 100644
--- a/xs_po.h
+++ b/xs_po.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_PO_H 3#ifndef _XS_PO_H
4 4
diff --git a/xs_random.h b/xs_random.h
index f936099..357f9cb 100644
--- a/xs_random.h
+++ b/xs_random.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_RANDOM_H 3#ifndef _XS_RANDOM_H
4 4
diff --git a/xs_regex.h b/xs_regex.h
index 1e157d2..5ccefda 100644
--- a/xs_regex.h
+++ b/xs_regex.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_REGEX_H 3#ifndef _XS_REGEX_H
4 4
diff --git a/xs_set.h b/xs_set.h
index 8946e42..ae67cc7 100644
--- a/xs_set.h
+++ b/xs_set.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_SET_H 3#ifndef _XS_SET_H
4 4
diff --git a/xs_socket.h b/xs_socket.h
index 7bf5298..70bfe98 100644
--- a/xs_socket.h
+++ b/xs_socket.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_SOCKET_H 3#ifndef _XS_SOCKET_H
4 4
diff --git a/xs_time.h b/xs_time.h
index 507d238..46b35a1 100644
--- a/xs_time.h
+++ b/xs_time.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_TIME_H 3#ifndef _XS_TIME_H
4 4
diff --git a/xs_unicode.h b/xs_unicode.h
index 67b3827..7686dcd 100644
--- a/xs_unicode.h
+++ b/xs_unicode.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_UNICODE_H 3#ifndef _XS_UNICODE_H
4 4
@@ -22,6 +22,7 @@
22 int xs_unicode_nfc(unsigned int base, unsigned int diac, unsigned int *cpoint); 22 int xs_unicode_nfc(unsigned int base, unsigned int diac, unsigned int *cpoint);
23 int xs_unicode_is_alpha(unsigned int cpoint); 23 int xs_unicode_is_alpha(unsigned int cpoint);
24 int xs_unicode_is_right_to_left(unsigned int cpoint); 24 int xs_unicode_is_right_to_left(unsigned int cpoint);
25 int xs_is_emoji(unsigned int cpoint);
25 26
26#ifdef _XS_H 27#ifdef _XS_H
27 xs_str *xs_utf8_insert(xs_str *str, unsigned int cpoint, int *offset); 28 xs_str *xs_utf8_insert(xs_str *str, unsigned int cpoint, int *offset);
@@ -134,6 +135,12 @@ static unsigned int xs_unicode_width_table[] = {
134 0x20000, 0x2fffd, 2 /* more CJK */ 135 0x20000, 0x2fffd, 2 /* more CJK */
135}; 136};
136 137
138/* magic number from https://en.wikipedia.org/wiki/Emoji#Unicode_blocks */
139int xs_is_emoji(unsigned int cpoint) {
140/* returns wether the input is an utf8 emoji */
141 return cpoint > 0x00A9 && cpoint < 0x1ffff;
142}
143
137int xs_unicode_width(unsigned int cpoint) 144int xs_unicode_width(unsigned int cpoint)
138/* returns the width in columns of a Unicode codepoint (somewhat simplified) */ 145/* returns the width in columns of a Unicode codepoint (somewhat simplified) */
139{ 146{
diff --git a/xs_unix_socket.h b/xs_unix_socket.h
index 462a5b3..1ef7d39 100644
--- a/xs_unix_socket.h
+++ b/xs_unix_socket.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_UNIX_SOCKET_H 3#ifndef _XS_UNIX_SOCKET_H
4 4
diff --git a/xs_url.h b/xs_url.h
index 7bdff49..56d6d9d 100644
--- a/xs_url.h
+++ b/xs_url.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2022 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_URL_H 3#ifndef _XS_URL_H
4 4
@@ -6,6 +6,7 @@
6 6
7xs_str *xs_url_dec(const char *str); 7xs_str *xs_url_dec(const char *str);
8xs_str *xs_url_enc(const char *str); 8xs_str *xs_url_enc(const char *str);
9xs_str *xs_url_dec_emoji(const char *str);
9xs_dict *xs_url_vars(const char *str); 10xs_dict *xs_url_vars(const char *str);
10xs_dict *xs_multipart_form_data(const char *payload, int p_size, const char *header); 11xs_dict *xs_multipart_form_data(const char *payload, int p_size, const char *header);
11 12
@@ -79,6 +80,38 @@ xs_str *xs_url_dec(const char *str)
79} 80}
80 81
81 82
83xs_str *xs_url_dec_emoji(const char *str)
84/* decodes an URL, returns NULL if not every char is an encoded hex */
85{
86 xs_str *s = xs_str_new(NULL);
87
88 while (*str) {
89 if (!xs_is_string(str))
90 break;
91
92 if (*str == '%') {
93 unsigned int i;
94
95 if (sscanf(str + 1, "%02x", &i) == 1) {
96 unsigned char uc = i;
97
98 if (!xs_is_string((char *)&uc))
99 break;
100
101 s = xs_append_m(s, (char *)&uc, 1);
102 str += 2;
103 }
104 }
105 else
106 return NULL;
107
108 str++;
109 }
110
111 return s;
112}
113
114
82xs_str *xs_url_enc(const char *str) 115xs_str *xs_url_enc(const char *str)
83/* URL-encodes a string (RFC 3986) */ 116/* URL-encodes a string (RFC 3986) */
84{ 117{
diff --git a/xs_version.h b/xs_version.h
index 34a7a45..92a865e 100644
--- a/xs_version.h
+++ b/xs_version.h
@@ -1 +1 @@
/* 0a8b987d7bb945fe7844411727d03ac73f417455 2025-10-14T05:21:05+02:00 */ /* 270f9376eabd4f8e0ed3ae22a1f8eb6e06ea8b8b 2026-01-10T20:39:12+01:00 */
diff --git a/xs_webmention.h b/xs_webmention.h
index f9578b4..035b3a6 100644
--- a/xs_webmention.h
+++ b/xs_webmention.h
@@ -1,4 +1,4 @@
1/* copyright (c) 2025 grunfink et al. / MIT license */ 1/* copyright (c) 2025 - 2026 grunfink et al. / MIT license */
2 2
3#ifndef _XS_WEBMENTION_H 3#ifndef _XS_WEBMENTION_H
4 4