commit 398b733b2c0ff4c96f4de9731a864373842e86d6
parent beb500360c32ee459201a087dbed57a447b1f0db
Author: shtrophic <christoph@liebender.dev>
Date: Sat, 8 Mar 2025 22:29:50 +0100
Merge remote-tracking branch 'upstream/master' into curl-smtp
Diffstat:
M | Makefile | | | 1 | + |
M | RELEASE_NOTES.md | | | 30 | ++++++++++++++++++++++++++++++ |
M | activitypub.c | | | 220 | +++++++++++++++++++++++++++++++++++++++++++++---------------------------------- |
M | doc/snac.1 | | | 17 | ++++++++++++++++- |
M | doc/snac.8 | | | 29 | +++++++++++++++++++++++++++++ |
M | html.c | | | 111 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- |
M | main.c | | | 11 | +---------- |
M | mastoapi.c | | | 4 | ++-- |
A | po/cs.po | | | 733 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/de.po | | | 736 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | po/en.po | | | 372 | ++++++++++++++++++++++++++++++++++++++++++++----------------------------------- |
A | po/es.po | | | 735 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/es_AR.po | | | 735 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/es_UY.po | | | 735 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/fi.po | | | 733 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/fr.po | | | 734 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/pt_BR.po | | | 734 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/ru.po | | | 744 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | po/zh.po | | | 737 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | snac.h | | | 4 | ++-- |
20 files changed, 7860 insertions(+), 295 deletions(-)
diff --git a/Makefile b/Makefile
@@ -42,6 +42,7 @@ update-po:
mkdir -p po
[ -f "po/en.po" ] || xgettext -o po/en.po --language=C --keyword=L --from-code=utf-8 *.c
for a in po/*.po ; do \
+ sed -i -e '/^#:/d' $$a ; \
xgettext --omit-header -j -o $$a --language=C --keyword=L --from-code=utf-8 *.c ; \
done
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
@@ -1,5 +1,35 @@
# Release Notes
+## UNRELEASED
+
+Added Spanish (default, Argentina and Uruguay) translation (contributed by gnemmi).
+
+Added Czech translation (contributed by pmjv).
+
+Added Brazilian Portuguese translation (contributed by daltux).
+
+Added Finnish translation (contributed by inz).
+
+Added French translation (contributed by Popolon).
+
+Added Russian translation (contributed by sn4il).
+
+Added Chinese translation (contributed by mistivia).
+
+Added German translation (contributed by zen).
+
+## 2.73
+
+Added support for customizing and translating the web UI language via simple `.po` files. For more information on how to install language files or create new ones, please see `snac(8)` (the administrator manual).
+
+New user support for blocking hashtags from the web UI.
+
+The `Content-Security-Policy` HTTP header is now always sent to disable any JavaScript, instead of just being suggested in the documentation.
+
+Image attachments in SVG format are now disabled by default; you can enable them back by setting the `enable_svg` value to `true` in `server.json`.
+
+Several fixes (contributed by inz).
+
## 2.72
Each post can have more than one attachment from the web UI. The maximum number can be configured in `server.json` via the `max_attachments` value (default: 4).
diff --git a/activitypub.c b/activitypub.c
@@ -329,6 +329,52 @@ xs_list *get_attachments(const xs_dict *msg)
}
+int hashtag_in_msg(const xs_list *hashtags, const xs_dict *msg)
+/* returns 1 if the message contains any of the list of hashtags */
+{
+ if (xs_is_list(hashtags) && xs_is_dict(msg)) {
+ const xs_list *tags_in_msg = xs_dict_get(msg, "tag");
+
+ if (xs_is_list(tags_in_msg)) {
+ const xs_dict *te;
+
+ /* iterate the tags in the message */
+ xs_list_foreach(tags_in_msg, te) {
+ if (xs_is_dict(te)) {
+ const char *type = xs_dict_get(te, "type");
+ const char *name = xs_dict_get(te, "name");
+
+ if (xs_is_string(type) && xs_is_string(name)) {
+ if (strcmp(type, "Hashtag") == 0) {
+ xs *lc_name = xs_utf8_to_lower(name);
+
+ if (xs_list_in(hashtags, lc_name) != -1)
+ return 1;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+int followed_hashtag_check(snac *user, const xs_dict *msg)
+/* returns 1 if this message contains a hashtag followed by me */
+{
+ return hashtag_in_msg(xs_dict_get(user->config, "followed_hashtags"), msg);
+}
+
+
+int blocked_hashtag_check(snac *user, const xs_dict *msg)
+/* returns 1 if this message contains a hashtag blocked by me */
+{
+ return hashtag_in_msg(xs_dict_get(user->config, "blocked_hashtags"), msg);
+}
+
+
int timeline_request(snac *snac, const char **id, xs_str **wrk, int level)
/* ensures that an entry and its ancestors are in the timeline */
{
@@ -344,68 +390,71 @@ int timeline_request(snac *snac, const char **id, xs_str **wrk, int level)
}
/* is the object already there? */
- if (!valid_status(object_get(*id, &msg))) {
+ if (!valid_status((status = object_get(*id, &msg)))) {
/* no; download it */
status = activitypub_request(snac, *id, &msg);
+ }
- if (valid_status(status)) {
- const xs_dict *object = msg;
- const char *type = xs_dict_get(object, "type");
+ if (valid_status(status)) {
+ const xs_dict *object = msg;
+ const char *type = xs_dict_get(object, "type");
- /* get the id again from the object, as it may be different */
- const char *nid = xs_dict_get(object, "id");
+ /* get the id again from the object, as it may be different */
+ const char *nid = xs_dict_get(object, "id");
- if (xs_type(nid) != XSTYPE_STRING)
- return 0;
+ if (xs_type(nid) != XSTYPE_STRING)
+ return 0;
- if (wrk && strcmp(nid, *id) != 0) {
- snac_debug(snac, 1,
- xs_fmt("timeline_request canonical id for %s is %s", *id, nid));
+ if (wrk && strcmp(nid, *id) != 0) {
+ snac_debug(snac, 1,
+ xs_fmt("timeline_request canonical id for %s is %s", *id, nid));
- *wrk = xs_dup(nid);
- *id = *wrk;
- }
+ *wrk = xs_dup(nid);
+ *id = *wrk;
+ }
- if (xs_is_null(type))
- type = "(null)";
+ if (xs_is_null(type))
+ type = "(null)";
- srv_debug(2, xs_fmt("timeline_request type %s '%s'", nid, type));
+ srv_debug(2, xs_fmt("timeline_request type %s '%s'", nid, type));
- if (strcmp(type, "Create") == 0) {
- /* some software like lemmy nest Announce + Create + Note */
- if (!xs_is_null(object = xs_dict_get(object, "object"))) {
- type = xs_dict_get(object, "type");
- nid = xs_dict_get(object, "id");
- }
- else
- type = "(null)";
+ if (strcmp(type, "Create") == 0) {
+ /* some software like lemmy nest Announce + Create + Note */
+ if (!xs_is_null(object = xs_dict_get(object, "object"))) {
+ type = xs_dict_get(object, "type");
+ nid = xs_dict_get(object, "id");
}
+ else
+ type = "(null)";
+ }
- if (xs_match(type, POSTLIKE_OBJECT_TYPE)) {
- if (content_match("filter_reject.txt", object))
- snac_log(snac, xs_fmt("timeline_request rejected by content %s", nid));
- else {
- const char *actor = get_atto(object);
-
- if (!xs_is_null(actor)) {
- /* request (and drop) the actor for this entry */
- if (!valid_status(actor_request(snac, actor, NULL))) {
- /* failed? retry later */
- enqueue_actor_refresh(snac, actor, 60);
- }
+ if (xs_match(type, POSTLIKE_OBJECT_TYPE)) {
+ if (content_match("filter_reject.txt", object))
+ snac_log(snac, xs_fmt("timeline_request rejected by content %s", nid));
+ else
+ if (blocked_hashtag_check(snac, object))
+ snac_log(snac, xs_fmt("timeline_request rejected by hashtag %s", nid));
+ else {
+ const char *actor = get_atto(object);
- /* does it have an ancestor? */
- const char *in_reply_to = get_in_reply_to(object);
+ if (!xs_is_null(actor)) {
+ /* request (and drop) the actor for this entry */
+ if (!valid_status(actor_request(snac, actor, NULL))) {
+ /* failed? retry later */
+ enqueue_actor_refresh(snac, actor, 60);
+ }
- /* store */
- timeline_add(snac, nid, object);
+ /* does it have an ancestor? */
+ const char *in_reply_to = get_in_reply_to(object);
- /* redistribute to lists for this user */
- list_distribute(snac, actor, object);
+ /* store */
+ timeline_add(snac, nid, object);
- /* recurse! */
- timeline_request(snac, &in_reply_to, NULL, level + 1);
- }
+ /* redistribute to lists for this user */
+ list_distribute(snac, actor, object);
+
+ /* recurse! */
+ timeline_request(snac, &in_reply_to, NULL, level + 1);
}
}
}
@@ -587,40 +636,6 @@ int is_msg_from_private_user(const xs_dict *msg)
}
-int followed_hashtag_check(snac *user, const xs_dict *msg)
-/* returns true if this message contains a hashtag followed by me */
-{
- const xs_list *fw_tags = xs_dict_get(user->config, "followed_hashtags");
-
- if (xs_is_list(fw_tags)) {
- const xs_list *tags_in_msg = xs_dict_get(msg, "tag");
-
- if (xs_is_list(tags_in_msg)) {
- const xs_dict *te;
-
- /* iterate the tags in the message */
- xs_list_foreach(tags_in_msg, te) {
- if (xs_is_dict(te)) {
- const char *type = xs_dict_get(te, "type");
- const char *name = xs_dict_get(te, "name");
-
- if (xs_is_string(type) && xs_is_string(name)) {
- if (strcmp(type, "Hashtag") == 0) {
- xs *lc_name = xs_utf8_to_lower(name);
-
- if (xs_list_in(fw_tags, lc_name) != -1)
- return 1;
- }
- }
- }
- }
- }
- }
-
- return 0;
-}
-
-
void followed_hashtag_distribute(const xs_dict *msg)
/* distribute this post to all users following the included hashtags */
{
@@ -665,31 +680,36 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
if (xs_match(type, "Like|Announce|EmojiReact")) {
const char *object = xs_dict_get(c_msg, "object");
+ xs *obj = NULL;
- if (xs_is_dict(object))
+ if (xs_is_dict(object)) {
+ obj = xs_dup(object);
object = xs_dict_get(object, "id");
+ }
/* bad object id? reject */
if (!xs_is_string(object))
return 0;
+ /* try to get the object */
+ if (!xs_is_dict(obj))
+ object_get(object, &obj);
+
/* if it's about one of our posts, accept it */
if (xs_startswith(object, snac->actor))
return 2;
+ /* blocked by hashtag? */
+ if (blocked_hashtag_check(snac, obj))
+ return 0;
+
/* if it's by someone we follow, accept it */
if (following_check(snac, actor))
return 1;
/* do we follow any hashtag? */
- if (xs_is_list(xs_dict_get(snac->config, "followed_hashtags"))) {
- xs *obj = NULL;
-
- /* if the admired object contains any followed hashtag, accept it */
- if (valid_status(object_get(object, &obj)) &&
- followed_hashtag_check(snac, obj))
- return 7;
- }
+ if (followed_hashtag_check(snac, obj))
+ return 7;
return 0;
}
@@ -721,13 +741,20 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
return 1;
}
+ const xs_dict *msg = xs_dict_get(c_msg, "object");
+
+ /* any blocked hashtag? reject */
+ if (blocked_hashtag_check(snac, msg)) {
+ snac_debug(snac, 1, xs_fmt("blocked by hashtag %s", xs_dict_get(msg, "id")));
+ return 0;
+ }
+
int pub_msg = is_msg_public(c_msg);
/* if this message is public and we follow the actor of this post, allow */
if (pub_msg && following_check(snac, actor))
return 1;
- const xs_dict *msg = xs_dict_get(c_msg, "object");
xs *rcpts = recipient_list(snac, msg, 0);
xs_list *p = rcpts;
const xs_str *v;
@@ -1531,7 +1558,7 @@ xs_dict *msg_follow(snac *snac, const char *q)
xs_dict *msg_note(snac *snac, const xs_str *content, const xs_val *rcpts,
const xs_str *in_reply_to, const xs_list *attach,
- int scope, const char *lang_str)
+ int scope, const char *lang_str, const char *msg_date)
/* creates a 'Note' message */
/* scope: 0, public; 1, private (mentioned only); 2, "quiet public"; 3, followers only */
{
@@ -1545,7 +1572,12 @@ xs_dict *msg_note(snac *snac, const xs_str *content, const xs_val *rcpts,
xs *irt = NULL;
xs *tag = xs_list_new();
xs *atls = xs_list_new();
- xs_dict *msg = msg_base(snac, "Note", id, NULL, "@now", NULL);
+
+ /* discard non-parseable dates */
+ if (!xs_is_string(msg_date) || xs_parse_iso_date(msg_date, 0) == 0)
+ msg_date = NULL;
+
+ xs_dict *msg = msg_base(snac, "Note", id, NULL, xs_or(msg_date, "@now"), NULL);
xs_list *p;
const xs_val *v;
@@ -1758,7 +1790,7 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
const xs_list *opts, int multiple, int end_secs)
/* creates a Question message */
{
- xs_dict *msg = msg_note(user, content, NULL, NULL, attach, 0, NULL);
+ xs_dict *msg = msg_note(user, content, NULL, NULL, attach, 0, NULL, NULL);
int max = 8;
xs_set seen;
@@ -2336,7 +2368,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
xs *this_relay = xs_fmt("%s/relay", srv_baseurl);
if (strcmp(actor, this_relay) != 0) {
- if (timeline_admire(snac, object, actor, 0) == HTTP_STATUS_CREATED)
+ if (valid_status(timeline_admire(snac, object, actor, 0)))
snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object));
else
snac_log(snac, xs_fmt("repeated 'Announce' from %s to %s",
diff --git a/doc/snac.1 b/doc/snac.1
@@ -78,8 +78,17 @@ Fediverse identifier to follow.
.It Boost (by URL)
Fill the input area with the URL of a Fediverse note to be
boosted.
+.It Like (by URL)
+Fill the input area with the URL of a Fediverse note to be
+liked.
.It User setup...
This option opens the user setup dialog.
+.It Followed hashtags...
+Enter here the list of hashtags you want to follow, one
+per line, with or without the # symbol.
+.It Blocked hashtags...
+Enter here the list of hashtags you want to block, one
+per line, with or without the # symbol.
.El
.Pp
The user setup dialog allows some user information to be
@@ -151,6 +160,9 @@ approved or discarded.
If this toggle is set, the number of followers and following
accounts are made public (this is only the number; the specific
lists of accounts are never published).
+.It Web interface language
+If the administrator has installed any language file, it
+can be selected here.
.It Password
Write the same string in these two fields to change your
password. Don't write anything if you don't want to do this.
@@ -256,7 +268,8 @@ argument is -e, the external editor defined by the EDITOR
environment variable will be invoked to prepare a message; if
it's - (a lonely hyphen), the post content will be read from stdin.
The rest of command line arguments are treated as media files to be
-attached to the post.
+attached to the post. The LANG environment variable (if defined) is used
+as the post language.
.It Cm note_unlisted Ar basedir Ar uid Ar text Op file file ...
Like the previous one, but creates an "unlisted" (or "quiet public") post.
.It Cm note_mention Ar basedir Ar uid Ar text Op file file ...
@@ -395,6 +408,8 @@ variable. Set it to an integer value. The higher, the deeper in meaningless
verbiage you'll find yourself into.
.It Ev EDITOR
The user-preferred interactive text editor to prepare messages.
+.It Ev LANG
+The language of the post when sending messages.
.El
.Sh SEE ALSO
.Xr snac 5 ,
diff --git a/doc/snac.8 b/doc/snac.8
@@ -264,6 +264,9 @@ The maximum number of entries (posts) to be returned in user RSS feeds and outbo
(default: 20).
.It Ic max_attachments
The maximum number of attachments per post (default: 4).
+.It Ic enable_svg
+Since version 2.73, SVG image attachments are hidden by default; you can enable
+them by setting this value to true.
.El
.Pp
You must restart the server to make effective these changes.
@@ -617,6 +620,32 @@ hashtags.
Please take note that subscribing to relays can increase the traffic towards your instance
significantly. In any case, lowering the "Maximum days to keep posts" value for the relay
special user is recommended (e.g. setting to just 1 day).
+.Ss Web interface language
+Since version 2.73, the web UI can be localized via simple .po files (they are directly
+parsed, no support for gettext is needed).
+.Pp
+No language file is installed by default; the administrator must copy any desired .po files
+to the
+.Pa lang/
+subdirectory in the base directory. Once the server is restarted, users can select the
+new language from the user settings. The
+.Nm
+source distribution may include .po files in the
+.Pa po/
+subdirectory. You don't need to copy the English language one, as it's the default.
+.Pp
+To create new language files, create a copy of
+.Pa po/en.po ,
+rename it to a reasonable value like
+.Pa pl.po
+or
+.Pa pt_BR.po ,
+change the translator in the header to yourself and fill the msgstr strings with your
+translation. If you have any doubt on how to modify .po files, there are many tutorials
+out there. If you want your language file to be included in the standard
+.Nm
+distribution, please send me a link to it via the Fediverse to @grunfink@comam.es
+or make a PR via the Git repository.
.Sh ENVIRONMENT
.Bl -tag -width Ds
.It Ev DEBUG
diff --git a/html.c b/html.c
@@ -83,16 +83,20 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems, const char *p
const char *u = xs_dict_get(i, "url");
const char *mt = xs_dict_get(i, "mediaType");
- if (xs_is_string(u) && xs_is_string(mt) && strcmp(mt, "image/svg+xml")) {
- xs *url = make_url(u, proxy, 0);
+ if (xs_is_string(u) && xs_is_string(mt)) {
+ if (strcmp(mt, "image/svg+xml") == 0 && !xs_is_true(xs_dict_get(srv_config, "enable_svg")))
+ s = xs_replace_i(s, n, "");
+ else {
+ xs *url = make_url(u, proxy, 0);
- xs_html *img = xs_html_sctag("img",
- xs_html_attr("loading", "lazy"),
- xs_html_attr("src", url),
- xs_html_attr("style", style));
+ xs_html *img = xs_html_sctag("img",
+ xs_html_attr("loading", "lazy"),
+ xs_html_attr("src", url),
+ xs_html_attr("style", style));
- xs *s1 = xs_html_render(img);
- s = xs_replace_i(s, n, s1);
+ xs *s1 = xs_html_render(img);
+ s = xs_replace_i(s, n, s1);
+ }
}
else
s = xs_replace_i(s, n, "");
@@ -412,7 +416,7 @@ xs_html *html_note(snac *user, const char *summary,
xs_html_sctag("input",
xs_html_attr("type", "url"),
xs_html_attr("name", "in_reply_to"),
- xs_html_attr("placeholder", "Optional URL to reply to")));
+ xs_html_attr("placeholder", L("Optional URL to reply to"))));
xs_html_add(form,
xs_html_tag("p", NULL),
@@ -519,7 +523,7 @@ xs_html *html_note(snac *user, const char *summary,
xs_html_attr("name", "poll_options"),
xs_html_attr("rows", "4"),
xs_html_attr("wrap", "virtual"),
- xs_html_attr("placeholder", "Option 1...\nOption 2...\nOption 3...\n..."))),
+ xs_html_attr("placeholder", L("Option 1...\nOption 2...\nOption 3...\n...")))),
xs_html_tag("select",
xs_html_attr("name", "poll_multiple"),
xs_html_tag("option",
@@ -1338,13 +1342,13 @@ xs_html *html_top_controls(snac *user)
xs_html_attr("type", "text"),
xs_html_attr("name", "telegram_bot"),
xs_html_attr("value", telegram_bot),
- xs_html_attr("placeholder", "Bot API key")),
+ xs_html_attr("placeholder", L("Bot API key"))),
xs_html_text(" "),
xs_html_sctag("input",
xs_html_attr("type", "text"),
xs_html_attr("name", "telegram_chat_id"),
xs_html_attr("value", telegram_chat_id),
- xs_html_attr("placeholder", "Chat id"))),
+ xs_html_attr("placeholder", L("Chat id")))),
xs_html_tag("p",
xs_html_text(L("ntfy notifications (ntfy server and token):")),
xs_html_sctag("br", NULL),
@@ -1352,13 +1356,13 @@ xs_html *html_top_controls(snac *user)
xs_html_attr("type", "text"),
xs_html_attr("name", "ntfy_server"),
xs_html_attr("value", ntfy_server),
- xs_html_attr("placeholder", "ntfy server - full URL (example: https://ntfy.sh/YourTopic)")),
+ xs_html_attr("placeholder", L("ntfy server - full URL (example: https://ntfy.sh/YourTopic)"))),
xs_html_text(" "),
xs_html_sctag("input",
xs_html_attr("type", "text"),
xs_html_attr("name", "ntfy_token"),
xs_html_attr("value", ntfy_token),
- xs_html_attr("placeholder", "ntfy token - if needed"))),
+ xs_html_attr("placeholder", L("ntfy token - if needed")))),
xs_html_tag("p",
xs_html_text(L("Maximum days to keep posts (0: server settings):")),
xs_html_sctag("br", NULL),
@@ -1514,6 +1518,38 @@ xs_html *html_top_controls(snac *user)
xs_html_attr("class", "button"),
xs_html_attr("value", L("Update hashtags")))))));
+ xs *blocked_hashtags_action = xs_fmt("%s/admin/blocked-hashtags", user->actor);
+ xs *blocked_hashtags = xs_join(xs_dict_get_def(user->config,
+ "blocked_hashtags", xs_stock(XSTYPE_LIST)), "\n");
+
+ xs_html_add(top_controls,
+ xs_html_tag("details",
+ xs_html_tag("summary",
+ xs_html_text(L("Blocked hashtags..."))),
+ xs_html_tag("p",
+ xs_html_text(L("One hashtag per line"))),
+ xs_html_tag("div",
+ xs_html_attr("class", "snac-blocked-hashtags"),
+ xs_html_tag("form",
+ xs_html_attr("autocomplete", "off"),
+ xs_html_attr("method", "post"),
+ xs_html_attr("action", blocked_hashtags_action),
+ xs_html_attr("enctype", "multipart/form-data"),
+
+ xs_html_tag("textarea",
+ xs_html_attr("name", "blocked_hashtags"),
+ xs_html_attr("cols", "40"),
+ xs_html_attr("rows", "4"),
+ xs_html_attr("placeholder", "#cats\n#windowfriday\n#classicalmusic"),
+ xs_html_text(blocked_hashtags)),
+
+ xs_html_tag("br", NULL),
+
+ xs_html_sctag("input",
+ xs_html_attr("type", "submit"),
+ xs_html_attr("class", "button"),
+ xs_html_attr("value", L("Update hashtags")))))));
+
return top_controls;
}
@@ -2281,8 +2317,10 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
continue;
/* drop silently any attachment that may include JavaScript */
- if (strcmp(type, "image/svg+xml") == 0 ||
- strcmp(type, "text/html") == 0)
+ if (strcmp(type, "text/html") == 0)
+ continue;
+
+ if (strcmp(type, "image/svg+xml") == 0 && !xs_is_true(xs_dict_get(srv_config, "enable_svg")))
continue;
/* do this attachment include an icon? */
@@ -2724,7 +2762,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
xs_html_attr("href", url),
xs_html_attr("class", "snac-list-link"),
xs_html_attr("title", L("Pinned posts")),
- xs_html_text("pinned"))));
+ xs_html_text(L("pinned")))));
}
{
@@ -2736,7 +2774,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
xs_html_attr("href", url),
xs_html_attr("class", "snac-list-link"),
xs_html_attr("title", L("Bookmarked posts")),
- xs_html_text("bookmarks"))));
+ xs_html_text(L("bookmarks")))));
}
{
@@ -2748,7 +2786,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
xs_html_attr("href", url),
xs_html_attr("class", "snac-list-link"),
xs_html_attr("title", L("Post drafts")),
- xs_html_text("drafts"))));
+ xs_html_text(L("drafts")))));
}
/* the list of followed hashtags */
@@ -3982,7 +4020,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
const char *b64 = xs_dict_get(q_vars, "content");
int sz;
xs *content = xs_base64_dec(b64, &sz);
- xs *msg = msg_note(&snac, content, NULL, NULL, NULL, 0, NULL);
+ xs *msg = msg_note(&snac, content, NULL, NULL, NULL, 0, NULL, NULL);
xs *c_msg = msg_create(&snac, msg);
timeline_add(&snac, xs_dict_get(msg, "id"), msg);
@@ -4182,7 +4220,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
enqueue_close_question(&snac, xs_dict_get(msg, "id"), end_secs);
}
else
- msg = msg_note(&snac, content_2, to, in_reply_to, attach_list, priv, NULL);
+ msg = msg_note(&snac, content_2, to, in_reply_to, attach_list, priv, NULL, NULL);
if (sensitive != NULL) {
msg = xs_dict_set(msg, "sensitive", xs_stock(XSTYPE_TRUE));
@@ -4621,7 +4659,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
int c = 0;
while (xs_list_next(ls, &v, &c)) {
- xs *msg = msg_note(&snac, "", actor, irt, NULL, 1, NULL);
+ xs *msg = msg_note(&snac, "", actor, irt, NULL, 1, NULL, NULL);
/* set the option */
msg = xs_dict_append(msg, "name", v);
@@ -4683,6 +4721,35 @@ int html_post_handler(const xs_dict *req, const char *q_path,
status = HTTP_STATUS_SEE_OTHER;
}
+ else
+ if (p_path && strcmp(p_path, "admin/blocked-hashtags") == 0) { /** **/
+ const char *hashtags = xs_dict_get(p_vars, "blocked_hashtags");
+
+ if (xs_is_string(hashtags)) {
+ xs *new_hashtags = xs_list_new();
+ xs *l = xs_split(hashtags, "\n");
+ const char *v;
+
+ xs_list_foreach(l, v) {
+ xs *s1 = xs_strip_i(xs_dup(v));
+ s1 = xs_replace_i(s1, " ", "");
+
+ if (*s1 == '\0')
+ continue;
+
+ xs *s2 = xs_utf8_to_lower(s1);
+ if (*s2 != '#')
+ s2 = xs_str_prepend_i(s2, "#");
+
+ new_hashtags = xs_list_append(new_hashtags, s2);
+ }
+
+ snac.config = xs_dict_set(snac.config, "blocked_hashtags", new_hashtags);
+ user_persist(&snac, 0);
+ }
+
+ status = HTTP_STATUS_SEE_OTHER;
+ }
if (status == HTTP_STATUS_SEE_OTHER) {
const char *redir = xs_dict_get(p_vars, "redir");
diff --git a/main.c b/main.c
@@ -98,15 +98,6 @@ int main(int argc, char *argv[])
return snac_init(basedir);
}
- if (strcmp(cmd, "markdown") == 0) { /** **/
- /* undocumented, for testing only */
- xs *c = xs_readall(stdin);
- xs *fc = not_really_markdown(c, NULL, NULL);
-
- printf("<html>\n%s\n</html>\n", fc);
- return 0;
- }
-
if ((basedir = getenv("SNAC_BASEDIR")) == NULL) {
if ((basedir = GET_ARGV()) == NULL)
return usage();
@@ -719,7 +710,7 @@ int main(int argc, char *argv[])
if (strcmp(cmd, "note_unlisted") == 0)
scope = 2;
- msg = msg_note(&snac, content, NULL, NULL, attl, scope, getenv("LANG"));
+ msg = msg_note(&snac, content, NULL, NULL, attl, scope, getenv("LANG"), NULL);
c_msg = msg_create(&snac, msg);
diff --git a/mastoapi.c b/mastoapi.c
@@ -2684,7 +2684,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
if (strcmp(visibility, "public") == 0)
scope = 0;
- xs *msg = msg_note(&snac, content, NULL, irt, attach_list, scope, language);
+ xs *msg = msg_note(&snac, content, NULL, irt, attach_list, scope, language, NULL);
if (!xs_is_null(summary) && *summary) {
msg = xs_dict_set(msg, "sensitive", xs_stock(XSTYPE_TRUE));
@@ -3034,7 +3034,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
if (o) {
const char *name = xs_dict_get(o, "name");
- xs *msg = msg_note(&snac, "", atto, (char *)id, NULL, 1, NULL);
+ xs *msg = msg_note(&snac, "", atto, (char *)id, NULL, 1, NULL, NULL);
msg = xs_dict_append(msg, "name", name);
xs *c_msg = msg_create(&snac, msg);
diff --git a/po/cs.po b/po/cs.po
@@ -0,0 +1,733 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Jindrich Styrsky\n"
+"Language: cs\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Citlivý obsah: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Varování k citlivému obsahu"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Pouze pro zmíněné osoby:"
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Odpovědět na (URL):"
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Nesdílet, pouze uložit do rozepsaných"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Rozepsané:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Přílohy..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Soubor:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Pro smazání přilohy vymažte toto pole"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Popisek přílohy"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Anketa..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Možnosti ankety (jedna na řádek, max 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Vyber jednu"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Vyber více možností"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Konec za 5 minut"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Konec za 1 hodinu"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Konec za 1 den"
+
+#: html.c:555
+msgid "Post"
+msgstr "Poslat"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Popisek stránky"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Email administrátora"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Účet adminitrátora"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d sledovaných, %d sledujících"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "soukromé"
+
+#: html.c:870
+msgid "public"
+msgstr "veřejné"
+
+#: html.c:878
+msgid "notifications"
+msgstr "upozornění"
+
+#: html.c:883
+msgid "people"
+msgstr "lidé"
+
+#: html.c:887
+msgid "instance"
+msgstr "instance"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Vyhledejte příspěvek podle URL (regex), @uživatel@instance účtu, nebo #tagu"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Hledání obsahu"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "ověřený odkaz"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Místo: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nový příspěvek..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "Co se vám honí hlavou?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Operace..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Sledovat"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(podle URL nebo @uživatel@instance)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Boostit"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(podle URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Líbí"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Nastavení..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Jméno:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Vaše jméno"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Smazat současný avatar"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Obrázek v záhlaví profilu: "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Smazat současný obrázek v záhlaví"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Bio:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Napište sem něco o sobě..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Vždy zobrazit příspěvky s varováním o citlivém obsahu"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Emailová adresa pro upozornění"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Upozornění na Telegram (bot klíč a chat id):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "ntfy notifikace (ntfy server a token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "Životnost příspěvků ve dnech (0: nastavení serveru):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Zahodit soukromé zprávy od lidí, které nesledujete"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Tenhle účet je robot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Automaticky boostovat všechny zmíňky o tomto účtu"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr ""
+"Tento účet je soukromý (příspěvky nejsou zobrazitelné napříč internetem)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Zobrazovat vlákna složená"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Žádosti o sledování je nutno manuálně potvrdit"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Zobraz údaje o počtu sledovaných a sledujících"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Geolokace:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Metadata profilu (klíč=hodnota na jeden řádek):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Jazyk rozhraní:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nové heslo:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Zopakujte nové heslo:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Uložit"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Sledované hashtagy..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Jeden hashtag na řádek"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Aktualizovat hashtagy"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Dejte najevo, že se vám příspěvek líbí"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "Nelíbí"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Vlastně se mi to zas tak nelíbí"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Odepnout"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Odepnout tento příspěvek z vaší osy"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Připnout"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Připnout tento příspěvěk na začátek vaší osy"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Ukázat tenhle příspěvek vašim sledujícím"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Odboostit"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Boostit to byl blbej nápad"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Zahodit"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Odstraň tenhle příspěvěk ze svých záložek"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Uložit"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Uložit tenhle příspěvek mezi záložky"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Přestat sledovat"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Přestat sledovat tohoto uživatele"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Začít sledovat tohoto uživatele"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Přestat Sledovat Skupinu"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Přestat sledovat tuto skupinu nebo kanál"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Sledovat Skupinu"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Začít sledovat tuto skupinu nebo kanál"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "ZTIŠIT"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Jednou provždy zablokovat všechno od tohoto uživatele"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Smazat"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Smazat tento příspěvek"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Schovat"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Schovat tento příspěvek a příspěvky pod ním"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Editovat..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Odpovědět..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Ořezáno (moc hluboké)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "sleduje vás"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Připnuto"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Zazáložkováno"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Anketa"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Odhlasováno"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Událost"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "boostuje"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "odpověď pro"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr "[CITLIVÝ OBSAH]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Hlasuj"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Uzavřeno"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Končí za"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Příloha"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Popisek..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr ""
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Čas:"
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Starší..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "o této stránce"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "pohání "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Zahodit"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Časová osa pro seznam '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Připnuté příspěvky"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Záložky"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Rozepsané příspěky"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Nic víc nového"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Zpátky nahoru"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historie"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Více..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Povolit boosty"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Zobrazovat boosty od tohoto uživatele"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Skrýt boosty"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Ztišit boosty od tohoto uživatele"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Smazat tohoto užiatele"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Schválit"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Schválit žádost o sledování"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Zahodit"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Zahodit žádost o sledování"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Zrušit ztišení"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Přestat blokovat tohoto uživatele"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Zablokovat všechno od tohoto uživatele"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Soukomá zpráva..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Dosud nepotvrzené žádosti o sledován"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Lidé, které sledujete"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Lidé, kteří vás sledují"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Smazat vše"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Zmínil vás"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Ukončená anketa"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Žádost o sledování"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Kontext"
+
+#: html.c:3334
+msgid "New"
+msgstr "Nové"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Zobrazeno dříve"
+
+#: html.c:3364
+msgid "None"
+msgstr "Nic"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Výsledky vyhledávání účtu %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Účet %s nenalezen"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Výsledky k tagu %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Nic k tagu %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Výsledky vyhledávání pro '%s' (může toho být víc)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Výsledky vyhledávání pro '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Nic víc pro '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Žádný výsledek pro '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Časová osa místní instance"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Časová osa pro seznam '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Výsledky vyhledávání tagu #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Nedávné příspěvky od uživatelů této instance"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Blokované hashtagy..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/de.po b/po/de.po
@@ -0,0 +1,736 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: oliver zen hartmann\n"
+"Language: de\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Sensibler Inhalt"
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Beschreibung des sensiblen Inhalts"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Nur für erwähnte Personen"
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Antwort an (URL)"
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Nicht senden, aber als Entwurf speichern"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Entwurf"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Anhänge..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Datei:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Feld löschen, um den Anhang zu löschen"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Beschreibung des Anhangs"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Umfrage..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Umfrageoptionen (eine pro Zeile, bis zu 8)"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Eine Möglichkeit"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Mehrere Möglichkeiten"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Endet in 5 Minuten"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Endet in 1 Stunde"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Endet in 1 Tag"
+
+#: html.c:555
+msgid "Post"
+msgstr "Beitrag"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Beschreibung der Seite"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Admin Email"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Admin Konto"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d Gefolgte, %d Folgende"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "Privat"
+
+#: html.c:870
+msgid "public"
+msgstr "Öffentlich"
+
+#: html.c:878
+msgid "notifications"
+msgstr "Benachrichtigungen"
+
+#: html.c:883
+msgid "people"
+msgstr "Personen"
+
+#: html.c:887
+msgid "instance"
+msgstr "Instanz"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr "Durchsuche Beiträge nach URL oder Inhalt (regulärer Ausdruck), @user@host Konten, oder "
+"#tag"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Suche nach Inhalten"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "verifizierter Link"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Ort: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Neuer Beitrag..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "Was beschäftigt dich?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Funktionen..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Folgen"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(über URL oder user@host)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Weiterschicken"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(über URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Gefällt mir"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Benutzer Einstellungen..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Name anzeigen:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Dein Name"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Den aktuellen Avatar löschen"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Banner: "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Das aktuelle Banner löschen"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Bio:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Erzähle etwas von dir ..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Sensiblen Inhalt immer anzeigen"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Email Adresse für Benachrichtigungen"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Telegram Benachrichtigungen (Bot Schlüssel und Chat ID):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "ntfy Benachrichtigungen (ntfy Server und Token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "Maximale Tage, um Beiträge aufzubewahren (0: Servereinstellung):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Lösche Direktnachrichten von Personen, denen du nicht folgst"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Dieses Konto ist ein Bot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Alle Ankündigungen automatisch zu diesem Konto hinzufügen"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Dieses Konto ist privat (Beiträge werden nicht im Internet angezeigt)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Oberste Themen standardmäßig einklappen"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Folgeanfragen müssen genehmigt werden"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Gefolgte- und Folgende-Metriken veröffentlichen"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Aktueller Ort:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Profil-Metadaten (Begriff=Wert einer pro Zeile):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Sprache der Weboberfläche:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Neues Passwort:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Neues Passwort wiederholen:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Benutzer Info aktualisieren"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Gefolgte Hashtags..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Ein Hashtag pro Zeile"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Hashtags aktualisieren"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Sag, dass dir dieser Beiträg gefällt"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "Gefällt nicht"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Nee, gefällt mir nicht so gut"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Pin entfernen"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Entpinne diesen Beitrag aus deiner Zeitleiste"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Anpinnen"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Pinne diesen Beitrag an den Anfang deiner Timeline"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Diesen Beitrag an deine Follower weiterschicken"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Boost zurücknehmen"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Ich bedauere dass ich das weiterverschickt habe"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Lesezeichen entfernen"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Diesen Beitrag aus den Lesezeichen entfernen"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Lesezeichen"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Diesen Beitrag zu deinen Lesezeichen hinzufügen"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Nicht mehr folgen"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Aktivitäten dieses Benutzers nicht mehr folgen"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Folge den Aktivitäten dieses Benutzers"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Der Gruppe nicht mehr folgen"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Der Gruppe oder dem Kanal nicht mehr folgen"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Der Gruppe folgen"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Der Gruppe oder dem Kanal folgen"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "Stummschalten"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Alle Aktivitäten dieses Benutzers für immer blockieren"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Löschen"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Diesen Beitrag löschen"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Verstecken"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Verstecke diesen Beitrag und seine Kommentare"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Bearbeiten..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Antworten..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Abgeschnitten (zu viel)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "folgt dir"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Angeheftet"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Mit Lesezeichen versehen"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Umfrage"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Abgestimmt"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Ereignis"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "erwähnt"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "als Antwort auf"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [SENSIBLER INHALT]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Abstimmen"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Geschlossen"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Schliesst in"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Anhang"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Alt.-Text..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Kanalquelle oder -gemeinschaft"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Zeit: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Älter..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "über diese Seite"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "betrieben mit "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Ablehnen"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Zeitleiste für Liste '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Angeheftete Beiträge"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Beiträge mit Lesezeichen"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Entwurf veröffentlichen"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Keine weiteren ungesehenen Beträge"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Nach oben"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historie"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Mehr..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Unbegrenzt"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Erlaube Boosts von diesem Benutzer"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Limit"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Blocke Ankündigungen (Boosts) dieses Benutzers"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Benutzer löschen"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Bestätigen"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Diese Folgeanfrage bestätigen"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Verwerfen"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Diese Folgeanfrage verwerfen"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Aufheben der Stummschaltung"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Aktivitäten dieses Benutzers nicht mehr blockieren"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Alle Aktivitäten dieses Benutzers blockieren"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Direktnachricht..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Ausstehende Folgebestätigungen"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Personen, denen du folgst"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Personen, die dir folgen"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Alles löschen"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Erwähnung"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Beendete Umfrage"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Folge-Anfrage"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Zusammenhang"
+
+#: html.c:3334
+msgid "New"
+msgstr "Neu"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Schon gesehen"
+
+#: html.c:3364
+msgid "None"
+msgstr "Nichts"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Suchergebnisse für Konto %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Konto %s wurde nicht gefunden"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Suchergebnisse für Hashtag %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Nicht gefunden zu Hashtag %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Suchergebnisse für '%s' (können noch mehr sein)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Keine Suchergebnisse für '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Keine weiteren Treffer für '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Nichts gefunden für '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Zeitleiste der Instanz anzeigen"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Zeitleiste anzeigen für Liste '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Suchergebnisse für Hashtag #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Letzte Beiträge von Benutzern dieser Instanz"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Geblockte Hashtags..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr "Optionale URL zum Antworten"
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr "Bot API Schlüssel"
+
+#: html.c:1351
+msgid "Chat id"
+msgstr "Chat ID"
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr "ntfy Server - vollständige URL (Bsp.: https://ntfy.sh/YourTopic)"
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr "ntfy Token - falls nötig"
+
+#: html.c:2765
+msgid "pinned"
+msgstr "Angeheftet"
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr "Lesezeichen"
+
+#: html.c:2789
+msgid "drafts"
+msgstr "Entwürfe"
diff --git a/po/en.po b/po/en.po
@@ -8,671 +8,671 @@ msgstr ""
"Language: en\n"
"Content-Type: text/plain; charset=UTF-8\n"
-#: html.c:367
+#: html.c:371
msgid "Sensitive content: "
msgstr ""
-#: html.c:375
+#: html.c:379
msgid "Sensitive content description"
msgstr ""
-#: html.c:388
+#: html.c:392
msgid "Only for mentioned people: "
msgstr ""
-#: html.c:411
+#: html.c:415
msgid "Reply to (URL): "
msgstr ""
-#: html.c:420
+#: html.c:424
msgid "Don't send, but store as a draft"
msgstr ""
-#: html.c:421
+#: html.c:425
msgid "Draft:"
msgstr ""
-#: html.c:441
+#: html.c:445
msgid "Attachments..."
msgstr ""
-#: html.c:464
+#: html.c:468
msgid "File:"
msgstr ""
-#: html.c:468
+#: html.c:472
msgid "Clear this field to delete the attachment"
msgstr ""
-#: html.c:477 html.c:502
+#: html.c:481 html.c:506
msgid "Attachment description"
msgstr ""
-#: html.c:513
+#: html.c:517
msgid "Poll..."
msgstr ""
-#: html.c:515
+#: html.c:519
msgid "Poll options (one per line, up to 8):"
msgstr ""
-#: html.c:527
+#: html.c:531
msgid "One choice"
msgstr ""
-#: html.c:530
+#: html.c:534
msgid "Multiple choices"
msgstr ""
-#: html.c:536
+#: html.c:540
msgid "End in 5 minutes"
msgstr ""
-#: html.c:540
+#: html.c:544
msgid "End in 1 hour"
msgstr ""
-#: html.c:543
+#: html.c:547
msgid "End in 1 day"
msgstr ""
-#: html.c:551
+#: html.c:555
msgid "Post"
msgstr ""
-#: html.c:648 html.c:655
+#: html.c:652 html.c:659
msgid "Site description"
msgstr ""
-#: html.c:666
+#: html.c:670
msgid "Admin email"
msgstr ""
-#: html.c:679
+#: html.c:683
msgid "Admin account"
msgstr ""
-#: html.c:747 html.c:1083
+#: html.c:751 html.c:1087
#, c-format
msgid "%d following, %d followers"
msgstr ""
-#: html.c:837
+#: html.c:841
msgid "RSS"
msgstr ""
-#: html.c:842 html.c:870
+#: html.c:846 html.c:874
msgid "private"
msgstr ""
-#: html.c:866
+#: html.c:870
msgid "public"
msgstr ""
-#: html.c:874
+#: html.c:878
msgid "notifications"
msgstr ""
-#: html.c:879
+#: html.c:883
msgid "people"
msgstr ""
-#: html.c:883
+#: html.c:887
msgid "instance"
msgstr ""
-#: html.c:892
+#: html.c:896
msgid ""
"Search posts by URL or content (regular expression), @user@host accounts, or "
"#tag"
msgstr ""
-#: html.c:893
+#: html.c:897
msgid "Content search"
msgstr ""
-#: html.c:1015
+#: html.c:1019
msgid "verified link"
msgstr ""
-#: html.c:1072 html.c:2420 html.c:2433 html.c:2442
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
msgid "Location: "
msgstr ""
-#: html.c:1108
+#: html.c:1112
msgid "New Post..."
msgstr ""
-#: html.c:1110
+#: html.c:1114
msgid "What's on your mind?"
msgstr ""
-#: html.c:1119
+#: html.c:1123
msgid "Operations..."
msgstr ""
-#: html.c:1134 html.c:1677 html.c:3016 html.c:4333
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
msgid "Follow"
msgstr ""
-#: html.c:1136
+#: html.c:1140
msgid "(by URL or user@host)"
msgstr ""
-#: html.c:1151 html.c:1653 html.c:4285
+#: html.c:1155 html.c:1689 html.c:4323
msgid "Boost"
msgstr ""
-#: html.c:1153 html.c:1170
+#: html.c:1157 html.c:1174
msgid "(by URL)"
msgstr ""
-#: html.c:1168 html.c:1632 html.c:4276
+#: html.c:1172 html.c:1668 html.c:4314
msgid "Like"
msgstr ""
-#: html.c:1273
+#: html.c:1277
msgid "User Settings..."
msgstr ""
-#: html.c:1282
+#: html.c:1286
msgid "Display name:"
msgstr ""
-#: html.c:1288
+#: html.c:1292
msgid "Your name"
msgstr ""
-#: html.c:1290
+#: html.c:1294
msgid "Avatar: "
msgstr ""
-#: html.c:1298
+#: html.c:1302
msgid "Delete current avatar"
msgstr ""
-#: html.c:1300
+#: html.c:1304
msgid "Header image (banner): "
msgstr ""
-#: html.c:1308
+#: html.c:1312
msgid "Delete current header image"
msgstr ""
-#: html.c:1310
+#: html.c:1314
msgid "Bio:"
msgstr ""
-#: html.c:1316
+#: html.c:1320
msgid "Write about yourself here..."
msgstr ""
-#: html.c:1325
+#: html.c:1329
msgid "Always show sensitive content"
msgstr ""
-#: html.c:1327
+#: html.c:1331
msgid "Email address for notifications:"
msgstr ""
-#: html.c:1335
+#: html.c:1339
msgid "Telegram notifications (bot key and chat id):"
msgstr ""
-#: html.c:1349
+#: html.c:1353
msgid "ntfy notifications (ntfy server and token):"
msgstr ""
-#: html.c:1363
+#: html.c:1367
msgid "Maximum days to keep posts (0: server settings):"
msgstr ""
-#: html.c:1377
+#: html.c:1381
msgid "Drop direct messages from people you don't follow"
msgstr ""
-#: html.c:1386
+#: html.c:1390
msgid "This account is a bot"
msgstr ""
-#: html.c:1395
+#: html.c:1399
msgid "Auto-boost all mentions to this account"
msgstr ""
-#: html.c:1404
+#: html.c:1408
msgid "This account is private (posts are not shown through the web)"
msgstr ""
-#: html.c:1414
+#: html.c:1418
msgid "Collapse top threads by default"
msgstr ""
-#: html.c:1423
+#: html.c:1427
msgid "Follow requests must be approved"
msgstr ""
-#: html.c:1432
+#: html.c:1436
msgid "Publish follower and following metrics"
msgstr ""
-#: html.c:1434
+#: html.c:1438
msgid "Current location:"
msgstr ""
-#: html.c:1448
+#: html.c:1452
msgid "Profile metadata (key=value pairs in each line):"
msgstr ""
-#: html.c:1459
+#: html.c:1463
msgid "Web interface language:"
msgstr ""
-#: html.c:1464
+#: html.c:1468
msgid "New password:"
msgstr ""
-#: html.c:1471
+#: html.c:1475
msgid "Repeat new password:"
msgstr ""
-#: html.c:1481
+#: html.c:1485
msgid "Update user info"
msgstr ""
-#: html.c:1492
+#: html.c:1496
msgid "Followed hashtags..."
msgstr ""
-#: html.c:1494
+#: html.c:1498 html.c:1530
msgid "One hashtag per line"
msgstr ""
-#: html.c:1515
+#: html.c:1519 html.c:1551
msgid "Update hashtags"
msgstr ""
-#: html.c:1632
+#: html.c:1668
msgid "Say you like this post"
msgstr ""
-#: html.c:1637 html.c:4294
+#: html.c:1673 html.c:4332
msgid "Unlike"
msgstr ""
-#: html.c:1637
+#: html.c:1673
msgid "Nah don't like it that much"
msgstr ""
-#: html.c:1643 html.c:4426
+#: html.c:1679 html.c:4464
msgid "Unpin"
msgstr ""
-#: html.c:1643
+#: html.c:1679
msgid "Unpin this post from your timeline"
msgstr ""
-#: html.c:1646 html.c:4421
+#: html.c:1682 html.c:4459
msgid "Pin"
msgstr ""
-#: html.c:1646
+#: html.c:1682
msgid "Pin this post to the top of your timeline"
msgstr ""
-#: html.c:1653
+#: html.c:1689
msgid "Announce this post to your followers"
msgstr ""
-#: html.c:1658 html.c:4302
+#: html.c:1694 html.c:4340
msgid "Unboost"
msgstr ""
-#: html.c:1658
+#: html.c:1694
msgid "I regret I boosted this"
msgstr ""
-#: html.c:1664 html.c:4436
+#: html.c:1700 html.c:4474
msgid "Unbookmark"
msgstr ""
-#: html.c:1664
+#: html.c:1700
msgid "Delete this post from your bookmarks"
msgstr ""
-#: html.c:1667 html.c:4431
+#: html.c:1703 html.c:4469
msgid "Bookmark"
msgstr ""
-#: html.c:1667
+#: html.c:1703
msgid "Add this post to your bookmarks"
msgstr ""
-#: html.c:1673 html.c:3002 html.c:3190 html.c:4346
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
msgid "Unfollow"
msgstr ""
-#: html.c:1673 html.c:3003
+#: html.c:1709 html.c:3041
msgid "Stop following this user's activity"
msgstr ""
-#: html.c:1677 html.c:3017
+#: html.c:1713 html.c:3055
msgid "Start following this user's activity"
msgstr ""
-#: html.c:1683 html.c:4376
+#: html.c:1719 html.c:4414
msgid "Unfollow Group"
msgstr ""
-#: html.c:1684
+#: html.c:1720
msgid "Stop following this group or channel"
msgstr ""
-#: html.c:1688 html.c:4363
+#: html.c:1724 html.c:4401
msgid "Follow Group"
msgstr ""
-#: html.c:1689
+#: html.c:1725
msgid "Start following this group or channel"
msgstr ""
-#: html.c:1694 html.c:3039 html.c:4310
+#: html.c:1730 html.c:3077 html.c:4348
msgid "MUTE"
msgstr ""
-#: html.c:1695
+#: html.c:1731
msgid "Block any activity from this user forever"
msgstr ""
-#: html.c:1700 html.c:3021 html.c:4393
+#: html.c:1736 html.c:3059 html.c:4431
msgid "Delete"
msgstr ""
-#: html.c:1700
+#: html.c:1736
msgid "Delete this post"
msgstr ""
-#: html.c:1703 html.c:4318
+#: html.c:1739 html.c:4356
msgid "Hide"
msgstr ""
-#: html.c:1703
+#: html.c:1739
msgid "Hide this post and its children"
msgstr ""
-#: html.c:1734
+#: html.c:1770
msgid "Edit..."
msgstr ""
-#: html.c:1753
+#: html.c:1789
msgid "Reply..."
msgstr ""
-#: html.c:1804
+#: html.c:1840
msgid "Truncated (too deep)"
msgstr ""
-#: html.c:1813
+#: html.c:1849
msgid "follows you"
msgstr ""
-#: html.c:1876
+#: html.c:1912
msgid "Pinned"
msgstr ""
-#: html.c:1884
+#: html.c:1920
msgid "Bookmarked"
msgstr ""
-#: html.c:1892
+#: html.c:1928
msgid "Poll"
msgstr ""
-#: html.c:1899
+#: html.c:1935
msgid "Voted"
msgstr ""
-#: html.c:1908
+#: html.c:1944
msgid "Event"
msgstr ""
-#: html.c:1940 html.c:1969
+#: html.c:1976 html.c:2005
msgid "boosted"
msgstr ""
-#: html.c:1985
+#: html.c:2021
msgid "in reply to"
msgstr ""
-#: html.c:2036
+#: html.c:2072
msgid " [SENSITIVE CONTENT]"
msgstr ""
-#: html.c:2213
+#: html.c:2249
msgid "Vote"
msgstr ""
-#: html.c:2223
+#: html.c:2259
msgid "Closed"
msgstr ""
-#: html.c:2248
+#: html.c:2284
msgid "Closes in"
msgstr ""
-#: html.c:2327
+#: html.c:2365
msgid "Video"
msgstr ""
-#: html.c:2342
+#: html.c:2380
msgid "Audio"
msgstr ""
-#: html.c:2364
+#: html.c:2402
msgid "Attachment"
msgstr ""
-#: html.c:2378
+#: html.c:2416
msgid "Alt..."
msgstr ""
-#: html.c:2391
+#: html.c:2429
msgid "Source channel or community"
msgstr ""
-#: html.c:2485
+#: html.c:2523
msgid "Time: "
msgstr ""
-#: html.c:2560
+#: html.c:2598
msgid "Older..."
msgstr ""
-#: html.c:2623
+#: html.c:2661
msgid "about this site"
msgstr ""
-#: html.c:2625
+#: html.c:2663
msgid "powered by "
msgstr ""
-#: html.c:2690
+#: html.c:2728
msgid "Dismiss"
msgstr ""
-#: html.c:2707
+#: html.c:2745
#, c-format
msgid "Timeline for list '%s'"
msgstr ""
-#: html.c:2726 html.c:3767
+#: html.c:2764 html.c:3805
msgid "Pinned posts"
msgstr ""
-#: html.c:2738 html.c:3782
+#: html.c:2776 html.c:3820
msgid "Bookmarked posts"
msgstr ""
-#: html.c:2750 html.c:3797
+#: html.c:2788 html.c:3835
msgid "Post drafts"
msgstr ""
-#: html.c:2809
+#: html.c:2847
msgid "No more unseen posts"
msgstr ""
-#: html.c:2813 html.c:2913
+#: html.c:2851 html.c:2951
msgid "Back to top"
msgstr ""
-#: html.c:2866
+#: html.c:2904
msgid "History"
msgstr ""
-#: html.c:2918 html.c:3338
+#: html.c:2956 html.c:3376
msgid "More..."
msgstr ""
-#: html.c:3007 html.c:4329
+#: html.c:3045 html.c:4367
msgid "Unlimit"
msgstr ""
-#: html.c:3008
+#: html.c:3046
msgid "Allow announces (boosts) from this user"
msgstr ""
-#: html.c:3011 html.c:4325
+#: html.c:3049 html.c:4363
msgid "Limit"
msgstr ""
-#: html.c:3012
+#: html.c:3050
msgid "Block announces (boosts) from this user"
msgstr ""
-#: html.c:3021
+#: html.c:3059
msgid "Delete this user"
msgstr ""
-#: html.c:3026 html.c:4441
+#: html.c:3064 html.c:4479
msgid "Approve"
msgstr ""
-#: html.c:3027
+#: html.c:3065
msgid "Approve this follow request"
msgstr ""
-#: html.c:3030 html.c:4465
+#: html.c:3068 html.c:4503
msgid "Discard"
msgstr ""
-#: html.c:3030
+#: html.c:3068
msgid "Discard this follow request"
msgstr ""
-#: html.c:3035 html.c:4314
+#: html.c:3073 html.c:4352
msgid "Unmute"
msgstr ""
-#: html.c:3036
+#: html.c:3074
msgid "Stop blocking activities from this user"
msgstr ""
-#: html.c:3040
+#: html.c:3078
msgid "Block any activity from this user"
msgstr ""
-#: html.c:3048
+#: html.c:3086
msgid "Direct Message..."
msgstr ""
-#: html.c:3083
+#: html.c:3121
msgid "Pending follow confirmations"
msgstr ""
-#: html.c:3087
+#: html.c:3125
msgid "People you follow"
msgstr ""
-#: html.c:3088
+#: html.c:3126
msgid "People that follow you"
msgstr ""
-#: html.c:3127
+#: html.c:3165
msgid "Clear all"
msgstr ""
-#: html.c:3184
+#: html.c:3222
msgid "Mention"
msgstr ""
-#: html.c:3187
+#: html.c:3225
msgid "Finished poll"
msgstr ""
-#: html.c:3202
+#: html.c:3240
msgid "Follow Request"
msgstr ""
-#: html.c:3285
+#: html.c:3323
msgid "Context"
msgstr ""
-#: html.c:3296
+#: html.c:3334
msgid "New"
msgstr ""
-#: html.c:3311
+#: html.c:3349
msgid "Already seen"
msgstr ""
-#: html.c:3326
+#: html.c:3364
msgid "None"
msgstr ""
-#: html.c:3592
+#: html.c:3630
#, c-format
msgid "Search results for account %s"
msgstr ""
-#: html.c:3599
+#: html.c:3637
#, c-format
msgid "Account %s not found"
msgstr ""
-#: html.c:3630
+#: html.c:3668
#, c-format
msgid "Search results for tag %s"
msgstr ""
-#: html.c:3630
+#: html.c:3668
#, c-format
msgid "Nothing found for tag %s"
msgstr ""
-#: html.c:3646
+#: html.c:3684
#, c-format
msgid "Search results for '%s' (may be more)"
msgstr ""
-#: html.c:3649
+#: html.c:3687
#, c-format
msgid "Search results for '%s'"
msgstr ""
-#: html.c:3652
+#: html.c:3690
#, c-format
msgid "No more matches for '%s'"
msgstr ""
-#: html.c:3654
+#: html.c:3692
#, c-format
msgid "Nothing found for '%s'"
msgstr ""
-#: html.c:3752
+#: html.c:3790
msgid "Showing instance timeline"
msgstr ""
-#: html.c:3820
+#: html.c:3858
#, c-format
msgid "Showing timeline for list '%s'"
msgstr ""
@@ -685,3 +685,47 @@ msgstr ""
#: httpd.c:259
msgid "Recent posts by users in this instance"
msgstr ""
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr ""
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/es.po b/po/es.po
@@ -0,0 +1,735 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Gonzalo Raúl Nemmi\n"
+"Language: es\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Contenido sensible: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Descripción del contenido sensible"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Solo personas mencionadas: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Responder a (URL): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "No enviar. Guardar como borrador"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Borrador:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Adjuntos..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Archivo:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Limpiar este campo para eliminar el adjunto"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Descripción del adjunto"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Encuesta..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Opciones de encuesta (una por línea, hasta 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Una opción"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Opciones múltiples"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Finalizar en 5 minutos"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Finalizar en 1 hora"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Finalizar en 1 día"
+
+#: html.c:555
+msgid "Post"
+msgstr "Publicar"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Descripción del sitio"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Email del Administrador"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Cuenta del Administrador"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d siguiendo, %d seguidores"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "privado"
+
+#: html.c:870
+msgid "public"
+msgstr "público"
+
+#: html.c:878
+msgid "notifications"
+msgstr "notificaciones"
+
+#: html.c:883
+msgid "people"
+msgstr "personas"
+
+#: html.c:887
+msgid "instance"
+msgstr "instancia"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
+"@usuario@host , ó #etiqueta"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Buscar contenido"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "link verificado"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Ubicación: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nueva Publicación..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "¿En qué estás pensando?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Operaciones..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Seguir"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(por URL o usuario@host)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Impulsar"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(por URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Me gusta"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Configuración de usuario..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Nombre para mostrar:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Su nombre"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Eliminar avatar"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Imagen de cabecera (banner): "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Eliminar imagen de cabecera"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Bio:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Escriba algo sobre usted aquí..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Siempre mostrar contenido sensible"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Cuenta de email para las notificaciones:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "Notificaciones en ntfy (servidor ntfy y token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr ""
+"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
+"del servidor):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Descartar mensajes directos de personas a las que no sigue"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Esta cuenta es un bot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Contraer hilo de publicaciones por defecto"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Las solicitudes de seguimiento deben ser aprobadas"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Mostrar cantidad de seguidores y seguidos"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Ubicación actual:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Metadata del perfil (pares llave=valor en cada línea):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Idioma de la interfaz Web:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nueva contraseña:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Repetir nueva contraseña:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Actualizar información de usuario"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Etiquetas en seguimiento..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Una etiqueta por línea"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Actualizar etiquetas"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Decir que te gusta esta publicación"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "No me gusta"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Nah, no me gusta tanto"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Desanclar"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Desanclar esta publicación de su línea de tiempo"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Anclar"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Anclar esta publicación al inicio de su línea de tiempo"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Anunciar esta publicación a sus seguidores"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Eliminar impulso"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Me arrepiento de haber impulsado esto"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Eliminar marcador"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Eliminar marcador de esta publicación"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Marcador"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Agregar esta publicación a mis marcadores"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Dejar de seguir"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Dejar de seguir la actividad de este usuario"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Seguir la actividad de este usuario"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Dejar de seguir este Grupo"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Dejar de seguir este grupo o canal"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Seguir Grupo"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Seguir grupo o canal"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "SILENCIAR"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Bloquear toda la actividad de este usuario para siempre"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Eliminar"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Eliminar esta publicación"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Ocultar"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Ocultar esta publicación y sus respuestas"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Editar..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Responder..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Truncado (demasiado profundo)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "te sigue"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Anclado"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Marcado"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Encuesta"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Votado"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Evento"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "impulsado"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "en respuesta a"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [CONTENIDO SENSIBLE]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Votar"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Cerrado"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Cierra en"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Adjunto"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Alt..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Canal o comunidad de origen"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Hora: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Más antiguo..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "acerca de este sitio"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "provisto por "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Línea de tiempo de la lista '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Publicaciones ancladas"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Publicaciones marcadas"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Borradores de publicaciones"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "No quedan publicaciones sin ver"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Volver al inicio"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historia"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Más..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Sin límite"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Permitir anuncios (impulsos) de este usuario"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Límite"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Bloquear anuncios (impulsos) de este usuario"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Eliminar este usuario"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Aprobar"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Aprobar solicitud de seguimiento"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Descartar"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Descartar solicitud de seguimiento"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Dejar de SILENCIAR"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Dejar de bloquear actividad de este usuario"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Bloquear toda actividad de este usuario"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Mensaje Directo..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Confirmaciones de seguimiento pendientes"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Personas que sigues"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Personas que te siguen"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Limpiar todo"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Mención"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Encuesta finalizada"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Solicitud de Seguimiento"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Contexto"
+
+#: html.c:3334
+msgid "New"
+msgstr "Nuevo"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Ya visto"
+
+#: html.c:3364
+msgid "None"
+msgstr "Ninguno"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Buscar resultados para la cuenta %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "No se encontró la cuenta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Buscar resultados para la etiqueta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "No se encontró nada con la etiqueta %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Resultados de búsqueda para '%s' (puede haber más)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Resultados de búsqueda para '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "No hay más coincidencias para '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "No se encontró nada para '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Mostrando línea de tiempo de la instancia"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Mostrando línea de tiempo de la lista '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Resultado de búsqueda para la etiqueta #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Publicaciones recientes de los usuarios de esta instancia"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Etiquetas bloqueadas..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/es_AR.po b/po/es_AR.po
@@ -0,0 +1,735 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Gonzalo Raúl Nemmi\n"
+"Language: es_AR\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Contenido sensible: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Descripción del contenido sensible"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Solo personas mencionadas: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Responder a (URL): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "No enviar. Guardar como borrador"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Borrador:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Adjuntos..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Archivo:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Limpiar este campo para eliminar el adjunto"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Descripción del adjunto"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Encuesta..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Opciones de encuesta (una por línea, hasta 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Una opción"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Opciones múltiples"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Finalizar en 5 minutos"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Finalizar en 1 hora"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Finalizar en 1 día"
+
+#: html.c:555
+msgid "Post"
+msgstr "Publicar"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Descripción del sitio"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Email del Administrador"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Cuenta del Administrador"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d siguiendo, %d seguidores"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "privado"
+
+#: html.c:870
+msgid "public"
+msgstr "público"
+
+#: html.c:878
+msgid "notifications"
+msgstr "notificaciones"
+
+#: html.c:883
+msgid "people"
+msgstr "personas"
+
+#: html.c:887
+msgid "instance"
+msgstr "instancia"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
+"@usuario@host , ó #etiqueta"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Buscar contenido"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "link verificado"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Ubicación: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nueva Publicación..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "¿En qué estás pensando?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Operaciones..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Seguir"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(por URL o usuario@host)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Impulsar"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(por URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Me gusta"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Configuración de usuario..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Nombre para mostrar:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Su nombre"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Eliminar avatar"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Imagen de cabecera (banner): "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Eliminar imagen de cabecera"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Bio:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Escriba algo sobre usted aquí..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Siempre mostrar contenido sensible"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Cuenta de email para las notificaciones:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "Notificaciones en ntfy (servidor ntfy y token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr ""
+"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
+"del servidor):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Descartar mensajes directos de personas a las que no sigue"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Esta cuenta es un bot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Contraer hilo de publicaciones por defecto"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Las solicitudes de seguimiento deben ser aprobadas"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Mostrar cantidad de seguidores y seguidos"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Ubicación actual:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Metadata del perfil (pares llave=valor en cada línea):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Idioma de la interfaz Web:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nueva contraseña:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Repetir nueva contraseña:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Actualizar información de usuario"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Etiquetas en seguimiento..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Una etiqueta por línea"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Actualizar etiquetas"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Decir que te gusta esta publicación"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "No me gusta"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Nah, no me gusta tanto"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Desanclar"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Desanclar esta publicación de su línea de tiempo"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Anclar"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Anclar esta publicación al inicio de su línea de tiempo"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Anunciar esta publicación a sus seguidores"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Eliminar impulso"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Me arrepiento de haber impulsado esto"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Eliminar marcador"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Eliminar marcador de esta publicación"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Marcador"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Agregar esta publicación a mis marcadores"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Dejar de seguir"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Dejar de seguir la actividad de este usuario"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Seguir la actividad de este usuario"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Dejar de seguir este Grupo"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Dejar de seguir este grupo o canal"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Seguir Grupo"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Seguir grupo o canal"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "SILENCIAR"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Bloquear toda la actividad de este usuario para siempre"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Eliminar"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Eliminar esta publicación"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Ocultar"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Ocultar esta publicación y sus respuestas"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Editar..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Responder..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Truncado (demasiado profundo)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "te sigue"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Anclado"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Marcado"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Encuesta"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Votado"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Evento"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "impulsado"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "en respuesta a"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [CONTENIDO SENSIBLE]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Votar"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Cerrado"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Cierra en"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Adjunto"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Alt..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Canal o comunidad de origen"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Hora: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Más antiguo..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "acerca de este sitio"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "provisto por "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Línea de tiempo de la lista '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Publicaciones ancladas"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Publicaciones marcadas"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Borradores de publicaciones"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "No quedan publicaciones sin ver"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Volver al inicio"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historia"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Más..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Sin límite"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Permitir anuncios (impulsos) de este usuario"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Límite"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Bloquear anuncios (impulsos) de este usuario"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Eliminar este usuario"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Aprobar"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Aprobar solicitud de seguimiento"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Descartar"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Descartar solicitud de seguimiento"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Dejar de SILENCIAR"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Dejar de bloquear actividad de este usuario"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Bloquear toda actividad de este usuario"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Mensaje Directo..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Confirmaciones de seguimiento pendientes"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Personas que sigues"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Personas que te siguen"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Limpiar todo"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Mención"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Encuesta finalizada"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Solicitud de Seguimiento"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Contexto"
+
+#: html.c:3334
+msgid "New"
+msgstr "Nuevo"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Ya visto"
+
+#: html.c:3364
+msgid "None"
+msgstr "Ninguno"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Buscar resultados para la cuenta %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "No se encontró la cuenta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Buscar resultados para la etiqueta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "No se encontró nada con la etiqueta %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Resultados de búsqueda para '%s' (puede haber más)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Resultados de búsqueda para '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "No hay más coincidencias para '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "No se encontró nada para '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Mostrando línea de tiempo de la instancia"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Mostrando línea de tiempo de la lista '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Resultado de búsqueda para la etiqueta #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Publicaciones recientes de los usuarios de esta instancia"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Etiquetas bloqueadas..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/es_UY.po b/po/es_UY.po
@@ -0,0 +1,735 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Gonzalo Raúl Nemmi\n"
+"Language: es_UY\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Contenido sensible: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Descripción del contenido sensible"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Solo personas mencionadas: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Responder a (URL): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "No enviar. Guardar como borrador"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Borrador:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Adjuntos..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Archivo:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Limpiar este campo para eliminar el adjunto"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Descripción del adjunto"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Encuesta..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Opciones de encuesta (una por línea, hasta 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Una opción"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Opciones múltiples"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Finalizar en 5 minutos"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Finalizar en 1 hora"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Finalizar en 1 día"
+
+#: html.c:555
+msgid "Post"
+msgstr "Publicar"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Descripción del sitio"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Email del Administrador"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Cuenta del Administrador"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d siguiendo, %d seguidores"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "privado"
+
+#: html.c:870
+msgid "public"
+msgstr "público"
+
+#: html.c:878
+msgid "notifications"
+msgstr "notificaciones"
+
+#: html.c:883
+msgid "people"
+msgstr "personas"
+
+#: html.c:887
+msgid "instance"
+msgstr "instancia"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Buscar publicaciones por URL o contenido (expresiones regulares), cuenta "
+"@usuario@host , ó #etiqueta"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Buscar contenido"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "link verificado"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Ubicación: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nueva Publicación..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "¿En qué estás pensando?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Operaciones..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Seguir"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(por URL o usuario@host)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Impulsar"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(por URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Me gusta"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Configuración de usuario..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Nombre para mostrar:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Su nombre"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Eliminar avatar"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Imagen de cabecera (banner): "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Eliminar imagen de cabecera"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Bio:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Escriba algo sobre usted aquí..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Siempre mostrar contenido sensible"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Cuenta de email para las notificaciones:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Notificaciones en Telegram (llave del bot e id del chat):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "Notificaciones en ntfy (servidor ntfy y token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr ""
+"Plazo máximo de conservación de publicaciones en días (0: usar configuración "
+"del servidor):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Descartar mensajes directos de personas a las que no sigue"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Esta cuenta es un bot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Impulsar automáticamente todas las menciones a esta cuenta"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Esta cuenta es privada (las publicaciones no se muestran en la web)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Contraer hilo de publicaciones por defecto"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Las solicitudes de seguimiento deben ser aprobadas"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Mostrar cantidad de seguidores y seguidos"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Ubicación actual:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Metadata del perfil (pares llave=valor en cada línea):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Idioma de la interfaz Web:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nueva contraseña:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Repetir nueva contraseña:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Actualizar información de usuario"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Etiquetas en seguimiento..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Una etiqueta por línea"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Actualizar etiquetas"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Decir que te gusta esta publicación"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "No me gusta"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Nah, no me gusta tanto"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Desanclar"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Desanclar esta publicación de su línea de tiempo"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Anclar"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Anclar esta publicación al inicio de su línea de tiempo"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Anunciar esta publicación a sus seguidores"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Eliminar impulso"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Me arrepiento de haber impulsado esto"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Eliminar marcador"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Eliminar marcador de esta publicación"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Marcador"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Agregar esta publicación a mis marcadores"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Dejar de seguir"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Dejar de seguir la actividad de este usuario"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Seguir la actividad de este usuario"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Dejar de seguir este Grupo"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Dejar de seguir este grupo o canal"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Seguir Grupo"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Seguir grupo o canal"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "SILENCIAR"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Bloquear toda la actividad de este usuario para siempre"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Eliminar"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Eliminar esta publicación"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Ocultar"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Ocultar esta publicación y sus respuestas"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Editar..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Responder..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Truncado (demasiado profundo)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "te sigue"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Anclado"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Marcado"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Encuesta"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Votado"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Evento"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "impulsado"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "en respuesta a"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [CONTENIDO SENSIBLE]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Votar"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Cerrado"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Cierra en"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Adjunto"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Alt..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Canal o comunidad de origen"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Hora: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Más antiguo..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "acerca de este sitio"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "provisto por "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Línea de tiempo de la lista '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Publicaciones ancladas"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Publicaciones marcadas"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Borradores de publicaciones"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "No quedan publicaciones sin ver"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Volver al inicio"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historia"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Más..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Sin límite"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Permitir anuncios (impulsos) de este usuario"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Límite"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Bloquear anuncios (impulsos) de este usuario"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Eliminar este usuario"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Aprobar"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Aprobar solicitud de seguimiento"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Descartar"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Descartar solicitud de seguimiento"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Dejar de SILENCIAR"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Dejar de bloquear actividad de este usuario"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Bloquear toda actividad de este usuario"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Mensaje Directo..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Confirmaciones de seguimiento pendientes"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Personas que sigues"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Personas que te siguen"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Limpiar todo"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Mención"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Encuesta finalizada"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Solicitud de Seguimiento"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Contexto"
+
+#: html.c:3334
+msgid "New"
+msgstr "Nuevo"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Ya visto"
+
+#: html.c:3364
+msgid "None"
+msgstr "Ninguno"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Buscar resultados para la cuenta %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "No se encontró la cuenta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Buscar resultados para la etiqueta %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "No se encontró nada con la etiqueta %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Resultados de búsqueda para '%s' (puede haber más)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Resultados de búsqueda para '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "No hay más coincidencias para '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "No se encontró nada para '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Mostrando línea de tiempo de la instancia"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Mostrando línea de tiempo de la lista '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Resultado de búsqueda para la etiqueta #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Publicaciones recientes de los usuarios de esta instancia"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Etiquetas bloqueadas..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
@@ -0,0 +1,733 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: inz\n"
+"Language: fi\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Arkaluontoista sisältöä: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Arkaluontoisen sisällön kuvaus"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Vain mainituille: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Vastaus (osoite): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Älä lähetä, tallenna luonnoksena"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Luonnos:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Liitteet..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Tiedosto:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Tyhjennä kenttä poistaaksesi liiteen"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Liitteen kuvaus"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Kysely..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Kyselyn vaihtoehdot (riveittäin, korkeintaan 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Yksi valinta"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Monta valintaa"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Päättyy viiden minuutin päästä"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Päättyy tunnin päästä"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Päättyy päivän päästä"
+
+#: html.c:555
+msgid "Post"
+msgstr "Julkaise"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Sivuston kuvaus"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Ylläpitäjän sähköposti"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Ylläpitäjän tili"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "Seuraa %d, %d seuraajaa"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "yksityinen"
+
+#: html.c:870
+msgid "public"
+msgstr "julkinen"
+
+#: html.c:878
+msgid "notifications"
+msgstr "ilmoitukset"
+
+#: html.c:883
+msgid "people"
+msgstr "ihmiset"
+
+#: html.c:887
+msgid "instance"
+msgstr "palvelin"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Etsi julkaisuja osoitteella tai sisällön perusteella, @käyttäjä@palvelin "
+"tai #tagi"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Sisälöhaku"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "varmistettu linkki"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Sijainti: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Uusi julkaisu..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "Mitä on mielessäsi?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Toiminnot..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Seuraa"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(osoite tai käyttäjä@palvelin)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Tehosta"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(osoite)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Tykkää"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Käyttäjäasetukset..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Näytetty nimi:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Nimesi"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Poista nykyinen avatar"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Otsikkokuva: "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Poista nykyinen otsikkokuva"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Kuvaus:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Kirjoita itsestäsi tähän..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Näytä arkaluontoinen sisältö aina"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Sähköposti ilmoituksille:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Telegram-ilmoitukset (botin avain ja chat id):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "nfty-ilmoitukset (ntfy-palvelin ja token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "Säilytä julkaisut korkeintaan (päivää, 0: palvelimen asetukset)"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Poista yksityisviestit ihmisiltä, joita et seuraa"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Tämä tili on botti"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Tehosta tilin maininnat automaattisesti"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Tili on yksityinen (julkaisuja ei näytetä sivustolla)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Avaa säikeet automaattisesti"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Vaadi hyväksyntä seurantapyynnöille"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Julkaise seuraamistilastot"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Nykyinen sijainti:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Profiilin metadata (avain=arvo, riveittäin):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Käyttöliitymän kieli:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Uusi salasana:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Toista salasana:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Päivitä käyttäjätiedot"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Seuratut aihetunnisteet..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Aihetunnisteet, riveittäin"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Päivitä aihetunnisteet"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Tykkää tästä julkaisusta"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "Poista tykkäys"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Ei ole omaan makuuni"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Poista kiinnitys"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Poista julkaisun kiinnitys aikajanalle"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Kiinnitä"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Kiinnitä julkaisu aikajanasi alkuun"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Ilmoita julkaisusta seuraajillesi"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Poista tehostus"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Kadun tehostaneeni tätä"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Poista kirjanmerkki"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Poista julkaisu kirjanmerkeistäsi"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Lisää kirjanmerkki"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Lisää julkaisu kirjanmerkkeihisi"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Älä seuraa"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Lakkaa seuraamasta käyttäjän toimintaa"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Seuraa käyttäjän toimintaa"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Älä seuraa ryhmää"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Lopeta ryhnän tai kanavan seuraaminen"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Seuraa ryhmää"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Seuraa tätä ryhmää tai kanavaa"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "VAIMENNA"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Estä kaikki toiminta tältä käyttäjältä"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Poista"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Poista julkaisu"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Piilota"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Piilota julkaisu ja vastaukset"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Muokkaa..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Vastaa..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Katkaistu (liian syvä)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "seuraa sinua"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Kiinnitetty"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Kirjanmerkitty"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Kysely"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Äänestetty"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Tapahtuma"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "tehostettu"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "vastauksena"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [ARKALUONTOISTA SISÄLTÖÄ]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Äänestä"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Sulkeutunut"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Sulkeutuu"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Video"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Ääni"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Liite"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Kuvaus..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Lähdekanava tai -yhteisö"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Aika: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Vanhemmat..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "tietoa sivustosta"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "moottorina "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Kuittaa"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Listan ”%s” aikajana"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Kiinnitetyt julkaisut"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Kirjanmerkit"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Vedokset"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Ei lukemattonia julkaisuja"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Takaisin"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historia"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Enemmän..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Poista rajoitus"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Salli tehostukset käyttäjältä"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Rajoita"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Kiellö tehostukset käyttäjältä"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Poista käyttäjä"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Hyväksy"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Hyväksy seurantapyyntö"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Hylkää"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Hylkää seurantapyyntö"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Poista vaimennus"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Salli toiminta käyttäjältä"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Estä kaikki toiminnat käyttäjältä"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Yksityisviesti..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Hyväksymistä odottavat seurantapyynnöt"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Seuraamasi ihniset"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Sinua seuraavat"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Tyhjennä"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Mainitse"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Päättynyt kysely"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Seurantapyyntö"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Konteksti"
+
+#: html.c:3334
+msgid "New"
+msgstr "Uusi"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Nähty"
+
+#: html.c:3364
+msgid "None"
+msgstr "Ei ilmoituksia"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Hakutulokset tilille %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Tiliä %s ei löytynyt"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Hakutulokset aihetunnisteelle %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Aihetunnisteella %s ei löytynyt tuloksia"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Tulokset haulle ”%s” (mahdollisesti enemmän tuloksia)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Tulokset haulle ”%s”"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Ei enempää tuloksia haulle ”%s”"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Haulla ”%s” ei löytynyt tuloksia"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Palvelimen aikajana"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Listan ”%s” aikajana"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Hakutulokset aihetunnisteelle #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Viimeaikaisia julkaisuja tällä palvelimella"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Estetyt aihetunnisteet..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
@@ -0,0 +1,734 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Popolon\n"
+"Language: fr\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Contenu sensible :"
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Description du contenu sensible :"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Seulement pour les personnes mentionnées :"
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Répondre à (URL) :"
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Ne pas envoyer, mais sauvegarder en tant que brouillon"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Brouillon :"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Pièces jointes…"
+
+#: html.c:468
+msgid "File:"
+msgstr "Fichier :"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Nettoyer ce champs pour supprimer l'attachement"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Description de l'attachement"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Sondage…"
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Options du sondage (une par ligne, jusqu'à 8) :"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Un seul choix"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Choix multiples"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Se termine dans 5 minutes"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Se termine dans 1 heure"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Se termine dans 1 jour"
+
+#: html.c:555
+msgid "Post"
+msgstr "Envoyer"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Description du site"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "email de l'admin"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "compte de l'admin"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "Suit %d, %d suiveurs"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "privé"
+
+#: html.c:870
+msgid "public"
+msgstr "public"
+
+#: html.c:878
+msgid "notifications"
+msgstr "notifications"
+
+#: html.c:883
+msgid "people"
+msgstr "personnes"
+
+#: html.c:887
+msgid "instance"
+msgstr "instance"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Chercher les messages par URL ou contenu (expression régulière), comptes "
+"@utilisateur@hôte, ou #tag"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Recherche de contenu"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "Lien vérifié"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Emplacement : "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nouveau message…"
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "Qu'avez-vous en tête ?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Opérations…"
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Suivre"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(par URL ou utilisateur@hôte)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "repartager"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(par URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Aime"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Réglages utilisateur…"
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Nom affiché :"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Votre nom"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar : "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Supprimer l'avatar actuel"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Image d'entête (bannière) : "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Supprimer l'image d'entête actuelle"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "CV :"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Décrivez-vous ici…"
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Toujours afficher le contenu sensible"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Adresse email pour les notifications :"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Notifications Telegram (clé de bot et ID de discussion) :"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "notifications ntfy (serveur et jeton ntfy) :"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr ""
+"Nombre de jours maximum de rétention des messages (0 : réglages du serveur) :"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Rejeter les messages directs des personnes que vous ne suivez pas"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Ce compte est un bot"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Auto-repartage de toutes les mentions de ce compte"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Ce compte est privé (les messages ne sont pas affiché sur le web)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "replier les fils de discussion principaux par défaut"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Les demande de suivi doivent être approuvées"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Publier les suiveurs et les statistiques de suivis"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Localisation actuelle :"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Métadonnées du profile (paires clé=valeur à chaque ligne) :"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Langue de l'interface web :"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nouveau mot de passe :"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Répétez le nouveau mot de passe :"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Mettre à jour les infos utilisateur"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "hashtags suivis…"
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Un hashtag par ligne"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Mettre à jour les hashtags"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Dire que vous aimez ce message"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "N'aime plus"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Nan, j'aime pas tant que ça"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Dés-épingler"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Dés-épingler ce message de votre chronologie"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Épingler"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Épingler ce message en haut de votre chronologie"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Annoncer ce message à vos suiveurs"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Dé-repartager"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Je regrette d'avoir repartagé ceci"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Retirer le signet"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Supprime ce message de vos signets"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Signet"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Ajouter ce message à vos signets"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Ne plus suivre"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Arrêter de suivre les activités de cet utilisateur"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Commencer à suivre les activité de cet utilisateur"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Ne plus suivre le Groupe"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Arrêter de suivre ce groupe ou canal"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Suivre le Groupe"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Commencer à suivre ce groupe ou canal"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "TAIRE"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Bloquer toute activité de cet utilisateur à jamais"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Supprimer"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Supprimer ce message"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Cacher"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Cacher ce message et ses réponses"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Éditer…"
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Répondre…"
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Tronqué (trop profond)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "vous suit"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Épinglé"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Ajouté au signets"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Sondage"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Voté"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Événement"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "Repartagé"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "En réponse à"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [CONTENU SENSIBLE]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Vote"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Terminé"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Termine dans"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Vidéo"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Audio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Attachement"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Alt…"
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Canal ou communauté source"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Date : "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Plus anciens…"
+
+#: html.c:2661
+msgid "about this site"
+msgstr "à propos de ce site"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "fonctionne grace à "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Rejeter"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Chronologie pour la liste '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Messages épinglés"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Messages en signets"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Brouillons de messages"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Pas d'avantage de message non vus"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Retourner en haut"
+
+#: html.c:2904
+msgid "History"
+msgstr "Historique"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Plus…"
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Illimité"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Permettre les annonces (repartages) par cet utilisateur"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Limite"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Bloquer les annonces (repartages) par cet utilisateur"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Supprimer cet utilisateur"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Approuver"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Approuver cette demande de suivit"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Rejeter"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Rejeter la demande suivante"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Ne plus taire"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Arrêter de bloquer les activités de cet utilisateur"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Bloque toutes les activités de cet utilisateur"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Message direct…"
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Confirmation de suivit en attente"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Personnes que vous suivez"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Personnes qui vous suivent"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Tout nettoyer"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Mention"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Sondage terminé"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Requête de suivit"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Contexte"
+
+#: html.c:3334
+msgid "New"
+msgstr "Nouveau"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Déjà vu"
+
+#: html.c:3364
+msgid "None"
+msgstr "Aucun"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Résultats de recher pour le compte %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Compte %s non trouvé"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Résultats de recherche pour le tag %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Rien n'a été trouvé pour le tag %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Résultats de recherche pour '%s' (il pourrait y en avoir d'avantage)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Résultats de recherche pour '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Pas d'avantage de résultats pour '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Rien n'a été trouvé pour '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Montrer la chronologie de l'instance"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Montrer le chronologie pour la liste '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Résultats de recherche pour le tag #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Messages récents des utilisateurs de cette instance"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Hashtags bloqués…"
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
@@ -0,0 +1,734 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: Daltux <https://snac.daltux.net>\n"
+"Language: pt_BR\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"X-Generator: Poedit 3.5\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Conteúdo sensível: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Descrição do conteúdo sensível"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Apenas para pessoas mencionadas: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Resposta para (URL): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Não enviar, mas armazenar como rascunho"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Rascunho:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Anexos..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Arquivo:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Limpe este campo para remover o anexo"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Descrição do anexo"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Enquete..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Alternativas da enquete (uma por linha, até 8):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Escolha única"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Escolhas múltiplas"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Encerrar em 5 minutos"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Encerrar em 1 hora"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Encerrar em 1 dia"
+
+#: html.c:555
+msgid "Post"
+msgstr "Publicar"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Descrição do sítio eletrônico"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "E-mail da administração"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Conta de quem administra"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d seguidos, %d seguidores"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "privado"
+
+#: html.c:870
+msgid "public"
+msgstr "público"
+
+#: html.c:878
+msgid "notifications"
+msgstr "notificações"
+
+#: html.c:883
+msgid "people"
+msgstr "pessoas"
+
+#: html.c:887
+msgid "instance"
+msgstr "instância"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Procurar publicações por URL ou conteúdo (expressão regular), contas "
+"(@perfil@servidor) ou #tag"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Buscar conteúdo"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "ligação verificada"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Localização: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Nova publicação..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "O que tem em mente?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Operações..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Seguir"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(por URL ou conta@servidor)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Impulsionar"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(por URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Curtir"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Definições de uso..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Nome a ser exibido:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Seu nome"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Avatar: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Remover avatar atual"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Imagem de cabeçalho (capa): "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Remover imagem de cabeçalho atual"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "Biografia:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Escreva aqui sobre você..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Sempre exibir conteúdo sensível"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Endereço de e-mail para notificações:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Notificações Telegram (chave do robô e ID da conversa):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "Notificações ntfy (servidor ntfy e token):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "Máximo de dias a preservar publicações (0: definições do servidor):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Descartar mensagens diretas de pessoas que você não segue"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Esta conta é robô"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Impulsionar automaticamente todas as menções a esta conta"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Esta conta é privada (as publicações não são exibidas na Web)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Recolher por padrão as sequências de publicações"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Solicitações de seguimento precisam ser aprovadas"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Publicar métricas de seguidores e seguidos"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Localização atual:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Metadados do perfil (par de chave=valor em cada linha):"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Idioma da interface Web:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Nova senha:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Repita a nova senha:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Atualizar informações da conta"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Hashtags seguidas..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "Uma hashtag por linha"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Atualizar hashtags"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Declarar que gosta desta publicação"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "Descurtir"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Não gosto tanto assim disso"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Desafixar"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Desafixar esta publicação da sua linha do tempo"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Afixar"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Afixar esta publicação no topo de sua linha do tempo"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Anunciar esta publicação para seus seguidores"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Desimpulsionar"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Arrependo-me de ter impulsionado isso"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Desmarcar"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Remover esta publicação dos seus marcadores"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Marcar"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Adicionar esta publicação aos seus marcadores"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Deixar de seguir"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Parar de acompanhar a atividade deste perfil"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Começar a acompanhar a atividade deste perfil"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Deixar de seguir grupo"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Parar de acompanhar este grupo ou canal"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Seguir grupo"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Começar a acompanhar este grupo ou canal"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "MUDO"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Bloquear toda atividade deste perfil para sempre"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Eliminar"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Apagar esta publicação"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Ocultar"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Ocultar esta publicação e suas respostas"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Editar..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Responder..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Truncada (muito extensa)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "segue você"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Afixada"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Marcada"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Enquete"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Votou"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Evento"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "impulsionou"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "em resposta a"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [CONTEÚDO SENSÍVEL]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Votar"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Encerrada"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Encerra em"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Vídeo"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Áudio"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Anexo"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Texto alternativo..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Canal ou comunidade de origem"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Horário: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Anteriores..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "sobre este sítio eletrônico"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "movido por "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Dispensar"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Linha do tempo da lista '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Publicações afixadas"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Publicações marcadas"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Publicações em rascunho"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Sem mais publicações não vistas"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Voltar ao topo"
+
+#: html.c:2904
+msgid "History"
+msgstr "Histórico"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Mais..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Retirar restrição"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Permitir anúncios (impulsionamentos) deste perfil"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Restringir"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Bloquear anúncios (impulsionamentos) deste perfil"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Apagar este perfil"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Aprovar"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Aprovar esta solicitação de seguimento"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Descartar"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Descartar esta solicitação de seguimento"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Desbloquear"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Parar de bloquear as atividades deste perfil"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Bloquear toda atividade deste perfil"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Mensagem direta..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Confirmações de seguimento pendentes"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Pessoas que você segue"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Pessoas que seguem você"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Limpar tudo"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Menção"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Enquete encerrada"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Solicitação de seguimento"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Contexto"
+
+#: html.c:3334
+msgid "New"
+msgstr "Novas"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Já vistas"
+
+#: html.c:3364
+msgid "None"
+msgstr "Nenhuma"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Resultados da busca pela conta %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Conta %s não encontrada"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Resultados da busca pela hashtag %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Nada consta com hashtag %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Resultados da busca por '%s' (pode haver mais)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Resultados da busca por '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Sem mais combinações para '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Nada consta com '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Exibindo linha do tempo da instância"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Exibindo linha do tempo da lista '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Resultados da busca pela hashtag #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Publicações recentes de perfis desta instância"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Hashtags bloqueadas..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr ""
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr ""
+
+#: html.c:1351
+msgid "Chat id"
+msgstr ""
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr ""
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr ""
+
+#: html.c:2765
+msgid "pinned"
+msgstr ""
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr ""
+
+#: html.c:2789
+msgid "drafts"
+msgstr ""
diff --git a/po/ru.po b/po/ru.po
@@ -0,0 +1,744 @@
+# snac message translation file
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: grunfink\n"
+"Language: ru\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.0\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "Чувствительное содержимое: "
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "Описание чувствительного содержимого"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "Только для упомянутых людей: "
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "Ответ на (URL): "
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "Не отправлять, сохранить черновик"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "Черновик:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "Вложения..."
+
+#: html.c:468
+msgid "File:"
+msgstr "Файл:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "Очистите это поле, чтоб удалить вложение"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "Описание вложения"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "Опрос..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "Варианты ответа (один на строку, до 8 шт):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "Один выбор"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "Множественный выбор"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "Заканчивается через 5 минут"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "Заканчивается через 1 час"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "Заканчивается через 1 день"
+
+#: html.c:555
+msgid "Post"
+msgstr "Отправить"
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "Описание сайта"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "Почта админа"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "Учётная запись админа"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d подписан, %d подписчиков"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "личное"
+
+#: html.c:870
+msgid "public"
+msgstr "публичное"
+
+#: html.c:878
+msgid "notifications"
+msgstr "уведомления"
+
+#: html.c:883
+msgid "people"
+msgstr "люди"
+
+#: html.c:887
+msgid "instance"
+msgstr "экземпляр"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr ""
+"Поиск сообщений по URL или содержимому (регулярное выражение), учетной "
+"записи вида @user@host, или #тегу"
+
+#: html.c:897
+msgid "Content search"
+msgstr "Поиск содержимого"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "проверенная ссылка"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "Местоположение: "
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "Новое сообщение..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "Что у вас на уме?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "Действия..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "Подписаться"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(по URL или user@host)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "Продвинуть"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(по URL)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "Лайкнуть"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "Пользовательские настройки..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "Отображаемое имя:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "Ваше имя"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "Аватар: "
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "Удалить текущий аватар"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "Заглавное изображение (баннер): "
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "Удалить текущее заглавное изображение"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "О себе:"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "Напишите что-нибудь про себя..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "Всегда показывать чувствительное содержимое"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "Почтовый адрес для уведомлений:"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Уведомления в Telegram (ключ бота и id чата):"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "уведомления в ntfy (сервер и токен ntfy):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "Максимальное время хранения сообщений (0: настройки сервера):"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "Отклонять личные сообщения от незнакомцев"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "Это аккаунт бота"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "Автоматически продвигать все упоминания этого аккаунта"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "Это закрытый аккаунт (сообщения не показываются в сети)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "Сворачивать обсуждения по умолчанию"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "Запросы подписки требуют подтверждения"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "Публиковать статистику подписок и подписчиков"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "Текущее метоположение:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "Метаданные профиля (пары ключ=значение, по одной на строку)"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "Язык интерфейса:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "Новый пароль:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "Повторите новый пароль:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "Обновить данные пользователя"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "Отслеживаемые хештеги..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "По одному на строку"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "Обновить хештеги"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "Отметить сообщение понравившимся"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "Больше не нравится"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "Не так уж и понравилось"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "Открепить"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "Открепить это сообщение из своей ленты"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "Закрепить"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "Закрепить это сообщение в своей ленте"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "Поделиться этим сообщением со своими подписчиками"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "Отменить продвижение"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "Не буду продвигать, пожалуй"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "Удалить из закладок"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "Удалить это сообщение из закладок"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "Добавить в закладки"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "Добавить сообщение в закладки"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "Отписаться"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "Отменить подписку на этого пользователя"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "Начать следовать за этим пользователем"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "Отписаться от группы"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "Отписаться от группы или канала"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "Подписаться на группу"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "Подписаться на группу или канал"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "Заглушить"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "Заглушить всю активность от этого пользователя, навсегда"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "Удалить"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "Удалить это сообщение"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "Скрыть"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "Скрыть это сообщение вместе с обсуждением"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "Редактировать..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "Ответить..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "Обрезано (слишком много)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "подписан на вас"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "Закреплено"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "Добавлено в закладки"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "Опрос"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "Проголосовано"
+
+#: html.c:1944
+msgid "Event"
+msgstr "Событие"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "продвинуто"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "в ответ на"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr " [ЧУВСТВИТЕЛЬНО СОДЕРЖИМОЕ]"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "Голос"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "Закрыт"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "Закрывается через"
+
+#: html.c:2365
+msgid "Video"
+msgstr "Видео"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "Аудио"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "Вложение"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "Описание..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "Исходный канал или сообщество"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "Время: "
+
+#: html.c:2598
+msgid "Older..."
+msgstr "Ранее..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "про этот сайт"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "на основе "
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "Скрыть"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "Ленты для списка '%s'"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "Закреплённые сообщения"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "Сообщения в закладках"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "Черновики сообщений"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "Всё просмотрено"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "Вернуться наверх"
+
+#: html.c:2904
+msgid "History"
+msgstr "История"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "Ещё..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "Без ограничения"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "Разрешить продвижения от этого пользователя"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "Лимит"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "Запретить продвижения от этого пользователя"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "Удалить пользователя"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "Подтвердить"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "Подтвердить запрос на подписку"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "Отклонить"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "Отклонить этот запрос на подписку"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "Отменить глушение"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "Прекратить глушение действий этого пользователя"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "Заглушить все действия этого пользователя"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "Личное сообщение..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "Ожидающие запросы на подписку"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "Ваши подписки"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "Ваши подписчики"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "Очистить всё"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "Упоминание"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "Завершённый опрос"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "Запрос на подписку"
+
+#: html.c:3323
+msgid "Context"
+msgstr "Контекст"
+
+#: html.c:3334
+msgid "New"
+msgstr "Новое"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "Уже просмотрено"
+
+#: html.c:3364
+msgid "None"
+msgstr "Нет"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "Результаты поиска для учётной записи %s"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "Учётная запись %s не найдена"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "Результаты поиска тега %s"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "Ничего не найдено по тегу %s"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "Результаты поиска для '%s' (возможно, есть ещё)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "Результаты поиска для '%s'"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "Больше нет совпадений для '%s'"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "Ничего не найдено для '%s'"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "Показываем ленту инстанции"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "Показываем ленты инстанции для списка '%s'"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "Результаты поиска для тега #%s"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "Последние сообщения на этой инстанции"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "Заблокированные теги..."
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr "Необязательный URL для ответа"
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+"Вариант 1...\n"
+"Вариант 2...\n"
+"Вариант 3...\n"
+"..."
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr "Ключ API для бота"
+
+#: html.c:1351
+msgid "Chat id"
+msgstr "Id чата"
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr "полный URL сервера ntfy (например https://ntfy.sh/YourTopic)"
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr "токен ntfy - если нужен"
+
+#: html.c:2765
+msgid "pinned"
+msgstr "закреплено"
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr "закладки"
+
+#: html.c:2789
+msgid "drafts"
+msgstr "черновики"
diff --git a/po/zh.po b/po/zh.po
@@ -0,0 +1,737 @@
+# snac message translation file
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: snac\n"
+"Last-Translator: mistivia\n"
+"Language: zh\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#: html.c:371
+msgid "Sensitive content: "
+msgstr "敏感内容:"
+
+#: html.c:379
+msgid "Sensitive content description"
+msgstr "敏感内容描述"
+
+#: html.c:392
+msgid "Only for mentioned people: "
+msgstr "只有提及到的人:"
+
+#: html.c:415
+msgid "Reply to (URL): "
+msgstr "回复给(网址):"
+
+#: html.c:424
+msgid "Don't send, but store as a draft"
+msgstr "不要发送,但是保存为草稿"
+
+#: html.c:425
+msgid "Draft:"
+msgstr "草稿:"
+
+#: html.c:445
+msgid "Attachments..."
+msgstr "附件..."
+
+#: html.c:468
+msgid "File:"
+msgstr "文件:"
+
+#: html.c:472
+msgid "Clear this field to delete the attachment"
+msgstr "清除此项以删除附件"
+
+#: html.c:481 html.c:506
+msgid "Attachment description"
+msgstr "附件描述"
+
+#: html.c:517
+msgid "Poll..."
+msgstr "投票..."
+
+#: html.c:519
+msgid "Poll options (one per line, up to 8):"
+msgstr "投票选项(每项一行,最多八项):"
+
+#: html.c:531
+msgid "One choice"
+msgstr "单选"
+
+#: html.c:534
+msgid "Multiple choices"
+msgstr "多选"
+
+#: html.c:540
+msgid "End in 5 minutes"
+msgstr "五分钟后结束"
+
+#: html.c:544
+msgid "End in 1 hour"
+msgstr "一小时后结束"
+
+#: html.c:547
+msgid "End in 1 day"
+msgstr "一天后结束"
+
+#: html.c:555
+msgid "Post"
+msgstr ""
+
+#: html.c:652 html.c:659
+msgid "Site description"
+msgstr "站点描述"
+
+#: html.c:670
+msgid "Admin email"
+msgstr "管理员电子邮箱"
+
+#: html.c:683
+msgid "Admin account"
+msgstr "管理员帐号"
+
+#: html.c:751 html.c:1087
+#, c-format
+msgid "%d following, %d followers"
+msgstr "%d 个正在关注,%d 个关注者"
+
+#: html.c:841
+msgid "RSS"
+msgstr "RSS"
+
+#: html.c:846 html.c:874
+msgid "private"
+msgstr "私密"
+
+#: html.c:870
+msgid "public"
+msgstr "公开"
+
+#: html.c:878
+msgid "notifications"
+msgstr "通知"
+
+#: html.c:883
+msgid "people"
+msgstr "成员"
+
+#: html.c:887
+msgid "instance"
+msgstr "实例"
+
+#: html.c:896
+msgid ""
+"Search posts by URL or content (regular expression), @user@host accounts, or "
+"#tag"
+msgstr "通过网址、内容(正则表达式)、@用户@服务器 帐号,或者 #话题标签"
+"搜索贴子"
+
+#: html.c:897
+msgid "Content search"
+msgstr "内容搜索"
+
+#: html.c:1019
+msgid "verified link"
+msgstr "已验证的链接"
+
+#: html.c:1076 html.c:2458 html.c:2471 html.c:2480
+msgid "Location: "
+msgstr "位置:"
+
+#: html.c:1112
+msgid "New Post..."
+msgstr "新贴子..."
+
+#: html.c:1114
+msgid "What's on your mind?"
+msgstr "你在想什么?"
+
+#: html.c:1123
+msgid "Operations..."
+msgstr "操作..."
+
+#: html.c:1138 html.c:1713 html.c:3054 html.c:4371
+msgid "Follow"
+msgstr "关注"
+
+#: html.c:1140
+msgid "(by URL or user@host)"
+msgstr "(通过网址或者 用户名@服务器)"
+
+#: html.c:1155 html.c:1689 html.c:4323
+msgid "Boost"
+msgstr "转发"
+
+#: html.c:1157 html.c:1174
+msgid "(by URL)"
+msgstr "(通过网址)"
+
+#: html.c:1172 html.c:1668 html.c:4314
+msgid "Like"
+msgstr "点赞"
+
+#: html.c:1277
+msgid "User Settings..."
+msgstr "用户设置..."
+
+#: html.c:1286
+msgid "Display name:"
+msgstr "显示名字:"
+
+#: html.c:1292
+msgid "Your name"
+msgstr "你的名字"
+
+#: html.c:1294
+msgid "Avatar: "
+msgstr "头像:"
+
+#: html.c:1302
+msgid "Delete current avatar"
+msgstr "删除当前头像"
+
+#: html.c:1304
+msgid "Header image (banner): "
+msgstr "页眉图像(横幅)"
+
+#: html.c:1312
+msgid "Delete current header image"
+msgstr "删除当前的页眉图像"
+
+#: html.c:1314
+msgid "Bio:"
+msgstr "简介"
+
+#: html.c:1320
+msgid "Write about yourself here..."
+msgstr "在这里介绍你自己..."
+
+#: html.c:1329
+msgid "Always show sensitive content"
+msgstr "总是显示敏感内容"
+
+#: html.c:1331
+msgid "Email address for notifications:"
+msgstr "用于通知的电子邮箱地址"
+
+#: html.c:1339
+msgid "Telegram notifications (bot key and chat id):"
+msgstr "Telegram通知(bot密钥和聊天ID)"
+
+#: html.c:1353
+msgid "ntfy notifications (ntfy server and token):"
+msgstr "ntfy通知(ntfy服务器和令牌):"
+
+#: html.c:1367
+msgid "Maximum days to keep posts (0: server settings):"
+msgstr "保存贴子的最大天数(0:服务器设置)"
+
+#: html.c:1381
+msgid "Drop direct messages from people you don't follow"
+msgstr "丢弃你没有关注的人的私信"
+
+#: html.c:1390
+msgid "This account is a bot"
+msgstr "此帐号是机器人"
+
+#: html.c:1399
+msgid "Auto-boost all mentions to this account"
+msgstr "自动转发所有对此帐号的提及"
+
+#: html.c:1408
+msgid "This account is private (posts are not shown through the web)"
+msgstr "这是一个私密帐号(贴子不会在网页中显示)"
+
+#: html.c:1418
+msgid "Collapse top threads by default"
+msgstr "默认收起主题帖"
+
+#: html.c:1427
+msgid "Follow requests must be approved"
+msgstr "关注请求必须经过审批"
+
+#: html.c:1436
+msgid "Publish follower and following metrics"
+msgstr "展示关注者和正在关注的数量"
+
+#: html.c:1438
+msgid "Current location:"
+msgstr "当前位置:"
+
+#: html.c:1452
+msgid "Profile metadata (key=value pairs in each line):"
+msgstr "个人资料元数据(每行一条 键=值)"
+
+#: html.c:1463
+msgid "Web interface language:"
+msgstr "网页界面语言:"
+
+#: html.c:1468
+msgid "New password:"
+msgstr "新密码:"
+
+#: html.c:1475
+msgid "Repeat new password:"
+msgstr "重复新密码:"
+
+#: html.c:1485
+msgid "Update user info"
+msgstr "更新用户信息:"
+
+#: html.c:1496
+msgid "Followed hashtags..."
+msgstr "已关注的话题标签..."
+
+#: html.c:1498 html.c:1530
+msgid "One hashtag per line"
+msgstr "每行一个话题标签"
+
+#: html.c:1519 html.c:1551
+msgid "Update hashtags"
+msgstr "更新话题标签"
+
+#: html.c:1668
+msgid "Say you like this post"
+msgstr "说你喜欢这个贴子"
+
+#: html.c:1673 html.c:4332
+msgid "Unlike"
+msgstr "不喜欢"
+
+#: html.c:1673
+msgid "Nah don't like it that much"
+msgstr "啊,不怎么喜欢这个"
+
+#: html.c:1679 html.c:4464
+msgid "Unpin"
+msgstr "取消置顶"
+
+#: html.c:1679
+msgid "Unpin this post from your timeline"
+msgstr "从你的时间线上取消置顶这个贴子"
+
+#: html.c:1682 html.c:4459
+msgid "Pin"
+msgstr "置顶"
+
+#: html.c:1682
+msgid "Pin this post to the top of your timeline"
+msgstr "把这条贴子置顶在你的时间线上"
+
+#: html.c:1689
+msgid "Announce this post to your followers"
+msgstr "向你的关注者宣布这条贴子"
+
+#: html.c:1694 html.c:4340
+msgid "Unboost"
+msgstr "取消转发"
+
+#: html.c:1694
+msgid "I regret I boosted this"
+msgstr "我后悔转发这个了"
+
+#: html.c:1700 html.c:4474
+msgid "Unbookmark"
+msgstr "取消收藏"
+
+#: html.c:1700
+msgid "Delete this post from your bookmarks"
+msgstr "从收藏夹中删除这个贴子"
+
+#: html.c:1703 html.c:4469
+msgid "Bookmark"
+msgstr "收藏"
+
+#: html.c:1703
+msgid "Add this post to your bookmarks"
+msgstr "把这个贴子加入收藏夹"
+
+#: html.c:1709 html.c:3040 html.c:3228 html.c:4384
+msgid "Unfollow"
+msgstr "取消关注"
+
+#: html.c:1709 html.c:3041
+msgid "Stop following this user's activity"
+msgstr "停止关注此用户的动态"
+
+#: html.c:1713 html.c:3055
+msgid "Start following this user's activity"
+msgstr "开始关注此用户的动态"
+
+#: html.c:1719 html.c:4414
+msgid "Unfollow Group"
+msgstr "取消关注群组"
+
+#: html.c:1720
+msgid "Stop following this group or channel"
+msgstr "取消关注这个群组或频道"
+
+#: html.c:1724 html.c:4401
+msgid "Follow Group"
+msgstr "关注群组"
+
+#: html.c:1725
+msgid "Start following this group or channel"
+msgstr "开始关注这个群组或频道"
+
+#: html.c:1730 html.c:3077 html.c:4348
+msgid "MUTE"
+msgstr "静音"
+
+#: html.c:1731
+msgid "Block any activity from this user forever"
+msgstr "永久屏蔽来自这个用户的任何动态"
+
+#: html.c:1736 html.c:3059 html.c:4431
+msgid "Delete"
+msgstr "删除"
+
+#: html.c:1736
+msgid "Delete this post"
+msgstr "删除这条贴子"
+
+#: html.c:1739 html.c:4356
+msgid "Hide"
+msgstr "隐藏"
+
+#: html.c:1739
+msgid "Hide this post and its children"
+msgstr "删除这条贴子及其回复"
+
+#: html.c:1770
+msgid "Edit..."
+msgstr "编辑..."
+
+#: html.c:1789
+msgid "Reply..."
+msgstr "回复..."
+
+#: html.c:1840
+msgid "Truncated (too deep)"
+msgstr "已被截断(太深了)"
+
+#: html.c:1849
+msgid "follows you"
+msgstr "关注了你"
+
+#: html.c:1912
+msgid "Pinned"
+msgstr "已置顶"
+
+#: html.c:1920
+msgid "Bookmarked"
+msgstr "已收藏"
+
+#: html.c:1928
+msgid "Poll"
+msgstr "投票"
+
+#: html.c:1935
+msgid "Voted"
+msgstr "已投票"
+
+#: html.c:1944
+msgid "Event"
+msgstr "事件"
+
+#: html.c:1976 html.c:2005
+msgid "boosted"
+msgstr "已转发"
+
+#: html.c:2021
+msgid "in reply to"
+msgstr "回复给"
+
+#: html.c:2072
+msgid " [SENSITIVE CONTENT]"
+msgstr "【敏感内容】"
+
+#: html.c:2249
+msgid "Vote"
+msgstr "投票"
+
+#: html.c:2259
+msgid "Closed"
+msgstr "已关闭"
+
+#: html.c:2284
+msgid "Closes in"
+msgstr "距离关闭还有"
+
+#: html.c:2365
+msgid "Video"
+msgstr "视频"
+
+#: html.c:2380
+msgid "Audio"
+msgstr "音频"
+
+#: html.c:2402
+msgid "Attachment"
+msgstr "附件"
+
+#: html.c:2416
+msgid "Alt..."
+msgstr "描述..."
+
+#: html.c:2429
+msgid "Source channel or community"
+msgstr "来源频道或者社群"
+
+#: html.c:2523
+msgid "Time: "
+msgstr "时间:"
+
+#: html.c:2598
+msgid "Older..."
+msgstr "更早的..."
+
+#: html.c:2661
+msgid "about this site"
+msgstr "关于此站点"
+
+#: html.c:2663
+msgid "powered by "
+msgstr "驱动自"
+
+#: html.c:2728
+msgid "Dismiss"
+msgstr "忽略"
+
+#: html.c:2745
+#, c-format
+msgid "Timeline for list '%s'"
+msgstr "列表'%s'的时间线"
+
+#: html.c:2764 html.c:3805
+msgid "Pinned posts"
+msgstr "置顶的贴子"
+
+#: html.c:2776 html.c:3820
+msgid "Bookmarked posts"
+msgstr "收藏的贴子"
+
+#: html.c:2788 html.c:3835
+msgid "Post drafts"
+msgstr "贴子草稿"
+
+#: html.c:2847
+msgid "No more unseen posts"
+msgstr "没有更多未读贴子了"
+
+#: html.c:2851 html.c:2951
+msgid "Back to top"
+msgstr "返回顶部"
+
+#: html.c:2904
+msgid "History"
+msgstr "历史"
+
+#: html.c:2956 html.c:3376
+msgid "More..."
+msgstr "更多..."
+
+#: html.c:3045 html.c:4367
+msgid "Unlimit"
+msgstr "取消限制"
+
+#: html.c:3046
+msgid "Allow announces (boosts) from this user"
+msgstr "允许来自这个用户的通知(转发)"
+
+#: html.c:3049 html.c:4363
+msgid "Limit"
+msgstr "限制"
+
+#: html.c:3050
+msgid "Block announces (boosts) from this user"
+msgstr "屏蔽来自这个用户的通知(转发)"
+
+#: html.c:3059
+msgid "Delete this user"
+msgstr "删除此用户"
+
+#: html.c:3064 html.c:4479
+msgid "Approve"
+msgstr "允许"
+
+#: html.c:3065
+msgid "Approve this follow request"
+msgstr "允许这个关注请求"
+
+#: html.c:3068 html.c:4503
+msgid "Discard"
+msgstr "丢弃"
+
+#: html.c:3068
+msgid "Discard this follow request"
+msgstr "丢弃这个关注请求"
+
+#: html.c:3073 html.c:4352
+msgid "Unmute"
+msgstr "取消静音"
+
+#: html.c:3074
+msgid "Stop blocking activities from this user"
+msgstr "停止屏蔽来自此用户的动态"
+
+#: html.c:3078
+msgid "Block any activity from this user"
+msgstr "屏蔽来自此用户的任何动态"
+
+#: html.c:3086
+msgid "Direct Message..."
+msgstr "私信..."
+
+#: html.c:3121
+msgid "Pending follow confirmations"
+msgstr "待处理的关注确认"
+
+#: html.c:3125
+msgid "People you follow"
+msgstr "你关注的人"
+
+#: html.c:3126
+msgid "People that follow you"
+msgstr "关注你的人"
+
+#: html.c:3165
+msgid "Clear all"
+msgstr "清除全部"
+
+#: html.c:3222
+msgid "Mention"
+msgstr "提及"
+
+#: html.c:3225
+msgid "Finished poll"
+msgstr "结束投票"
+
+#: html.c:3240
+msgid "Follow Request"
+msgstr "关注请求"
+
+#: html.c:3323
+msgid "Context"
+msgstr "上下文"
+
+#: html.c:3334
+msgid "New"
+msgstr "新建"
+
+#: html.c:3349
+msgid "Already seen"
+msgstr "已经看过"
+
+#: html.c:3364
+msgid "None"
+msgstr "没有"
+
+#: html.c:3630
+#, c-format
+msgid "Search results for account %s"
+msgstr "账户 %s 的搜索结果"
+
+#: html.c:3637
+#, c-format
+msgid "Account %s not found"
+msgstr "没有找到账户 %s"
+
+#: html.c:3668
+#, c-format
+msgid "Search results for tag %s"
+msgstr "标签 %s 的搜索结果"
+
+#: html.c:3668
+#, c-format
+msgid "Nothing found for tag %s"
+msgstr "没有找到标签'%s'的结果"
+
+#: html.c:3684
+#, c-format
+msgid "Search results for '%s' (may be more)"
+msgstr "'%s'的搜索结果(可能还有更多)"
+
+#: html.c:3687
+#, c-format
+msgid "Search results for '%s'"
+msgstr "'%s'的搜索结果"
+
+#: html.c:3690
+#, c-format
+msgid "No more matches for '%s'"
+msgstr "没有更多匹配'%s'的结果了"
+
+#: html.c:3692
+#, c-format
+msgid "Nothing found for '%s'"
+msgstr "没有找到'%s'的结果"
+
+#: html.c:3790
+msgid "Showing instance timeline"
+msgstr "显示实例时间线"
+
+#: html.c:3858
+#, c-format
+msgid "Showing timeline for list '%s'"
+msgstr "显示列表'%s'的事件线"
+
+#: httpd.c:250
+#, c-format
+msgid "Search results for tag #%s"
+msgstr "标签 #%s 的搜索结果"
+
+#: httpd.c:259
+msgid "Recent posts by users in this instance"
+msgstr "此实例上的用户最近的贴子"
+
+#: html.c:1528
+msgid "Blocked hashtags..."
+msgstr "已屏蔽的话题标签"
+
+#: html.c:419
+msgid "Optional URL to reply to"
+msgstr "可选的回复的网址"
+
+#: html.c:526
+msgid ""
+"Option 1...\n"
+"Option 2...\n"
+"Option 3...\n"
+"..."
+msgstr ""
+"选项1...\n"
+"选项2...\n"
+"选项3...\n"
+"..."
+
+#: html.c:1345
+msgid "Bot API key"
+msgstr "Bot API 密钥"
+
+#: html.c:1351
+msgid "Chat id"
+msgstr "聊天ID"
+
+#: html.c:1359
+msgid "ntfy server - full URL (example: https://ntfy.sh/YourTopic)"
+msgstr "ntfy服务器 - 完整网址(例如:https://ntft.sh/YourTopic)"
+
+#: html.c:1365
+msgid "ntfy token - if needed"
+msgstr "ntft令牌 - 如果需要的话"
+
+#: html.c:2765
+msgid "pinned"
+msgstr "置顶"
+
+#: html.c:2777
+msgid "bookmarks"
+msgstr "收藏夹"
+
+#: html.c:2789
+msgid "drafts"
+msgstr "草稿"
+
diff --git a/snac.h b/snac.h
@@ -1,7 +1,7 @@
/* snac - A simple, minimalistic ActivityPub instance */
/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
-#define VERSION "2.73-dev"
+#define VERSION "2.73"
#define USER_AGENT "snac/" VERSION
@@ -329,7 +329,7 @@ xs_dict *msg_follow(snac *snac, const char *actor);
xs_dict *msg_note(snac *snac, const xs_str *content, const xs_val *rcpts,
const xs_str *in_reply_to, const xs_list *attach,
- int scope, const char *lang);
+ int scope, const char *lang_str, const char *msg_date);
xs_dict *msg_undo(snac *snac, const xs_val *object);
xs_dict *msg_delete(snac *snac, const char *id);