Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- `app/lib/feed_manager.rb`:
  Not a real conflict, glitch-soc-only DM-related method
  too close to changed upstream stuff.
  Ported upstream changes.
- `app/services/batched_remove_status_service.rb`:
  Additional logic in glitch-soc to clear DMs from timelines.
  Ported upstream changes and fixed the DM TL clearing logic.
- `app/workers/scheduler/feed_cleanup_scheduler.rb`:
  Additional code in glitch-soc to clear DM timelines.
  Ported upstream changes.
main
Claire 2020-12-23 01:47:45 +01:00
commit 537afa00f3
58 changed files with 842 additions and 538 deletions

View File

@ -55,7 +55,7 @@ All notable changes to this project will be documented in this file.
- Add indication to admin UI of whether a report has been forwarded ([ThibG](https://github.com/tootsuite/mastodon/pull/13237)) - Add indication to admin UI of whether a report has been forwarded ([ThibG](https://github.com/tootsuite/mastodon/pull/13237))
- Add display of reasons for joining of an account in admin UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15265)) - Add display of reasons for joining of an account in admin UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15265))
- Add option to obfuscate domain name in public list of domain blocks ([Gargron](https://github.com/tootsuite/mastodon/pull/15355)) - Add option to obfuscate domain name in public list of domain blocks ([Gargron](https://github.com/tootsuite/mastodon/pull/15355))
- Add option to make reasons for joining required on sign-up ([ThibG](https://github.com/tootsuite/mastodon/pull/15326), [ThibG](https://github.com/tootsuite/mastodon/pull/15358)) - Add option to make reasons for joining required on sign-up ([ThibG](https://github.com/tootsuite/mastodon/pull/15326), [ThibG](https://github.com/tootsuite/mastodon/pull/15358), [ThibG](https://github.com/tootsuite/mastodon/pull/15385), [ThibG](https://github.com/tootsuite/mastodon/pull/15405))
- Add ActivityPub follower synchronization mechanism ([ThibG](https://github.com/tootsuite/mastodon/pull/14510), [ThibG](https://github.com/tootsuite/mastodon/pull/15026)) - Add ActivityPub follower synchronization mechanism ([ThibG](https://github.com/tootsuite/mastodon/pull/14510), [ThibG](https://github.com/tootsuite/mastodon/pull/15026))
- Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721)) - Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721))
- Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595), [noellabo](https://github.com/tootsuite/mastodon/pull/15277)) - Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595), [noellabo](https://github.com/tootsuite/mastodon/pull/15277))
@ -66,7 +66,7 @@ All notable changes to this project will be documented in this file.
- Add `tootctl accounts merge` ([Gargron](https://github.com/tootsuite/mastodon/pull/15201), [ThibG](https://github.com/tootsuite/mastodon/pull/15264), [ThibG](https://github.com/tootsuite/mastodon/pull/15256)) - Add `tootctl accounts merge` ([Gargron](https://github.com/tootsuite/mastodon/pull/15201), [ThibG](https://github.com/tootsuite/mastodon/pull/15264), [ThibG](https://github.com/tootsuite/mastodon/pull/15256))
- Has someone changed their domain or subdomain thereby creating two accounts where there should be one? - Has someone changed their domain or subdomain thereby creating two accounts where there should be one?
- This command will fix it on your end - This command will fix it on your end
- Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223)) - Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223), [ThibG](https://github.com/tootsuite/mastodon/pull/15373))
- Index corruption in the database? - Index corruption in the database?
- This command is for you - This command is for you
- **Add support for managing multiple stream subscriptions in a single connection** ([Gargron](https://github.com/tootsuite/mastodon/pull/14524), [Gargron](https://github.com/tootsuite/mastodon/pull/14566), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14859), [zunda](https://github.com/tootsuite/mastodon/pull/14608)) - **Add support for managing multiple stream subscriptions in a single connection** ([Gargron](https://github.com/tootsuite/mastodon/pull/14524), [Gargron](https://github.com/tootsuite/mastodon/pull/14566), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14859), [zunda](https://github.com/tootsuite/mastodon/pull/14608))
@ -77,6 +77,7 @@ All notable changes to this project will be documented in this file.
- Add `GET /api/v1/accounts/:id/featured_tags` to REST API ([noellabo](https://github.com/tootsuite/mastodon/pull/11817), [noellabo](https://github.com/tootsuite/mastodon/pull/15270)) - Add `GET /api/v1/accounts/:id/featured_tags` to REST API ([noellabo](https://github.com/tootsuite/mastodon/pull/11817), [noellabo](https://github.com/tootsuite/mastodon/pull/15270))
- Add stoplight for object storage failures, return HTTP 503 in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/13043)) - Add stoplight for object storage failures, return HTTP 503 in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/13043))
- Add optional `tootctl remove media` cronjob in Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14396)) - Add optional `tootctl remove media` cronjob in Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14396))
- Add clean error message when `RAILS_ENV` is unset ([ThibG](https://github.com/tootsuite/mastodon/pull/15381))
### Changed ### Changed
@ -84,7 +85,7 @@ All notable changes to this project will be documented in this file.
- Background of the overlay matches the color of the image - Background of the overlay matches the color of the image
- Action bar to interact with or open the toot from the modal - Action bar to interact with or open the toot from the modal
- Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091)) - Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091))
- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855)) - **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855), [ThibG](https://github.com/tootsuite/mastodon/pull/15380))
- Suspensions no longer equal deletions - Suspensions no longer equal deletions
- A suspended account can be unsuspended with minimal consequences for 30 days - A suspended account can be unsuspended with minimal consequences for 30 days
- Immediate deletion of data is still available as an explicit option - Immediate deletion of data is still available as an explicit option
@ -162,6 +163,7 @@ All notable changes to this project will be documented in this file.
- Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674)) - Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674))
- Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673)) - Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673))
- Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675)) - Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675))
- Fix inefficieny when deleting accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/15387), [ThibG](https://github.com/tootsuite/mastodon/pull/15409), [ThibG](https://github.com/tootsuite/mastodon/pull/15407), [ThibG](https://github.com/tootsuite/mastodon/pull/15408), [ThibG](https://github.com/tootsuite/mastodon/pull/15402))
- Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534)) - Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534))
- Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/tootsuite/mastodon/pull/15287)) - Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/tootsuite/mastodon/pull/15287))
- Fix performance on instances list in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15282)) - Fix performance on instances list in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15282))

View File

@ -149,7 +149,7 @@
"emoji_button.search_results": "Suchergebnisse", "emoji_button.search_results": "Suchergebnisse",
"emoji_button.symbols": "Symbole", "emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reisen und Orte", "emoji_button.travel": "Reisen und Orte",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Konto gesperrt",
"empty_column.account_timeline": "Keine Beiträge!", "empty_column.account_timeline": "Keine Beiträge!",
"empty_column.account_unavailable": "Konto nicht verfügbar", "empty_column.account_unavailable": "Konto nicht verfügbar",
"empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.blocks": "Du hast keine Profile blockiert.",
@ -266,9 +266,9 @@
"lists.edit.submit": "Titel ändern", "lists.edit.submit": "Titel ändern",
"lists.new.create": "Liste hinzufügen", "lists.new.create": "Liste hinzufügen",
"lists.new.title_placeholder": "Neuer Titel der Liste", "lists.new.title_placeholder": "Neuer Titel der Liste",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Jeder gefolgte Benutzer",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Mitglieder der Liste",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "Niemand",
"lists.replies_policy.title": "Antworten anzeigen für:", "lists.replies_policy.title": "Antworten anzeigen für:",
"lists.search": "Suche nach Leuten denen du folgst", "lists.search": "Suche nach Leuten denen du folgst",
"lists.subheading": "Deine Listen", "lists.subheading": "Deine Listen",
@ -334,12 +334,12 @@
"notifications.filter.mentions": "Erwähnungen", "notifications.filter.mentions": "Erwähnungen",
"notifications.filter.polls": "Ergebnisse der Umfrage", "notifications.filter.polls": "Ergebnisse der Umfrage",
"notifications.filter.statuses": "Updates von Personen, denen du folgst", "notifications.filter.statuses": "Updates von Personen, denen du folgst",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "Zugriff gewährt.",
"notifications.group": "{count} Benachrichtigungen", "notifications.group": "{count} Benachrichtigungen",
"notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren", "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren",
"notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.", "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.",
"notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde", "notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "Desktop-Benachrichtigungen sind nicht verfügbar, da die erforderliche Berechtigung nicht erteilt wurde.",
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen", "notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.", "notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
"notifications_permission_banner.title": "Verpasse nie etwas", "notifications_permission_banner.title": "Verpasse nie etwas",

View File

@ -353,13 +353,13 @@
"poll_button.add_poll": "Aldoni balotenketon", "poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon", "poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaĝan privatecon", "privacy.change": "Agordi mesaĝan privatecon",
"privacy.direct.long": "Afiŝi nur al menciitaj uzantoj", "privacy.direct.long": "Videbla nur al menciitaj uzantoj",
"privacy.direct.short": "Rekta", "privacy.direct.short": "Rekta",
"privacy.private.long": "Afiŝi nur al sekvantoj", "privacy.private.long": "Videbla nur al viaj sekvantoj",
"privacy.private.short": "Nur por sekvantoj", "privacy.private.short": "Nur al sekvantoj",
"privacy.public.long": "Afiŝi en publikaj tempolinioj", "privacy.public.long": "Videbla al ĉiuj, afiŝita en publikaj tempolinioj",
"privacy.public.short": "Publika", "privacy.public.short": "Publika",
"privacy.unlisted.long": "Ne afiŝi en publikaj tempolinioj", "privacy.unlisted.long": "Videbla al ĉiuj, sed ne en publikaj tempolinioj",
"privacy.unlisted.short": "Nelistigita", "privacy.unlisted.short": "Nelistigita",
"refresh": "Refreŝigu", "refresh": "Refreŝigu",
"regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.label": "Ŝargado…",

View File

@ -438,7 +438,7 @@
"tabs_bar.local_timeline": "Fil public local", "tabs_bar.local_timeline": "Fil public local",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"time_remaining.days": "{number, plural, one {# day} other {# days}} restants", "time_remaining.days": "{number, plural, one {# jour} other {# jours}} restant·s",
"time_remaining.hours": "{number, plural, one {# heure} other {# heures}} restantes", "time_remaining.hours": "{number, plural, one {# heure} other {# heures}} restantes",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} restantes", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} restantes",
"time_remaining.moments": "Encore quelques instants", "time_remaining.moments": "Encore quelques instants",

View File

@ -134,7 +134,7 @@
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "New arrivals",
"directory.recently_active": "Nedavno aktivni", "directory.recently_active": "Nedavno aktivni",
"embed.instructions": "Embed this status on your website by copying the code below.", "embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:", "embed.preview": "Evo kako će izgledati:",
"emoji_button.activity": "Aktivnost", "emoji_button.activity": "Aktivnost",
"emoji_button.custom": "Prilagođeno", "emoji_button.custom": "Prilagođeno",
"emoji_button.flags": "Zastave", "emoji_button.flags": "Zastave",
@ -149,7 +149,7 @@
"emoji_button.search_results": "Rezultati pretraživanja", "emoji_button.search_results": "Rezultati pretraživanja",
"emoji_button.symbols": "Simboli", "emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanje i mjesta", "emoji_button.travel": "Putovanje i mjesta",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Račun je suspendiran",
"empty_column.account_timeline": "Ovdje nema tootova!", "empty_column.account_timeline": "Ovdje nema tootova!",
"empty_column.account_unavailable": "Profil nije dostupan", "empty_column.account_unavailable": "Profil nije dostupan",
"empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.blocks": "Još niste blokirali nikoga.",
@ -165,7 +165,7 @@
"empty_column.home.public_timeline": "javnu vremensku crtu", "empty_column.home.public_timeline": "javnu vremensku crtu",
"empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.", "empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.", "empty_column.mutes": "Niste utišali nijednog korisnika.",
"empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.", "empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.",
"empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili", "empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
@ -266,9 +266,9 @@
"lists.edit.submit": "Promijeni naslov", "lists.edit.submit": "Promijeni naslov",
"lists.new.create": "Dodaj listu", "lists.new.create": "Dodaj listu",
"lists.new.title_placeholder": "Naziv nove liste", "lists.new.title_placeholder": "Naziv nove liste",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Bilo koji praćeni korisnik",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Članovi liste",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "Nitko",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Traži među praćenim ljudima", "lists.search": "Traži među praćenim ljudima",
"lists.subheading": "Vaše liste", "lists.subheading": "Vaše liste",
@ -277,10 +277,10 @@
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}", "media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
"missing_indicator.label": "Nije pronađeno", "missing_indicator.label": "Nije pronađeno",
"missing_indicator.sublabel": "This resource could not be found", "missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration", "mute_modal.duration": "Trajanje",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps", "navigation_bar.apps": "Mobilne aplikacije",
"navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.blocks": "Blokirani korisnici",
"navigation_bar.bookmarks": "Bookmarks", "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.community_timeline": "Lokalna vremenska crta",
@ -336,7 +336,7 @@
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} obavijesti", "notifications.group": "{count} obavijesti",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
@ -384,7 +384,7 @@
"search_popout.tips.status": "toot", "search_popout.tips.status": "toot",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "korisnik", "search_popout.tips.user": "korisnik",
"search_results.accounts": "People", "search_results.accounts": "Ljudi",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots", "search_results.statuses": "Toots",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",

View File

@ -128,7 +128,7 @@
"conversation.delete": "Ջնջել խօսակցութիւնը", "conversation.delete": "Ջնջել խօսակցութիւնը",
"conversation.mark_as_read": "Նշել որպէս ընթերցուած", "conversation.mark_as_read": "Նշել որպէս ընթերցուած",
"conversation.open": "Դիտել խօսակցութիւնը", "conversation.open": "Դիտել խօսակցութիւնը",
"conversation.with": "{names}֊երի հետ", "conversation.with": "{names}-ի հետ",
"directory.federated": "Յայտնի դաշնեզերքից", "directory.federated": "Յայտնի դաշնեզերքից",
"directory.local": "{domain} տիրոյթից միայն", "directory.local": "{domain} տիրոյթից միայն",
"directory.new_arrivals": "Նորեկներ", "directory.new_arrivals": "Նորեկներ",
@ -268,7 +268,7 @@
"lists.new.title_placeholder": "Նոր ցանկի վերնագիր", "lists.new.title_placeholder": "Նոր ցանկի վերնագիր",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "Ոչ ոք",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Փնտրել քո հետեւած մարդկանց մեջ", "lists.search": "Փնտրել քո հետեւած մարդկանց մեջ",
"lists.subheading": "Քո ցանկերը", "lists.subheading": "Քո ցանկերը",
@ -334,7 +334,7 @@
"notifications.filter.mentions": "Նշումները", "notifications.filter.mentions": "Նշումները",
"notifications.filter.polls": "Հարցման արդիւնքները", "notifications.filter.polls": "Հարցման արդիւնքները",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "Թոյլատրել։",
"notifications.group": "{count} ծանուցում", "notifications.group": "{count} ծանուցում",
"notifications.mark_as_read": "Համարել բոլոր ծանուցումները ընթերցած", "notifications.mark_as_read": "Համարել բոլոր ծանուցումները ընթերցած",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
@ -343,7 +343,7 @@
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները", "notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "Հետ բերել",
"poll.closed": "Փակ", "poll.closed": "Փակ",
"poll.refresh": "Թարմացնել", "poll.refresh": "Թարմացնել",
"poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}", "poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}",
@ -470,7 +470,7 @@
"upload_modal.detect_text": "Հայտնբերել տեքստը նկարից", "upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
"upload_modal.edit_media": "Խմբագրել մեդիան", "upload_modal.edit_media": "Խմբագրել մեդիան",
"upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։", "upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։",
"upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…",
"upload_modal.preview_label": "Նախադիտում ({ratio})", "upload_modal.preview_label": "Նախադիտում ({ratio})",
"upload_progress.label": "Վերբեռնվում է…", "upload_progress.label": "Վերբեռնվում է…",
"video.close": "Փակել տեսագրութիւնը", "video.close": "Փակել տեսագրութիւնը",

View File

@ -2,17 +2,17 @@
"account.account_note_header": "കുറിപ്പ്", "account.account_note_header": "കുറിപ്പ്",
"account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക", "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക",
"account.badges.bot": "റോബോട്ട്", "account.badges.bot": "റോബോട്ട്",
"account.badges.group": "കൂട്ടം", "account.badges.group": "ഗ്രൂപ്പ്",
"account.block": "@{name} നെ ബ്ലോക്ക് ചെയ്യുക", "account.block": "@{name} -നെ തടയുക",
"account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക", "account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക",
"account.blocked": "തടഞ്ഞു", "account.blocked": "തടഞ്ഞു",
"account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക", "account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക",
"account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക", "account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക",
"account.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക", "account.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക",
"account.domain_blocked": "മേഖല മറയ്ക്കപ്പെട്ടിരിക്കുന്നു", "account.domain_blocked": "മേഖല മറയ്ക്കപ്പെട്ടിരിക്കുന്നു",
"account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക",
"account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക",
"account.follow": "പിന്തുടരുക", "account.follow": "പിന്തുടരുക",
"account.followers": "പിന്തുടരുന്നവർ", "account.followers": "പിന്തുടരുന്നവർ",
@ -67,7 +67,7 @@
"column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ",
"column.favourites": "പ്രിയപ്പെട്ടവ", "column.favourites": "പ്രിയപ്പെട്ടവ",
"column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
"column.home": "ഭവന", "column.home": "ഹോ",
"column.lists": "പട്ടികകൾ", "column.lists": "പട്ടികകൾ",
"column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", "column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ",
"column.notifications": "അറിയിപ്പുകൾ", "column.notifications": "അറിയിപ്പുകൾ",
@ -105,17 +105,17 @@
"compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല", "compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല",
"compose_form.spoiler_placeholder": "നിങ്ങളുടെ മുന്നറിയിപ്പ് ഇവിടെ എഴുതുക", "compose_form.spoiler_placeholder": "നിങ്ങളുടെ മുന്നറിയിപ്പ് ഇവിടെ എഴുതുക",
"confirmation_modal.cancel": "റദ്ദാക്കുക", "confirmation_modal.cancel": "റദ്ദാക്കുക",
"confirmations.block.block_and_report": "Block & Report", "confirmations.block.block_and_report": "തടയുകയും റിപ്പോർട്ടും ചെയ്യുക",
"confirmations.block.confirm": "തടയുക", "confirmations.block.confirm": "തടയുക",
"confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.block.message": "{name} തടയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?",
"confirmations.delete.confirm": "മായ്ക്കുക", "confirmations.delete.confirm": "മായ്ക്കുക",
"confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
"confirmations.delete_list.confirm": "മായ്ക്കുക", "confirmations.delete_list.confirm": "മായ്ക്കുക",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.delete_list.message": "ഈ പട്ടിക എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?",
"confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.confirm": "മുഴുവൻ ഡൊമെയ്‌നും തടയുക",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.logout.confirm": "പുറത്തുകടക്കുക", "confirmations.logout.confirm": "പുറത്തുകടക്കുക",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?",
"confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക", "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.mute.message": "Are you sure you want to mute {name}?",
@ -133,7 +133,7 @@
"directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.local": "{domain} ൽ നിന്ന് മാത്രം",
"directory.new_arrivals": "പുതിയ വരവുകൾ", "directory.new_arrivals": "പുതിയ വരവുകൾ",
"directory.recently_active": "അടുത്തിടെയായി സജീവമായ", "directory.recently_active": "അടുത്തിടെയായി സജീവമായ",
"embed.instructions": "Embed this status on your website by copying the code below.", "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.",
"embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:",
"emoji_button.activity": "പ്രവര്‍ത്തനം", "emoji_button.activity": "പ്രവര്‍ത്തനം",
"emoji_button.custom": "സ്വന്തമായ ഭേദഗതി", "emoji_button.custom": "സ്വന്തമായ ഭേദഗതി",
@ -141,7 +141,7 @@
"emoji_button.food": "ഭക്ഷണവും പാനീയവും", "emoji_button.food": "ഭക്ഷണവും പാനീയവും",
"emoji_button.label": "ഇമോജി ചേർക്കുക", "emoji_button.label": "ഇമോജി ചേർക്കുക",
"emoji_button.nature": "പ്രകൃതി", "emoji_button.nature": "പ്രകൃതി",
"emoji_button.not_found": "മോജി പാടില്ല (╯°□°)╯︵ ┻━┻", "emoji_button.not_found": "മോജി പാടില്ല (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "വസ്തുക്കൾ", "emoji_button.objects": "വസ്തുക്കൾ",
"emoji_button.people": "ആളുകൾ", "emoji_button.people": "ആളുകൾ",
"emoji_button.recent": "അടിക്കടി ഉപയോഗിക്കുന്നവ", "emoji_button.recent": "അടിക്കടി ഉപയോഗിക്കുന്നവ",
@ -149,7 +149,7 @@
"emoji_button.search_results": "തിരച്ചിൽ ഫലങ്ങൾ", "emoji_button.search_results": "തിരച്ചിൽ ഫലങ്ങൾ",
"emoji_button.symbols": "ചിഹ്നങ്ങൾ", "emoji_button.symbols": "ചിഹ്നങ്ങൾ",
"emoji_button.travel": "യാത്രയും സ്ഥലങ്ങളും", "emoji_button.travel": "യാത്രയും സ്ഥലങ്ങളും",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "അക്കൗണ്ട് താൽക്കാലികമായി നിർത്തിവച്ചു",
"empty_column.account_timeline": "ഇവിടെ ടൂട്ടുകൾ ഇല്ല!", "empty_column.account_timeline": "ഇവിടെ ടൂട്ടുകൾ ഇല്ല!",
"empty_column.account_unavailable": "പ്രൊഫൈൽ ലഭ്യമല്ല", "empty_column.account_unavailable": "പ്രൊഫൈൽ ലഭ്യമല്ല",
"empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.",
@ -160,7 +160,7 @@
"empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
"empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.", "empty_column.hashtag": "ഈ ഹാഷ്‌ടാഗിൽ ഇതുവരെ ഒന്നുമില്ല.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "പൊതു സമയരേഖ", "empty_column.home.public_timeline": "പൊതു സമയരേഖ",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
@ -179,7 +179,7 @@
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"generic.saved": "സംരക്ഷിച്ചു", "generic.saved": "സംരക്ഷിച്ചു",
"getting_started.developers": "വികസിപ്പിക്കുന്നവർ", "getting_started.developers": "വികസിപ്പിക്കുന്നവർ",
"getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി", "getting_started.directory": "പ്രൊഫൈൽ ഡയറക്ടറി",
"getting_started.documentation": "രേഖാ സമാഹരണം", "getting_started.documentation": "രേഖാ സമാഹരണം",
"getting_started.heading": "തുടക്കം കുറിക്കുക", "getting_started.heading": "തുടക്കം കുറിക്കുക",
"getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക",
@ -190,7 +190,7 @@
"hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}",
"hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ",
"hashtag.column_settings.select.no_options_message": "ഒരു സൂചനയും കണ്ടെത്തിയില്ല", "hashtag.column_settings.select.no_options_message": "ഒരു സൂചനയും കണ്ടെത്തിയില്ല",
"hashtag.column_settings.select.placeholder": "ചർച്ചാവിഷയങ്ങൾ എഴുതുക…", "hashtag.column_settings.select.placeholder": "ഹാഷ്ടാഗുകൾ എഴുതുക…",
"hashtag.column_settings.tag_mode.all": "ഇവയെല്ലാം", "hashtag.column_settings.tag_mode.all": "ഇവയെല്ലാം",
"hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും", "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും",
"hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല", "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല",
@ -206,7 +206,7 @@
"introduction.federation.action": "അടുത്തത്", "introduction.federation.action": "അടുത്തത്",
"introduction.federation.federated.headline": "സംയുക്തമാക്കിയ", "introduction.federation.federated.headline": "സംയുക്തമാക്കിയ",
"introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
"introduction.federation.home.headline": "ഭവന", "introduction.federation.home.headline": "ഹോ",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "പ്രാദേശികം", "introduction.federation.local.headline": "പ്രാദേശികം",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
@ -233,17 +233,17 @@
"keyboard_shortcuts.favourites": "to open favourites list", "keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ", "keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ",
"keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.home": "ഹോം ടൈംലൈൻ തുറക്കുന്നതിന്",
"keyboard_shortcuts.hotkey": "Hotkey", "keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.local": "പ്രാദേശിക സമയരേഖ തുറക്കാൻ",
"keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "to open muted users list", "keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.my_profile": "നിങ്ങളുടെ പ്രൊഫൈൽ തുറക്കാൻ",
"keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.notifications": "to open notifications column",
"keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.open_media": "മീഡിയ തുറക്കാൻ",
"keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.profile": "രചയിതാവിന്റെ പ്രൊഫൈൽ തുറക്കുന്നതിന്",
"keyboard_shortcuts.reply": "മറുപടി അയക്കാൻ", "keyboard_shortcuts.reply": "മറുപടി അയക്കാൻ",
"keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search", "keyboard_shortcuts.search": "to focus search",
@ -268,7 +268,7 @@
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "ആരുമില്ല",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "എന്റെ പട്ടികകൾ", "lists.subheading": "എന്റെ പട്ടികകൾ",
@ -277,208 +277,208 @@
"media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}", "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "കാണാനില്ല", "missing_indicator.label": "കാണാനില്ല",
"missing_indicator.sublabel": "This resource could not be found", "missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration", "mute_modal.duration": "കാലാവധി",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "അനിശ്ചിതകാല",
"navigation_bar.apps": "Mobile apps", "navigation_bar.apps": "മൊബൈൽ ആപ്പുകൾ",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
"navigation_bar.bookmarks": "അടയാളങ്ങൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ",
"navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ",
"navigation_bar.discover": "Discover", "navigation_bar.discover": "കണ്ടെത്തുക",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "പ്രിയപ്പെട്ടവ",
"navigation_bar.filters": "Muted words", "navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
"navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this server", "navigation_bar.info": "ഈ സെർവറിനെക്കുറിച്ച്",
"navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists", "navigation_bar.lists": "ലിസ്റ്റുകൾ",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "ലോഗൗട്ട്",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ",
"navigation_bar.personal": "Personal", "navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "സുരക്ഷ",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു",
"notification.follow_request": "{name} has requested to follow you", "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
"notification.own_poll": "Your poll has ended", "notification.own_poll": "നിങ്ങളുടെ പോൾ അവസാനിച്ചു",
"notification.poll": "A poll you have voted in has ended", "notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status", "notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു",
"notification.status": "{name} just posted", "notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്‌തു",
"notifications.clear": "Clear notifications", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ",
"notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:",
"notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.advanced": "എല്ലാ വിഭാഗങ്ങളും പ്രദർശിപ്പിക്കുക",
"notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show", "notifications.column_settings.filter_bar.show": "കാണിക്കുക",
"notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.follow_request": "പുതിയ പിന്തുടരൽ അഭ്യർത്ഥനകൾ:",
"notifications.column_settings.mention": "Mentions:", "notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:", "notifications.column_settings.poll": "പോൾ ഫലങ്ങൾ:",
"notifications.column_settings.push": "Push notifications", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.reblog": "ബൂസ്റ്റുകൾ:",
"notifications.column_settings.show": "Show in column", "notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound", "notifications.column_settings.sound": "ശബ്ദം പ്ലേ ചെയ്യുക",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:",
"notifications.filter.all": "All", "notifications.filter.all": "എല്ലാം",
"notifications.filter.boosts": "Boosts", "notifications.filter.boosts": "ബൂസ്റ്റുകൾ",
"notifications.filter.favourites": "Favourites", "notifications.filter.favourites": "പ്രിയപ്പെട്ടവ",
"notifications.filter.follows": "Follows", "notifications.filter.follows": "പിന്തുടരുന്നു",
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "പോൾ ഫലങ്ങൾ",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "നിങ്ങൾ പിന്തുടരുന്ന ആളുകളിൽ നിന്നുള്ള അപ്‌ഡേറ്റുകൾ",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "അനുമതി നൽകുക.",
"notifications.group": "{count} notifications", "notifications.group": "{count} അറിയിപ്പുകൾ",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "എല്ലാ അറിയിപ്പുകളും വായിച്ചതായി അടയാളപ്പെടുത്തുക",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "തിരികെ വയ്ക്കുക",
"poll.closed": "Closed", "poll.closed": "അടച്ചു",
"poll.refresh": "Refresh", "poll.refresh": "പുതുക്കുക",
"poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Vote", "poll.vote": "വോട്ട് ചെയ്യുക",
"poll.voted": "You voted for this answer", "poll.voted": "You voted for this answer",
"poll_button.add_poll": "Add a poll", "poll_button.add_poll": "ഒരു പോൾ ചേർക്കുക",
"poll_button.remove_poll": "Remove poll", "poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക",
"privacy.change": "Adjust status privacy", "privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only", "privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Direct", "privacy.direct.short": "നേരിട്ട്",
"privacy.private.long": "Post to followers only", "privacy.private.long": "Post to followers only",
"privacy.private.short": "Followers-only", "privacy.private.short": "Followers-only",
"privacy.public.long": "Post to public timelines", "privacy.public.long": "Post to public timelines",
"privacy.public.short": "Public", "privacy.public.short": "Public",
"privacy.unlisted.long": "Do not show in public timelines", "privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "Unlisted", "privacy.unlisted.short": "Unlisted",
"refresh": "Refresh", "refresh": "പുതുക്കുക",
"regeneration_indicator.label": "Loading…", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!", "regeneration_indicator.sublabel": "നിങ്ങളുടെ ഹോം ഫീഡ് തയാറാക്കുന്നു!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "now", "relative_time.just_now": "ഇപ്പോൾ",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"relative_time.today": "today", "relative_time.today": "ഇന്ന്",
"reply_indicator.cancel": "Cancel", "reply_indicator.cancel": "റദ്ദാക്കുക",
"report.forward": "Forward to {target}", "report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Additional comments", "report.placeholder": "കൂടുതൽ അഭിപ്രായങ്ങൾ",
"report.submit": "Submit", "report.submit": "സമർപ്പിക്കുക",
"report.target": "Report {target}", "report.target": "Report {target}",
"search.placeholder": "Search", "search.placeholder": "തിരയുക",
"search_popout.search_format": "Advanced search format", "search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag", "search_popout.tips.hashtag": "ഹാഷ്ടാഗ്",
"search_popout.tips.status": "status", "search_popout.tips.status": "ടൂട്ട്",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user", "search_popout.tips.user": "ഉപയോക്താവ്",
"search_results.accounts": "People", "search_results.accounts": "ആളുകൾ",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "ഹാഷ്ടാഗുകൾ",
"search_results.statuses": "Toots", "search_results.statuses": "ടൂട്ടുകൾ",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface", "status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}", "status.block": "@{name} -നെ തടയുക",
"status.bookmark": "Bookmark", "status.bookmark": "ബുക്ക്മാർക്ക്",
"status.cancel_reblog_private": "Unboost", "status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted", "status.cannot_reblog": "ഈ പോസ്റ്റ് ബൂസ്റ്ചെയ്യാൻ കഴിയില്ല",
"status.copy": "Copy link to status", "status.copy": "ടൂട്ടിലേക്ക് ലിങ്ക് പകർത്തുക",
"status.delete": "മായ്ക്കുക", "status.delete": "മായ്ക്കുക",
"status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച", "status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച",
"status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക", "status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
"status.embed": "ഉൾച്ചേർക്കുക", "status.embed": "ഉൾച്ചേർക്കുക",
"status.favourite": "പ്രിയപ്പെട്ടത്", "status.favourite": "പ്രിയപ്പെട്ടത്",
"status.filtered": "Filtered", "status.filtered": "ഫിൽട്ടർ ചെയ്‌തു",
"status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക", "status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക",
"status.media_hidden": "Media hidden", "status.media_hidden": "മീഡിയ മറച്ചു",
"status.mention": "@{name} സൂചിപ്പിക്കുക", "status.mention": "@{name} സൂചിപ്പിക്കുക",
"status.more": "More", "status.more": "കൂടുതൽ",
"status.mute": "Mute @{name}", "status.mute": "@{name}-നെ നിശ്ശബ്ദമാക്കുക",
"status.mute_conversation": "Mute conversation", "status.mute_conversation": "Mute conversation",
"status.open": "Expand this status", "status.open": "Expand this status",
"status.pin": "Pin on profile", "status.pin": "Pin on profile",
"status.pinned": "Pinned toot", "status.pinned": "Pinned toot",
"status.read_more": "Read more", "status.read_more": "കൂടുതൽ വായിക്കുക",
"status.reblog": "Boost", "status.reblog": "ബൂസ്റ്റ്",
"status.reblog_private": "Boost with original visibility", "status.reblog_private": "Boost with original visibility",
"status.reblogged_by": "{name} boosted", "status.reblogged_by": "{name} ബൂസ്റ്റ് ചെയ്തു",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft", "status.redraft": "ഇല്ലാതാക്കുക & വീണ്ടും ഡ്രാഫ്റ്റ് ചെയ്യുക",
"status.remove_bookmark": "Remove bookmark", "status.remove_bookmark": "ബുക്ക്മാർക്ക് നീക്കംചെയ്യുക",
"status.reply": "Reply", "status.reply": "മറുപടി",
"status.replyAll": "Reply to thread", "status.replyAll": "Reply to thread",
"status.report": "Report @{name}", "status.report": "Report @{name}",
"status.sensitive_warning": "Sensitive content", "status.sensitive_warning": "Sensitive content",
"status.share": "Share", "status.share": "പങ്കിടുക",
"status.show_less": "Show less", "status.show_less": "കുറച്ച് കാണിക്കുക",
"status.show_less_all": "Show less for all", "status.show_less_all": "Show less for all",
"status.show_more": "Show more", "status.show_more": "കൂടുതകൽ കാണിക്കുക",
"status.show_more_all": "Show more for all", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക",
"status.show_thread": "Show thread", "status.show_thread": "Show thread",
"status.uncached_media_warning": "Not available", "status.uncached_media_warning": "ലഭ്യമല്ല",
"status.unmute_conversation": "Unmute conversation", "status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile", "status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion", "suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…", "suggestions.header": "നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടാകാം…",
"tabs_bar.federated_timeline": "Federated", "tabs_bar.federated_timeline": "സംയുക്തമാക്കിയ",
"tabs_bar.home": "Home", "tabs_bar.home": "ഹോം",
"tabs_bar.local_timeline": "Local", "tabs_bar.local_timeline": "പ്രാദേശികം",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "അറിയിപ്പുകൾ",
"tabs_bar.search": "Search", "tabs_bar.search": "തിരയുക",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining", "time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers", "timeline_hint.resources.followers": "പിന്തുടരുന്നവർ",
"timeline_hint.resources.follows": "Follows", "timeline_hint.resources.follows": "പിന്തുടരുന്നു",
"timeline_hint.resources.statuses": "Older toots", "timeline_hint.resources.statuses": "പഴയ ടൂട്ടുകൾ",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Trending now", "trends.trending_now": "ഇപ്പോൾ ട്രെൻഡിംഗ്",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"units.short.billion": "{count}B", "units.short.billion": "{count}B",
"units.short.million": "{count}M", "units.short.million": "{count}ദശലക്ഷം",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload", "upload_area.title": "അപ്‌ലോഡുചെയ്യാൻ വലിച്ചിടുക",
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "ഇമേജുകൾ, ഒരു വീഡിയോ അല്ലെങ്കിൽ ഓഡിയോ ഫയൽ ചേർക്കുക",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "ഫയൽ അപ്‌ലോഡ് പരിധി കവിഞ്ഞു.",
"upload_error.poll": "File upload not allowed with polls.", "upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss", "upload_form.audio_description": "കേൾവിശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
"upload_form.description": "Describe for the visually impaired", "upload_form.description": "കാഴ്ചശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
"upload_form.edit": "Edit", "upload_form.edit": "തിരുത്തുക",
"upload_form.thumbnail": "Change thumbnail", "upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക",
"upload_form.undo": "Delete", "upload_form.undo": "ഇല്ലാതാക്കുക",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply", "upload_modal.apply": "പ്രയോഗിക്കുക",
"upload_modal.choose_image": "Choose image", "upload_modal.choose_image": "ചിത്രം തിരഞ്ഞെടുക്കുക",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture", "upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media", "upload_modal.edit_media": "മീഡിയ തിരുത്തുക",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"video.close": "Close video", "video.close": "വീഡിയോ അടയ്ക്കുക",
"video.download": "Download file", "video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക",
"video.exit_fullscreen": "Exit full screen", "video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video", "video.expand": "Expand video",
"video.fullscreen": "Full screen", "video.fullscreen": "പൂർണ്ണ സ്ക്രീൻ",
"video.hide": "Hide video", "video.hide": "വീഡിയോ മറയ്ക്കുക",
"video.mute": "Mute sound", "video.mute": "Mute sound",
"video.pause": "Pause", "video.pause": "Pause",
"video.play": "Play", "video.play": "Play",

View File

@ -149,7 +149,7 @@
"emoji_button.search_results": "Zoekresultaten", "emoji_button.search_results": "Zoekresultaten",
"emoji_button.symbols": "Symbolen", "emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken", "emoji_button.travel": "Reizen en plekken",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Account opgeschort",
"empty_column.account_timeline": "Hier zijn geen toots!", "empty_column.account_timeline": "Hier zijn geen toots!",
"empty_column.account_unavailable": "Profiel is niet beschikbaar", "empty_column.account_unavailable": "Profiel is niet beschikbaar",
"empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
@ -266,9 +266,9 @@
"lists.edit.submit": "Titel veranderen", "lists.edit.submit": "Titel veranderen",
"lists.new.create": "Lijst toevoegen", "lists.new.create": "Lijst toevoegen",
"lists.new.title_placeholder": "Naam nieuwe lijst", "lists.new.title_placeholder": "Naam nieuwe lijst",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Elke gevolgde gebruiker",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Leden van de lijst",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "Niemand",
"lists.replies_policy.title": "Toon reacties aan:", "lists.replies_policy.title": "Toon reacties aan:",
"lists.search": "Zoek naar mensen die je volgt", "lists.search": "Zoek naar mensen die je volgt",
"lists.subheading": "Jouw lijsten", "lists.subheading": "Jouw lijsten",
@ -334,12 +334,12 @@
"notifications.filter.mentions": "Vermeldingen", "notifications.filter.mentions": "Vermeldingen",
"notifications.filter.polls": "Pollresultaten", "notifications.filter.polls": "Pollresultaten",
"notifications.filter.statuses": "Updates van mensen die je volgt", "notifications.filter.statuses": "Updates van mensen die je volgt",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "Toestemming geven.",
"notifications.group": "{count} meldingen", "notifications.group": "{count} meldingen",
"notifications.mark_as_read": "Markeer elke melding als gelezen", "notifications.mark_as_read": "Markeer elke melding als gelezen",
"notifications.permission_denied": "Desktopmeldingen zijn niet beschikbaar omdat een eerdere browsertoestemming werd geweigerd", "notifications.permission_denied": "Desktopmeldingen zijn niet beschikbaar omdat een eerdere browsertoestemming werd geweigerd",
"notifications.permission_denied_alert": "Desktopmeldingen kunnen niet worden ingeschakeld, omdat een eerdere browsertoestemming werd geweigerd", "notifications.permission_denied_alert": "Desktopmeldingen kunnen niet worden ingeschakeld, omdat een eerdere browsertoestemming werd geweigerd",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "Desktopmeldingen zijn niet beschikbaar omdat de benodigde toestemming niet is verleend.",
"notifications_permission_banner.enable": "Desktopmeldingen inschakelen", "notifications_permission_banner.enable": "Desktopmeldingen inschakelen",
"notifications_permission_banner.how_to_control": "Om meldingen te ontvangen wanneer Mastodon niet open is. Je kunt precies bepalen welke soort interacties wel of geen desktopmeldingen geven via de bovenstaande {icon} knop.", "notifications_permission_banner.how_to_control": "Om meldingen te ontvangen wanneer Mastodon niet open is. Je kunt precies bepalen welke soort interacties wel of geen desktopmeldingen geven via de bovenstaande {icon} knop.",
"notifications_permission_banner.title": "Mis nooit meer iets", "notifications_permission_banner.title": "Mis nooit meer iets",

View File

@ -149,7 +149,7 @@
"emoji_button.search_results": "Resultats de recèrca", "emoji_button.search_results": "Resultats de recèrca",
"emoji_button.symbols": "Simbòls", "emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs", "emoji_button.travel": "Viatges & lòcs",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Compte suspendut",
"empty_column.account_timeline": "Cap de tuts aquí!", "empty_column.account_timeline": "Cap de tuts aquí!",
"empty_column.account_unavailable": "Perfil pas disponible", "empty_column.account_unavailable": "Perfil pas disponible",
"empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.blocks": "Avètz pas blocat degun pel moment.",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambiar lo títol", "lists.edit.submit": "Cambiar lo títol",
"lists.new.create": "Ajustar una lista", "lists.new.create": "Ajustar una lista",
"lists.new.title_placeholder": "Títol de la nòva lista", "lists.new.title_placeholder": "Títol de la nòva lista",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Quin seguidor que siá",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Membres de la lista",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "Degun",
"lists.replies_policy.title": "Mostrar las responsas a:", "lists.replies_policy.title": "Mostrar las responsas a:",
"lists.search": "Cercar demest lo mond que seguètz", "lists.search": "Cercar demest lo mond que seguètz",
"lists.subheading": "Vòstras listas", "lists.subheading": "Vòstras listas",
@ -334,12 +334,12 @@
"notifications.filter.mentions": "Mencions", "notifications.filter.mentions": "Mencions",
"notifications.filter.polls": "Resultats del sondatge", "notifications.filter.polls": "Resultats del sondatge",
"notifications.filter.statuses": "Mesas a jorn del monde que seguissètz", "notifications.filter.statuses": "Mesas a jorn del monde que seguissètz",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "Acordar lautorizacion.",
"notifications.group": "{count} notificacions", "notifications.group": "{count} notificacions",
"notifications.mark_as_read": "Marcar totas las notificacions coma legidas", "notifications.mark_as_read": "Marcar totas las notificacions coma legidas",
"notifications.permission_denied": "Las notificacion burèu son pas disponiblas a causa del refús de las demandas dautorizacion navigador", "notifications.permission_denied": "Las notificacion burèu son pas disponiblas a causa del refús de las demandas dautorizacion navigador",
"notifications.permission_denied_alert": "Las notificacions burèu son pas activada, per çò que las autorizacions son estadas refusada abans", "notifications.permission_denied_alert": "Las notificacions burèu son pas activada, per çò que las autorizacions son estadas refusada abans",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "Las notificacions de burèu son pas indisponiblas perque las permissions requeridas son pas estadas acordadas.",
"notifications_permission_banner.enable": "Activar las notificacions burèu", "notifications_permission_banner.enable": "Activar las notificacions burèu",
"notifications_permission_banner.how_to_control": "Per recebre las notificacions de Mastodon quand es pas dobèrt, activatz las notificacions de burèu. Podètz precisar quin tipe de notificacion generarà una notificacion de burèu via lo boton {icon} dessús un còp activadas.", "notifications_permission_banner.how_to_control": "Per recebre las notificacions de Mastodon quand es pas dobèrt, activatz las notificacions de burèu. Podètz precisar quin tipe de notificacion generarà una notificacion de burèu via lo boton {icon} dessús un còp activadas.",
"notifications_permission_banner.title": "Manquetz pas jamai res", "notifications_permission_banner.title": "Manquetz pas jamai res",

View File

@ -149,7 +149,7 @@
"emoji_button.search_results": "Arama sonuçları", "emoji_button.search_results": "Arama sonuçları",
"emoji_button.symbols": "Semboller", "emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler", "emoji_button.travel": "Seyahat ve Yerler",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "Hesap askıya alındı",
"empty_column.account_timeline": "Burada hiç toot yok!", "empty_column.account_timeline": "Burada hiç toot yok!",
"empty_column.account_unavailable": "Profil kullanılamıyor", "empty_column.account_unavailable": "Profil kullanılamıyor",
"empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.", "empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.",
@ -267,7 +267,7 @@
"lists.new.create": "Liste ekle", "lists.new.create": "Liste ekle",
"lists.new.title_placeholder": "Yeni liste başlığı", "lists.new.title_placeholder": "Yeni liste başlığı",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "Listenin üyeleri",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Yanıtları göster:", "lists.replies_policy.title": "Yanıtları göster:",
"lists.search": "Takip ettiğiniz kişiler arasından arayın", "lists.search": "Takip ettiğiniz kişiler arasından arayın",

View File

@ -179,7 +179,7 @@
"follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.",
"generic.saved": "Đã lưu", "generic.saved": "Đã lưu",
"getting_started.developers": "Nhà phát triển", "getting_started.developers": "Nhà phát triển",
"getting_started.directory": "Cộng đồng", "getting_started.directory": "Mạng lưới",
"getting_started.documentation": "Tài liệu", "getting_started.documentation": "Tài liệu",
"getting_started.heading": "Quản lý", "getting_started.heading": "Quản lý",
"getting_started.invite": "Mời bạn bè", "getting_started.invite": "Mời bạn bè",

View File

@ -133,7 +133,7 @@
"directory.local": "仅来自 {domain}", "directory.local": "仅来自 {domain}",
"directory.new_arrivals": "新来者", "directory.new_arrivals": "新来者",
"directory.recently_active": "最近活跃", "directory.recently_active": "最近活跃",
"embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。", "embed.instructions": "要在你的网站上嵌入嘟文,请复制以下代码。",
"embed.preview": "它会像这样显示出来:", "embed.preview": "它会像这样显示出来:",
"emoji_button.activity": "活动", "emoji_button.activity": "活动",
"emoji_button.custom": "自定义", "emoji_button.custom": "自定义",
@ -149,7 +149,7 @@
"emoji_button.search_results": "搜索结果", "emoji_button.search_results": "搜索结果",
"emoji_button.symbols": "符号", "emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点", "emoji_button.travel": "旅行和地点",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "账户被封禁",
"empty_column.account_timeline": "这里没有嘟文!", "empty_column.account_timeline": "这里没有嘟文!",
"empty_column.account_unavailable": "个人资料不可用", "empty_column.account_unavailable": "个人资料不可用",
"empty_column.blocks": "你目前没有屏蔽任何用户。", "empty_column.blocks": "你目前没有屏蔽任何用户。",
@ -163,7 +163,7 @@
"empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.hashtag": "这个话题标签下暂时没有内容。",
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他人问个好吧。", "empty_column.home": "你还没有关注任何用户。快看看{public},向其他人问个好吧。",
"empty_column.home.public_timeline": "公共时间轴", "empty_column.home.public_timeline": "公共时间轴",
"empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", "empty_column.list": "列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。",
"empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。",
"empty_column.mutes": "你没有隐藏任何用户。", "empty_column.mutes": "你没有隐藏任何用户。",
"empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。",
@ -266,9 +266,9 @@
"lists.edit.submit": "更改标题", "lists.edit.submit": "更改标题",
"lists.new.create": "新建列表", "lists.new.create": "新建列表",
"lists.new.title_placeholder": "新列表的标题", "lists.new.title_placeholder": "新列表的标题",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "任何被关注的用户",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "列表成员",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "没有人",
"lists.replies_policy.title": "显示回复给:", "lists.replies_policy.title": "显示回复给:",
"lists.search": "搜索你关注的人", "lists.search": "搜索你关注的人",
"lists.subheading": "你的列表", "lists.subheading": "你的列表",
@ -334,12 +334,12 @@
"notifications.filter.mentions": "提及", "notifications.filter.mentions": "提及",
"notifications.filter.polls": "投票结果", "notifications.filter.polls": "投票结果",
"notifications.filter.statuses": "你关注的人的动态", "notifications.filter.statuses": "你关注的人的动态",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "授予权限",
"notifications.group": "{count} 条通知", "notifications.group": "{count} 条通知",
"notifications.mark_as_read": "将所有通知标为已读", "notifications.mark_as_read": "将所有通知标为已读",
"notifications.permission_denied": "由于权限被拒绝,无法启用桌面通知。", "notifications.permission_denied": "由于权限被拒绝,无法启用桌面通知。",
"notifications.permission_denied_alert": "由于在此之前浏览器权限请求就已被拒绝,所以启用桌面通知失败", "notifications.permission_denied_alert": "由于在此之前浏览器权限请求就已被拒绝,所以启用桌面通知失败",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "所需权限未被授予,所以桌面通知不可用",
"notifications_permission_banner.enable": "启用桌面通知", "notifications_permission_banner.enable": "启用桌面通知",
"notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。您可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。", "notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。您可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。",
"notifications_permission_banner.title": "精彩不容错过", "notifications_permission_banner.title": "精彩不容错过",
@ -403,7 +403,7 @@
"status.favourite": "喜欢", "status.favourite": "喜欢",
"status.filtered": "已过滤", "status.filtered": "已过滤",
"status.load_more": "加载更多", "status.load_more": "加载更多",
"status.media_hidden": "隐藏媒体内容", "status.media_hidden": "隐藏媒体内容",
"status.mention": "提及 @{name}", "status.mention": "提及 @{name}",
"status.more": "更多", "status.more": "更多",
"status.mute": "隐藏 @{name}", "status.mute": "隐藏 @{name}",
@ -429,7 +429,7 @@
"status.show_more_all": "显示所有内容", "status.show_more_all": "显示所有内容",
"status.show_thread": "显示全部对话", "status.show_thread": "显示全部对话",
"status.uncached_media_warning": "暂不可用", "status.uncached_media_warning": "暂不可用",
"status.unmute_conversation": "不再隐藏此对话", "status.unmute_conversation": "将此对话解除静音",
"status.unpin": "在个人资料页面取消置顶", "status.unpin": "在个人资料页面取消置顶",
"suggestions.dismiss": "关闭建议", "suggestions.dismiss": "关闭建议",
"suggestions.header": "您可能会感兴趣…", "suggestions.header": "您可能会感兴趣…",
@ -454,7 +454,7 @@
"units.short.million": "{count}M", "units.short.million": "{count}M",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "将文件拖放到此处开始上传", "upload_area.title": "将文件拖放到此处开始上传",
"upload_button.label": "上传媒体文件", "upload_button.label": "上传图片、视频或音频",
"upload_error.limit": "文件大小超过限制。", "upload_error.limit": "文件大小超过限制。",
"upload_error.poll": "投票中不允许上传文件。", "upload_error.poll": "投票中不允许上传文件。",
"upload_form.audio_description": "为听障人士添加文字描述", "upload_form.audio_description": "为听障人士添加文字描述",

View File

@ -4,27 +4,27 @@
"account.badges.bot": "機器人", "account.badges.bot": "機器人",
"account.badges.group": "群組", "account.badges.group": "群組",
"account.block": "封鎖 @{name}", "account.block": "封鎖 @{name}",
"account.block_domain": "隱藏來自 {domain} 的所有內容", "account.block_domain": "封鎖來自 {domain} 網域的所有內容",
"account.blocked": "已封鎖", "account.blocked": "已封鎖",
"account.browse_more_on_origin_server": "在該器的個人檔案頁上瀏覽更多", "account.browse_more_on_origin_server": "在該服器的個人檔案頁上瀏覽更多",
"account.cancel_follow_request": "取消關注請求", "account.cancel_follow_request": "取消關注請求",
"account.direct": "傳私訊給 @{name}", "account.direct": "傳私訊給 @{name}",
"account.disable_notifications": "當 @{name} 嘟文時不要再通知我", "account.disable_notifications": "取消來自 @{name} 嘟文的通知",
"account.domain_blocked": "已隱藏網域", "account.domain_blocked": "已封鎖網域",
"account.edit_profile": "編輯個人資料", "account.edit_profile": "編輯個人資料",
"account.enable_notifications": "當 @{name} 嘟文時通知我", "account.enable_notifications": "當 @{name} 嘟文時通知我",
"account.endorse": "在個人資料推薦對方", "account.endorse": "在個人資料推薦對方",
"account.follow": "關注", "account.follow": "關注",
"account.followers": "關注者", "account.followers": "關注者",
"account.followers.empty": "尚有人關注這位使用者。", "account.followers.empty": "尚有人關注這位使用者。",
"account.followers_counter": "被 {count, plural,one {{counter} 人}other {{counter} 人}}關注", "account.followers_counter": "被 {count, plural,one {{counter} 人}other {{counter} 人}}關注",
"account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}", "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}",
"account.follows.empty": "這位使用者尚未關注任何使用者。", "account.follows.empty": "這位使用者尚未關注任何。",
"account.follows_you": "關注了", "account.follows_you": "關注了",
"account.hide_reblogs": "隱藏來自 @{name} 的轉", "account.hide_reblogs": "隱藏來自 @{name} 的轉",
"account.last_status": "上次活躍", "account.last_status": "上次活躍時間",
"account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限",
"account.locked_info": "這隻帳戶的隱私狀態被設成鎖定。該擁有者會手動審核能關注這隻帳號的人。", "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核能關注此帳號的人。",
"account.media": "媒體", "account.media": "媒體",
"account.mention": "提及 @{name}", "account.mention": "提及 @{name}",
"account.moved_to": "{name} 已遷移至:", "account.moved_to": "{name} 已遷移至:",
@ -40,13 +40,13 @@
"account.show_reblogs": "顯示來自 @{name} 的嘟文", "account.show_reblogs": "顯示來自 @{name} 的嘟文",
"account.statuses_counter": "{count, plural,one {{counter} 則}other {{counter} 則}}嘟文", "account.statuses_counter": "{count, plural,one {{counter} 則}other {{counter} 則}}嘟文",
"account.unblock": "取消封鎖 @{name}", "account.unblock": "取消封鎖 @{name}",
"account.unblock_domain": "取消隱藏 {domain}", "account.unblock_domain": "取消封鎖域名 {domain}",
"account.unendorse": "不再於個人資料頁面推薦對方", "account.unendorse": "不再於個人資料頁面推薦對方",
"account.unfollow": "取消關注", "account.unfollow": "取消關注",
"account.unmute": "取消靜音 @{name}", "account.unmute": "取消靜音 @{name}",
"account.unmute_notifications": "重新接收來自 @{name} 的通知", "account.unmute_notifications": "重新接收來自 @{name} 的通知",
"account_note.placeholder": "按此添加備注", "account_note.placeholder": "按此添加備注",
"alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試", "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試",
"alert.rate_limited.title": "已限速", "alert.rate_limited.title": "已限速",
"alert.unexpected.message": "發生了非預期的錯誤。", "alert.unexpected.message": "發生了非預期的錯誤。",
"alert.unexpected.title": "哎呀!", "alert.unexpected.title": "哎呀!",
@ -59,17 +59,17 @@
"bundle_modal_error.close": "關閉", "bundle_modal_error.close": "關閉",
"bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.message": "載入此元件時發生錯誤。",
"bundle_modal_error.retry": "重試", "bundle_modal_error.retry": "重試",
"column.blocks": "封鎖的使用者", "column.blocks": "封鎖的使用者",
"column.bookmarks": "書籤", "column.bookmarks": "書籤",
"column.community": "本機時間軸", "column.community": "本機時間軸",
"column.direct": "私訊", "column.direct": "私訊",
"column.directory": "瀏覽個人資料", "column.directory": "瀏覽個人資料",
"column.domain_blocks": "隱藏的網域", "column.domain_blocks": "已封鎖的網域",
"column.favourites": "讚美集", "column.favourites": "收藏",
"column.follow_requests": "關注請求", "column.follow_requests": "關注請求",
"column.home": "頁", "column.home": "頁",
"column.lists": "名單", "column.lists": "名單",
"column.mutes": "靜音的使用者", "column.mutes": "靜音的使用者",
"column.notifications": "通知", "column.notifications": "通知",
"column.pins": "釘選的嘟文", "column.pins": "釘選的嘟文",
"column.public": "聯邦時間軸", "column.public": "聯邦時間軸",
@ -81,116 +81,116 @@
"column_header.show_settings": "顯示設定", "column_header.show_settings": "顯示設定",
"column_header.unpin": "取消釘選", "column_header.unpin": "取消釘選",
"column_subheading.settings": "設定", "column_subheading.settings": "設定",
"community.column_settings.local_only": "只有本", "community.column_settings.local_only": "只有本",
"community.column_settings.media_only": "只有媒體", "community.column_settings.media_only": "只有媒體",
"community.column_settings.remote_only": "只有遠端", "community.column_settings.remote_only": "只有遠端",
"compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。", "compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。",
"compose_form.direct_message_warning_learn_more": "了解更多", "compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.hashtag_warning": "由於這則嘟文被設定成「不公開」,所以它將不會被列在任何主題標籤下。只有公開的嘟文才能藉主題標籤找到。", "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉主題標籤找到。",
"compose_form.lock_disclaimer": "您的帳戶尚未{locked}。任何人都能關注您並看到您設定成只有關注者能看的嘟文。", "compose_form.lock_disclaimer": "您的帳戶尚未{locked}。任何人都能關注您並看到您設定成只有關注者能看的嘟文。",
"compose_form.lock_disclaimer.lock": "上鎖", "compose_form.lock_disclaimer.lock": "上鎖",
"compose_form.placeholder": "正在想些什麼?", "compose_form.placeholder": "正在想些什麼",
"compose_form.poll.add_option": "新增選", "compose_form.poll.add_option": "新增選",
"compose_form.poll.duration": "投票期限", "compose_form.poll.duration": "投票期限",
"compose_form.poll.option_placeholder": "第 {number} 個選", "compose_form.poll.option_placeholder": "第 {number} 個選",
"compose_form.poll.remove_option": "移除此選", "compose_form.poll.remove_option": "移除此選",
"compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
"compose_form.poll.switch_to_single": "變更投票為允許單一選項", "compose_form.poll.switch_to_single": "變更投票為允許單一選項",
"compose_form.publish": "嘟出去", "compose_form.publish": "嘟出去",
"compose_form.publish_loud": "{publish}", "compose_form.publish_loud": "{publish}",
"compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.hide": "標記媒體為敏感內容",
"compose_form.sensitive.marked": "此媒體被標記為敏感內容", "compose_form.sensitive.marked": "此媒體被標記為敏感內容",
"compose_form.sensitive.unmarked": "此媒體未標記為敏感內容", "compose_form.sensitive.unmarked": "此媒體未標記為敏感內容",
"compose_form.spoiler.marked": "正文已隱藏到警告之後", "compose_form.spoiler.marked": "正文已隱藏到警告之後",
"compose_form.spoiler.unmarked": "正文未被隱藏", "compose_form.spoiler.unmarked": "正文未被隱藏",
"compose_form.spoiler_placeholder": "請在此處寫入警告訊息", "compose_form.spoiler_placeholder": "請在此處寫入警告訊息",
"confirmation_modal.cancel": "取消", "confirmation_modal.cancel": "取消",
"confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.block_and_report": "封鎖並檢舉",
"confirmations.block.confirm": "封鎖", "confirmations.block.confirm": "封鎖",
"confirmations.block.message": "確定封鎖 {name} ", "confirmations.block.message": "確定封鎖 {name} ",
"confirmations.delete.confirm": "刪除", "confirmations.delete.confirm": "刪除",
"confirmations.delete.message": "你確定要刪除這條嘟文?", "confirmations.delete.message": "您確定要刪除這則嘟文?",
"confirmations.delete_list.confirm": "刪除", "confirmations.delete_list.confirm": "刪除",
"confirmations.delete_list.message": "確定永久刪除此名單?", "confirmations.delete_list.message": "確定永久刪除此名單?",
"confirmations.domain_block.confirm": "隱藏整個域", "confirmations.domain_block.confirm": "隱藏整個",
"confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 嗎?大部分情況下,你只需要封鎖或靜音少數特定的人就能滿足需求了。你將不能在任何公開的時間軸及通知中看到那個網域的內容。你來自該網域的關注者也會被移除。", "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳號就能滿足需求了。您將不能在任何公開的時間軸及通知中看到此網域的內容。您來自該網域的關注者也將被移除。",
"confirmations.logout.confirm": "登出", "confirmations.logout.confirm": "登出",
"confirmations.logout.message": "確定要登出嗎?", "confirmations.logout.message": "確定要登出嗎?",
"confirmations.mute.confirm": "靜音", "confirmations.mute.confirm": "靜音",
"confirmations.mute.explanation": "這將會隱藏來自他們的貼文與通知,但是他們還是可以查閱你的貼文與關注。", "confirmations.mute.explanation": "這將會隱藏來自他們的貼文與通知,但是他們還是可以查閱你的貼文與關注。",
"confirmations.mute.message": "確定靜音 {name} ", "confirmations.mute.message": "確定靜音 {name} ",
"confirmations.redraft.confirm": "刪除並重新編輯", "confirmations.redraft.confirm": "刪除並重新編輯",
"confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及贊美,且回覆這則的嘟文將會變成獨立的嘟文。", "confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及收藏,且回覆這則的嘟文將會變成獨立的嘟文。",
"confirmations.reply.confirm": "回覆", "confirmations.reply.confirm": "回覆",
"confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
"confirmations.unfollow.confirm": "取消關注", "confirmations.unfollow.confirm": "取消關注",
"confirmations.unfollow.message": "真的要取消關注 {name} 嗎?", "confirmations.unfollow.message": "確定要取消關注 {name} 嗎?",
"conversation.delete": "刪除對話", "conversation.delete": "刪除對話",
"conversation.mark_as_read": "標為已讀", "conversation.mark_as_read": "標為已讀",
"conversation.open": "檢視對話", "conversation.open": "檢視對話",
"conversation.with": "與 {names}", "conversation.with": "與 {names}",
"directory.federated": "來自已知聯邦宇宙", "directory.federated": "來自已知聯邦宇宙",
"directory.local": "僅來自 {domain}", "directory.local": "僅來自 {domain} 網域",
"directory.new_arrivals": "新人", "directory.new_arrivals": "新人",
"directory.recently_active": "最近活躍", "directory.recently_active": "最近活躍",
"embed.instructions": "要嵌入此嘟文,請將以下程式碼貼進你的網站。", "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。",
"embed.preview": "他會顯示成這樣:", "embed.preview": "它將顯示成這樣:",
"emoji_button.activity": "活動", "emoji_button.activity": "活動",
"emoji_button.custom": "自訂", "emoji_button.custom": "自訂",
"emoji_button.flags": "旗", "emoji_button.flags": "旗",
"emoji_button.food": "飲食", "emoji_button.food": "食物 & 飲料",
"emoji_button.label": "插入表情符號", "emoji_button.label": "插入表情符號",
"emoji_button.nature": "自然", "emoji_button.nature": "自然",
"emoji_button.not_found": "啊就沒這表情符號吼!! (╯°□°)╯︵ ┻━┻", "emoji_button.not_found": "啊就沒這表情符號吼!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物件", "emoji_button.objects": "物件",
"emoji_button.people": "使用者", "emoji_button.people": "人物",
"emoji_button.recent": "最常使用", "emoji_button.recent": "最常使用",
"emoji_button.search": "搜尋…", "emoji_button.search": "搜尋…",
"emoji_button.search_results": "搜尋結果", "emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號", "emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點", "emoji_button.travel": "旅遊與地點",
"empty_column.account_suspended": "Account suspended", "empty_column.account_suspended": "帳號被暫停",
"empty_column.account_timeline": "這裡還沒有嘟文!", "empty_column.account_timeline": "這裡還沒有嘟文!",
"empty_column.account_unavailable": "無法取得個人資料", "empty_column.account_unavailable": "無法取得個人資料",
"empty_column.blocks": "還沒有封鎖任何使用者。", "empty_column.blocks": "還沒有封鎖任何使用者。",
"empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。",
"empty_column.community": "本時間軸是空的。快公開嘟些文搶頭香啊!", "empty_column.community": "本時間軸是空的。快公開嘟些文搶頭香啊!",
"empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
"empty_column.domain_blocks": "尚未隱藏任何網域。", "empty_column.domain_blocks": "尚未封鎖任何網域。",
"empty_column.favourited_statuses": "你還沒讚美过任何嘟文。這裡將會顯示你讚美过的嘟文。", "empty_column.favourited_statuses": "您還沒收藏過任何嘟文。當您收藏嘟文時,它將於此顯示。",
"empty_column.favourites": "還沒人讚美這則嘟文。當有人點讚後,他們將於此列出。", "empty_column.favourites": "還沒有人收藏過這則嘟文。當有人收藏嘟文時,它將於此顯示。",
"empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。", "empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。",
"empty_column.hashtag": "這個主題標籤下什麼也沒有。", "empty_column.hashtag": "這個主題標籤下什麼也沒有。",
"empty_column.home": "您的首頁時間軸是空的!前往 {public} 或使用搜尋功能來認識其他人。", "empty_column.home": "您的首頁時間軸是空的!前往 {public} 或使用搜尋功能來認識其他人。",
"empty_column.home.public_timeline": "公開時間軸", "empty_column.home.public_timeline": "公開時間軸",
"empty_column.list": "這份名單還沒有東西。當此名單的成員嘟出了新的嘟文時,它們就會顯示於此。", "empty_column.list": "這份名單還沒有東西。當此名單的成員嘟出了新的嘟文時,它們就會顯示於此。",
"empty_column.lists": "你還沒有建立任何名單。這裡將會顯示你所建立的名單。", "empty_column.lists": "您還沒有建立任何名單。這裡將會顯示您所建立的名單。",
"empty_column.mutes": "尚未靜音任何使用者。", "empty_column.mutes": "尚未靜音任何使用者。",
"empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。", "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。",
"empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己關注其他伺服器的使用者後就會有嘟文出現了", "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己關注其他伺服器的使用者後就會有嘟文出現了",
"error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,無法正常顯示頁面。", "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,無法正常顯示頁面。",
"error.unexpected_crash.explanation_addons": "此頁面無法被正常顯示,這可能是由瀏覽器附加元件或網頁自動翻譯工具造成的。", "error.unexpected_crash.explanation_addons": "此頁面無法被正常顯示,這可能是由瀏覽器附加元件或網頁自動翻譯工具造成的。",
"error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。", "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。",
"error.unexpected_crash.next_steps_addons": "請嘗試重新整理頁面。如果狀況沒有進展,您可以嘗試使用不同的瀏覽器或 Mastodon 應用程式來檢視。", "error.unexpected_crash.next_steps_addons": "請嘗試關閉他們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。",
"errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿",
"errors.unexpected_crash.report_issue": "報問題", "errors.unexpected_crash.report_issue": "報問題",
"follow_request.authorize": "授權", "follow_request.authorize": "授權",
"follow_request.reject": "拒絕", "follow_request.reject": "拒絕",
"follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
"generic.saved": "已儲存", "generic.saved": "已儲存",
"getting_started.developers": "開發者", "getting_started.developers": "開發者",
"getting_started.directory": "個人資料目錄", "getting_started.directory": "個人資料目錄",
"getting_started.documentation": "文件", "getting_started.documentation": "文件",
"getting_started.heading": "開始使用", "getting_started.heading": "開始使用",
"getting_started.invite": "邀請使用者", "getting_started.invite": "邀請使用者",
"getting_started.open_source_notice": "Mastodon 是開源軟體。可以在 GitHub {github} 上貢獻或是回報問題。", "getting_started.open_source_notice": "Mastodon 是開源軟體。可以在 GitHub {github} 上貢獻或是回報問題。",
"getting_started.security": "安全性", "getting_started.security": "帳號安全性設定",
"getting_started.terms": "服務條款", "getting_started.terms": "服務條款",
"hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.all": "以及 {additional}",
"hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}",
"hashtag.column_header.tag_mode.none": "而無需{additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}",
"hashtag.column_settings.select.no_options_message": "找不到建議", "hashtag.column_settings.select.no_options_message": "找不到建議",
"hashtag.column_settings.select.placeholder": "輸入主題標籤…", "hashtag.column_settings.select.placeholder": "輸入主題標籤…",
"hashtag.column_settings.tag_mode.all": "全部", "hashtag.column_settings.tag_mode.all": "全部",
"hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.any": "任一",
"hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_mode.none": "全不",
@ -204,38 +204,38 @@
"intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
"intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
"introduction.federation.action": "下一步", "introduction.federation.action": "下一步",
"introduction.federation.federated.headline": "站台聯盟", "introduction.federation.federated.headline": "聯邦",
"introduction.federation.federated.text": "來自聯盟宇宙中其他站台的公開嘟文將會在站點聯盟時間軸中顯示。", "introduction.federation.federated.text": "來自聯盟宇宙中其他伺服器的公開嘟文將會在聯邦時間軸中顯示。",
"introduction.federation.home.headline": "首頁", "introduction.federation.home.headline": "首頁",
"introduction.federation.home.text": "你關注使用者的嘟文將會在首頁動態中顯示。你可以關注任何伺服器上的任何人!", "introduction.federation.home.text": "你關注使用者的嘟文將會在首頁動態中顯示。你可以關注任何伺服器上的任何人!",
"introduction.federation.local.headline": "本機", "introduction.federation.local.headline": "本機",
"introduction.federation.local.text": "跟您同伺服器之使用者所發的公開嘟文將會顯示在本機時間軸中。", "introduction.federation.local.text": "跟您同伺服器之使用者所發的公開嘟文將會顯示在本機時間軸中。",
"introduction.interactions.action": "完成教學!", "introduction.interactions.action": "完成教學!",
"introduction.interactions.favourite.headline": "讚美", "introduction.interactions.favourite.headline": "收藏",
"introduction.interactions.favourite.text": "您能儲存嘟文供稍候觀看,或者讚美嘟文,讓作者知道您喜歡這則嘟文。", "introduction.interactions.favourite.text": "您能儲存嘟文供稍候觀看,或者收藏嘟文,讓作者知道您喜歡這則嘟文。",
"introduction.interactions.reblog.headline": "轉嘟", "introduction.interactions.reblog.headline": "轉嘟",
"introduction.interactions.reblog.text": "您能藉由轉嘟他人嘟文來分享給您的關注者。", "introduction.interactions.reblog.text": "您能藉由轉嘟他人嘟文來分享給您的關注者。",
"introduction.interactions.reply.headline": "回覆", "introduction.interactions.reply.headline": "回覆",
"introduction.interactions.reply.text": "您能回覆其他人或自己的嘟文,這麼做會把這些回覆串成一串對話。", "introduction.interactions.reply.text": "您能回覆其他人或自己的嘟文,這麼做會把這些回覆串成一串對話。",
"introduction.welcome.action": "開始旅程吧!", "introduction.welcome.action": "開始旅程吧!",
"introduction.welcome.headline": "第一步", "introduction.welcome.headline": "第一步",
"introduction.welcome.text": "歡迎來到聯盟宇宙!等等你就可以廣播訊息及跨越各種各式各樣的伺服器與朋友聊天。但這台伺服器,{domain},非常特別 - 它寄管了你的個人資料,所以請記住它的名字。", "introduction.welcome.text": "歡迎來到聯盟宇宙!稍候您就可以廣播訊息及跨越各種各式各樣的伺服器與朋友聊天。但這台伺服器,{domain},非常特別 - 它承載了您的個人資料,所以請記住它的名字。",
"keyboard_shortcuts.back": "返回上一頁", "keyboard_shortcuts.back": "返回上一頁",
"keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單", "keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單",
"keyboard_shortcuts.boost": "轉嘟", "keyboard_shortcuts.boost": "轉嘟",
"keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文",
"keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊",
"keyboard_shortcuts.description": "描述", "keyboard_shortcuts.description": "說明",
"keyboard_shortcuts.direct": "開啟私訊欄", "keyboard_shortcuts.direct": "開啟私訊欄",
"keyboard_shortcuts.down": "往下移動名單項目", "keyboard_shortcuts.down": "在名單中往下移動",
"keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.enter": "檢視嘟文",
"keyboard_shortcuts.favourite": "讚美", "keyboard_shortcuts.favourite": "加到收藏",
"keyboard_shortcuts.favourites": "開啟讚美者名錄", "keyboard_shortcuts.favourites": "開啟收藏名單",
"keyboard_shortcuts.federated": "開啟站點聯盟時間軸", "keyboard_shortcuts.federated": "開啟聯邦時間軸",
"keyboard_shortcuts.heading": "鍵盤快速鍵", "keyboard_shortcuts.heading": "鍵盤快速鍵",
"keyboard_shortcuts.home": "開啟首頁時間軸", "keyboard_shortcuts.home": "開啟首頁時間軸",
"keyboard_shortcuts.hotkey": "快速鍵", "keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示此列表", "keyboard_shortcuts.legend": "顯示此圖例",
"keyboard_shortcuts.local": "開啟本機時間軸", "keyboard_shortcuts.local": "開啟本機時間軸",
"keyboard_shortcuts.mention": "提及作者", "keyboard_shortcuts.mention": "提及作者",
"keyboard_shortcuts.muted": "開啟靜音使用者名單", "keyboard_shortcuts.muted": "開啟靜音使用者名單",
@ -244,7 +244,7 @@
"keyboard_shortcuts.open_media": "開啟媒體", "keyboard_shortcuts.open_media": "開啟媒體",
"keyboard_shortcuts.pinned": "開啟釘選的嘟文名單", "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單",
"keyboard_shortcuts.profile": "開啟作者的個人資料頁面", "keyboard_shortcuts.profile": "開啟作者的個人資料頁面",
"keyboard_shortcuts.reply": "回", "keyboard_shortcuts.reply": "回應嘟文",
"keyboard_shortcuts.requests": "開啟關注請求名單", "keyboard_shortcuts.requests": "開啟關注請求名單",
"keyboard_shortcuts.search": "將焦點移至搜尋框", "keyboard_shortcuts.search": "將焦點移至搜尋框",
"keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文", "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文",
@ -253,7 +253,7 @@
"keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體", "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體",
"keyboard_shortcuts.toot": "開始發出新嘟文", "keyboard_shortcuts.toot": "開始發出新嘟文",
"keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點",
"keyboard_shortcuts.up": "往上移動名單項目", "keyboard_shortcuts.up": "在名單中往上移動",
"lightbox.close": "關閉", "lightbox.close": "關閉",
"lightbox.compress": "折疊圖片檢視框", "lightbox.compress": "折疊圖片檢視框",
"lightbox.expand": "展開圖片檢視框", "lightbox.expand": "展開圖片檢視框",
@ -266,13 +266,13 @@
"lists.edit.submit": "變更標題", "lists.edit.submit": "變更標題",
"lists.new.create": "新增名單", "lists.new.create": "新增名單",
"lists.new.title_placeholder": "新名單標題", "lists.new.title_placeholder": "新名單標題",
"lists.replies_policy.followed": "Any followed user", "lists.replies_policy.followed": "任何跟隨的使用者",
"lists.replies_policy.list": "Members of the list", "lists.replies_policy.list": "列表成員",
"lists.replies_policy.none": "No one", "lists.replies_policy.none": "沒有人",
"lists.replies_policy.title": "顯示回覆", "lists.replies_policy.title": "顯示回覆",
"lists.search": "搜尋您關注的使用者", "lists.search": "搜尋您關注的使用者",
"lists.subheading": "您的名單", "lists.subheading": "您的名單",
"load_pending": "{count, plural, other {# 個新項目}}", "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}",
"loading_indicator.label": "讀取中...", "loading_indicator.label": "讀取中...",
"media_gallery.toggle_visible": "切換可見性", "media_gallery.toggle_visible": "切換可見性",
"missing_indicator.label": "找不到", "missing_indicator.label": "找不到",
@ -289,7 +289,7 @@
"navigation_bar.discover": "探索", "navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的網域", "navigation_bar.domain_blocks": "隱藏的網域",
"navigation_bar.edit_profile": "編輯個人資料", "navigation_bar.edit_profile": "編輯個人資料",
"navigation_bar.favourites": "讚美集", "navigation_bar.favourites": "收藏",
"navigation_bar.filters": "靜音詞彙", "navigation_bar.filters": "靜音詞彙",
"navigation_bar.follow_requests": "關注請求", "navigation_bar.follow_requests": "關注請求",
"navigation_bar.follows_and_followers": "關注及關注者", "navigation_bar.follows_and_followers": "關注及關注者",
@ -303,45 +303,45 @@
"navigation_bar.preferences": "偏好設定", "navigation_bar.preferences": "偏好設定",
"navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.public_timeline": "聯邦時間軸",
"navigation_bar.security": "安全性", "navigation_bar.security": "安全性",
"notification.favourite": "{name} 讚美了你的嘟文", "notification.favourite": "{name} 把您的嘟文加入了最愛",
"notification.follow": "{name} 關注了", "notification.follow": "{name} 關注了",
"notification.follow_request": "{name} 要求關注", "notification.follow_request": "{name} 要求關注",
"notification.mention": "{name} 提到了", "notification.mention": "{name} 提到了",
"notification.own_poll": "您的投票已結束", "notification.own_poll": "您的投票已結束",
"notification.poll": "您投過的投票已經結束", "notification.poll": "您投過的投票已經結束",
"notification.reblog": "{name}轉嘟了你的嘟文", "notification.reblog": "{name} 轉嘟了您的嘟文",
"notification.status": "{name} 剛剛嘟文", "notification.status": "{name} 剛剛嘟文",
"notifications.clear": "清除通知", "notifications.clear": "清除通知",
"notifications.clear_confirmation": "確定要永久清除的通知嗎?", "notifications.clear_confirmation": "確定要永久清除的通知嗎?",
"notifications.column_settings.alert": "桌面通知", "notifications.column_settings.alert": "桌面通知",
"notifications.column_settings.favourite": "被讚美", "notifications.column_settings.favourite": "最愛",
"notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.advanced": "顯示所有分類",
"notifications.column_settings.filter_bar.category": "快速過濾欄", "notifications.column_settings.filter_bar.category": "快速過濾欄",
"notifications.column_settings.filter_bar.show": "顯示", "notifications.column_settings.filter_bar.show": "顯示",
"notifications.column_settings.follow": "新關注者:", "notifications.column_settings.follow": "新關注者:",
"notifications.column_settings.follow_request": "新的關注請求:", "notifications.column_settings.follow_request": "新的關注請求",
"notifications.column_settings.mention": "提及:", "notifications.column_settings.mention": "提及:",
"notifications.column_settings.poll": "投票結果:", "notifications.column_settings.poll": "投票結果:",
"notifications.column_settings.push": "推通知", "notifications.column_settings.push": "推通知",
"notifications.column_settings.reblog": "轉嘟:", "notifications.column_settings.reblog": "轉嘟:",
"notifications.column_settings.show": "在欄位中顯示", "notifications.column_settings.show": "在欄位中顯示",
"notifications.column_settings.sound": "播放", "notifications.column_settings.sound": "播放音",
"notifications.column_settings.status": "新嘟文:", "notifications.column_settings.status": "新嘟文",
"notifications.filter.all": "全部", "notifications.filter.all": "全部",
"notifications.filter.boosts": "轉嘟", "notifications.filter.boosts": "轉嘟",
"notifications.filter.favourites": "讚美集", "notifications.filter.favourites": "最愛",
"notifications.filter.follows": "關注的使用者", "notifications.filter.follows": "關注的使用者",
"notifications.filter.mentions": "提及", "notifications.filter.mentions": "提及",
"notifications.filter.polls": "投票結果", "notifications.filter.polls": "投票結果",
"notifications.filter.statuses": "已跟隨使用者的最新動態", "notifications.filter.statuses": "已跟隨使用者的最新動態",
"notifications.grant_permission": "Grant permission.", "notifications.grant_permission": "授予權限",
"notifications.group": "{count} 條通知", "notifications.group": "{count} 條通知",
"notifications.mark_as_read": "將所有通知都標記為已讀", "notifications.mark_as_read": "將所有通知都標記為已讀",
"notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用", "notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用",
"notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知", "notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", "notifications.permission_required": "因為尚未授予所需的權限,所以桌面通知不可用。",
"notifications_permission_banner.enable": "啟用桌面通知", "notifications_permission_banner.enable": "啟用桌面通知",
"notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。", "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。",
"notifications_permission_banner.title": "不要錯過任何東西!", "notifications_permission_banner.title": "不要錯過任何東西!",
"picture_in_picture.restore": "還原", "picture_in_picture.restore": "還原",
"poll.closed": "已關閉", "poll.closed": "已關閉",
@ -349,37 +349,37 @@
"poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}", "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
"poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}", "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}",
"poll.vote": "投票", "poll.vote": "投票",
"poll.voted": "已對此問題投票", "poll.voted": "已對此問題投票",
"poll_button.add_poll": "建立投票", "poll_button.add_poll": "建立投票",
"poll_button.remove_poll": "移除投票", "poll_button.remove_poll": "移除投票",
"privacy.change": "調整隱私狀態", "privacy.change": "調整嘟文隱私狀態",
"privacy.direct.long": "只有被提的使用者能看到", "privacy.direct.long": "只有被提的使用者能看到",
"privacy.direct.short": "私訊", "privacy.direct.short": "私訊",
"privacy.private.long": "只有關注的使用者能看到", "privacy.private.long": "只有關注的使用者能看到",
"privacy.private.short": "僅關注者", "privacy.private.short": "僅關注者",
"privacy.public.long": "嘟到公開時間軸", "privacy.public.long": "公開,且顯示於公開時間軸",
"privacy.public.short": "公開", "privacy.public.short": "公開",
"privacy.unlisted.long": "公開,但不會顯示在公開時間軸", "privacy.unlisted.long": "公開,但不會顯示在公開時間軸",
"privacy.unlisted.short": "不公開", "privacy.unlisted.short": "不公開",
"refresh": "重新整理", "refresh": "重新整理",
"regeneration_indicator.label": "載入中…", "regeneration_indicator.label": "載入中…",
"regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!", "regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!",
"relative_time.days": "{number} 天", "relative_time.days": "{number} 天",
"relative_time.hours": "{number} 小時", "relative_time.hours": "{number}小時",
"relative_time.just_now": "剛剛", "relative_time.just_now": "剛剛",
"relative_time.minutes": "{number} 分", "relative_time.minutes": "{number} 分",
"relative_time.seconds": "{number} 秒", "relative_time.seconds": "{number} 秒",
"relative_time.today": "今天", "relative_time.today": "今天",
"reply_indicator.cancel": "取消", "reply_indicator.cancel": "取消",
"report.forward": "轉寄到 {target}", "report.forward": "轉寄到 {target}",
"report.forward_hint": "這個帳戶屬於其他站點。要像該站點發送匿名的檢舉訊息嗎?", "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?",
"report.hint": "這項訊息會發送到您伺服器的管理員。可以提供檢舉這個帳戶的理由:", "report.hint": "這項訊息會發送到您伺服器的管理員。可以提供檢舉這個帳戶的理由:",
"report.placeholder": "更多訊息", "report.placeholder": "其他備註",
"report.submit": "送出", "report.submit": "送出",
"report.target": "檢舉 {target}", "report.target": "檢舉 {target}",
"search.placeholder": "搜尋", "search.placeholder": "搜尋",
"search_popout.search_format": "進階搜尋格式", "search_popout.search_format": "進階搜尋格式",
"search_popout.tips.full_text": "輸入簡單的文字,搜尋由你撰寫、贊美、轉嘟或提你的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶名稱和標籤。", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、收藏、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。",
"search_popout.tips.hashtag": "主題標籤", "search_popout.tips.hashtag": "主題標籤",
"search_popout.tips.status": "嘟文", "search_popout.tips.status": "嘟文",
"search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳戶名稱與標籤", "search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳戶名稱與標籤",
@ -394,32 +394,32 @@
"status.block": "封鎖 @{name}", "status.block": "封鎖 @{name}",
"status.bookmark": "書籤", "status.bookmark": "書籤",
"status.cancel_reblog_private": "取消轉嘟", "status.cancel_reblog_private": "取消轉嘟",
"status.cannot_reblog": "這嘟文無法被轉嘟", "status.cannot_reblog": "這嘟文無法被轉嘟",
"status.copy": "複製嘟文連結", "status.copy": "複製嘟文連結",
"status.delete": "刪除", "status.delete": "刪除",
"status.detailed_status": "對話的詳細內容", "status.detailed_status": "詳細的對話內容",
"status.direct": "發送私訊給 @{name}", "status.direct": "發送私訊給 @{name}",
"status.embed": "", "status.embed": "嵌",
"status.favourite": "讚美", "status.favourite": "最愛",
"status.filtered": "已過濾", "status.filtered": "已過濾",
"status.load_more": "載入更多", "status.load_more": "載入更多",
"status.media_hidden": "隱藏媒體內容", "status.media_hidden": "隱藏媒體內容",
"status.mention": "提 @{name}", "status.mention": "提 @{name}",
"status.more": "更多", "status.more": "更多",
"status.mute": "靜音 @{name}", "status.mute": "靜音 @{name}",
"status.mute_conversation": "靜音對話", "status.mute_conversation": "靜音對話",
"status.open": "展開嘟文", "status.open": "展開嘟文",
"status.pin": "釘選到個人資料頁", "status.pin": "釘選到個人資料頁",
"status.pinned": "釘選的嘟文", "status.pinned": "釘選的嘟文",
"status.read_more": "閱讀更多", "status.read_more": "閱讀更多",
"status.reblog": "轉嘟", "status.reblog": "轉嘟",
"status.reblog_private": "轉嘟給原有關注者", "status.reblog_private": "轉嘟給原有關注者",
"status.reblogged_by": "{name} 轉嘟了", "status.reblogged_by": "{name} 轉嘟了",
"status.reblogs.empty": "還沒有人轉嘟。如果有,會顯示在這裡。", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
"status.redraft": "刪除 & 編輯", "status.redraft": "刪除 & 編輯",
"status.remove_bookmark": "移除書籤", "status.remove_bookmark": "移除書籤",
"status.reply": "回覆", "status.reply": "回覆",
"status.replyAll": "回覆所有人", "status.replyAll": "回覆討論串",
"status.report": "檢舉 @{name}", "status.report": "檢舉 @{name}",
"status.sensitive_warning": "敏感內容", "status.sensitive_warning": "敏感內容",
"status.share": "分享", "status.share": "分享",
@ -430,15 +430,15 @@
"status.show_thread": "顯示討論串", "status.show_thread": "顯示討論串",
"status.uncached_media_warning": "無法使用", "status.uncached_media_warning": "無法使用",
"status.unmute_conversation": "解除此對話的靜音", "status.unmute_conversation": "解除此對話的靜音",
"status.unpin": "解除置頂", "status.unpin": "從個人頁面解除釘選",
"suggestions.dismiss": "關閉建議", "suggestions.dismiss": "關閉建議",
"suggestions.header": "您可能對這些東西有興趣…", "suggestions.header": "您可能對這些東西有興趣…",
"tabs_bar.federated_timeline": "其他站點", "tabs_bar.federated_timeline": "聯邦宇宙",
"tabs_bar.home": "頁", "tabs_bar.home": "頁",
"tabs_bar.local_timeline": "本", "tabs_bar.local_timeline": "本",
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.search": "搜尋", "tabs_bar.search": "搜尋",
"time_remaining.days": "剩餘{number, plural, one {# 天} other {# 天}}", "time_remaining.days": "剩餘{number, plural, one {# 天} other {# 天}}",
"time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}", "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}",
"time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}", "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}",
"time_remaining.moments": "剩餘時間", "time_remaining.moments": "剩餘時間",
@ -449,27 +449,27 @@
"timeline_hint.resources.statuses": "更早的嘟文", "timeline_hint.resources.statuses": "更早的嘟文",
"trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論", "trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論",
"trends.trending_now": "目前趨勢", "trends.trending_now": "目前趨勢",
"ui.beforeunload": "如果離開 Mastodon的草稿將會不見。", "ui.beforeunload": "如果離開 Mastodon的草稿將會不見。",
"units.short.billion": "{count}B", "units.short.billion": "{count}B",
"units.short.million": "{count}M", "units.short.million": "{count}M",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "拖放來上傳", "upload_area.title": "拖放來上傳",
"upload_button.label": "上傳媒體檔案 (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "上傳圖像、影片、或音樂檔案",
"upload_error.limit": "已達到檔案上傳限制。", "upload_error.limit": "已達到檔案上傳限制。",
"upload_error.poll": "不允許在投票上傳檔案。", "upload_error.poll": "不允許在投票上傳檔案。",
"upload_form.audio_description": "簡單描述內容給聽障人士", "upload_form.audio_description": "描述內容給聽障人士",
"upload_form.description": "為視障人士增加文字說明", "upload_form.description": "為視障人士增加文字說明",
"upload_form.edit": "編輯", "upload_form.edit": "編輯",
"upload_form.thumbnail": "更改預覽圖", "upload_form.thumbnail": "更改預覽圖",
"upload_form.undo": "刪除", "upload_form.undo": "刪除",
"upload_form.video_description": "簡單描述給聽障或視障人士", "upload_form.video_description": "描述給聽障或視障人士",
"upload_modal.analyzing_picture": "正在分析圖片…", "upload_modal.analyzing_picture": "正在分析圖片…",
"upload_modal.apply": "套用", "upload_modal.apply": "套用",
"upload_modal.choose_image": "選擇圖片", "upload_modal.choose_image": "選擇圖片",
"upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗", "upload_modal.description_placeholder": "我能吞下玻璃而不傷身體",
"upload_modal.detect_text": "從圖片偵測文字", "upload_modal.detect_text": "從圖片偵測文字",
"upload_modal.edit_media": "編輯媒體", "upload_modal.edit_media": "編輯媒體",
"upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。", "upload_modal.hint": "於預覽中點擊或拖曳圓圈以選擇將於所有縮圖中顯示的焦點。",
"upload_modal.preparing_ocr": "準備 OCR 中……", "upload_modal.preparing_ocr": "準備 OCR 中……",
"upload_modal.preview_label": "預覽 ({ratio})", "upload_modal.preview_label": "預覽 ({ratio})",
"upload_progress.label": "上傳中...", "upload_progress.label": "上傳中...",

View File

@ -279,6 +279,36 @@ class FeedManager
end end
end end
# Completely clear multiple feeds at once
# @param [Symbol] type
# @param [Array<Integer>] ids
# @return [void]
def clean_feeds!(type, ids)
reblogged_id_sets = {}
redis.pipelined do
ids.each do |feed_id|
redis.del(key(type, feed_id))
reblog_key = key(type, feed_id, 'reblogs')
# We collect a future for this: we don't block while getting
# it, but we can iterate over it later.
reblogged_id_sets[feed_id] = redis.zrange(reblog_key, 0, -1)
redis.del(reblog_key)
end
end
# Remove all of the reblog tracking keys we just removed the
# references to.
redis.pipelined do
reblogged_id_sets.each do |feed_id, future|
future.value.each do |reblogged_id|
reblog_set_key = key(type, feed_id, "reblogs:#{reblogged_id}")
redis.del(reblog_set_key)
end
end
end
end
private private
# Trim a feed to maximum size by removing older items # Trim a feed to maximum size by removing older items

View File

@ -580,17 +580,6 @@ class Account < ApplicationRecord
end end
def clean_feed_manager def clean_feed_manager
reblog_key = FeedManager.instance.key(:home, id, 'reblogs') FeedManager.instance.clean_feeds!(:home, [id])
reblogged_id_set = Redis.current.zrange(reblog_key, 0, -1)
Redis.current.pipelined do
Redis.current.del(FeedManager.instance.key(:home, id))
Redis.current.del(reblog_key)
reblogged_id_set.each do |reblogged_id|
reblog_set_key = FeedManager.instance.key(:home, id, "reblogs:#{reblogged_id}")
Redis.current.del(reblog_set_key)
end
end
end end
end end

View File

@ -36,7 +36,7 @@ class Favourite < ApplicationRecord
end end
def decrement_cache_counters def decrement_cache_counters
return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?) return if association(:status).loaded? && status.marked_for_destruction?
status&.decrement_count!(:favourites_count) status&.decrement_count!(:favourites_count)
end end
end end

View File

@ -34,17 +34,6 @@ class List < ApplicationRecord
private private
def clean_feed_manager def clean_feed_manager
reblog_key = FeedManager.instance.key(:list, id, 'reblogs') FeedManager.instance.clean_feeds!(:list, [id])
reblogged_id_set = Redis.current.zrange(reblog_key, 0, -1)
Redis.current.pipelined do
Redis.current.del(FeedManager.instance.key(:list, id))
Redis.current.del(reblog_key)
reblogged_id_set.each do |reblogged_id|
reblog_set_key = FeedManager.instance.key(:list, id, "reblogs:#{reblogged_id}")
Redis.current.del(reblog_set_key)
end
end
end end
end end

View File

@ -234,14 +234,6 @@ class Status < ApplicationRecord
@emojis = CustomEmoji.from_text(fields.join(' '), account.domain) @emojis = CustomEmoji.from_text(fields.join(' '), account.domain)
end end
def mark_for_mass_destruction!
@marked_for_mass_destruction = true
end
def marked_for_mass_destruction?
@marked_for_mass_destruction
end
def replies_count def replies_count
status_stat&.replies_count || 0 status_stat&.replies_count || 0
end end
@ -498,7 +490,7 @@ class Status < ApplicationRecord
end end
def decrement_counter_caches def decrement_counter_caches
return if direct_visibility? || marked_for_mass_destruction? return if direct_visibility?
account&.decrement_count!(:statuses_count) account&.decrement_count!(:statuses_count)
reblog&.decrement_count!(:reblogs_count) if reblog? reblog&.decrement_count!(:reblogs_count) if reblog?
@ -508,7 +500,7 @@ class Status < ApplicationRecord
def unlink_from_conversations def unlink_from_conversations
return unless direct_visibility? return unless direct_visibility?
mentioned_accounts = mentions.includes(:account).map(&:account) mentioned_accounts = (association(:mentions).loaded? ? mentions : mentions.includes(:account)).map(&:account)
inbox_owners = mentioned_accounts.select(&:local?) + (account.local? ? [account] : []) inbox_owners = mentioned_accounts.select(&:local?) + (account.local? ? [account] : [])
inbox_owners.each do |inbox_owner| inbox_owners.each do |inbox_owner|

View File

@ -83,7 +83,7 @@ class User < ApplicationRecord
has_one :invite_request, class_name: 'UserInviteRequest', inverse_of: :user, dependent: :destroy has_one :invite_request, class_name: 'UserInviteRequest', inverse_of: :user, dependent: :destroy
accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? && !Setting.require_invite_text } accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? && !Setting.require_invite_text }
validates :invite_request, presence: true, on: :create, if: -> { Setting.require_invite_text && !invited? } validates :invite_request, presence: true, on: :create, if: :invite_text_required?
validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale?
validates_with BlacklistedEmailValidator, on: :create validates_with BlacklistedEmailValidator, on: :create
@ -128,7 +128,7 @@ class User < ApplicationRecord
to: :settings, prefix: :setting, allow_nil: false to: :settings, prefix: :setting, allow_nil: false
attr_reader :invite_code, :sign_in_token_attempt attr_reader :invite_code, :sign_in_token_attempt
attr_writer :external attr_writer :external, :bypass_invite_request_check
def confirmed? def confirmed?
confirmed_at.present? confirmed_at.present?
@ -429,6 +429,10 @@ class User < ApplicationRecord
!!@external !!@external
end end
def bypass_invite_request_check?
@bypass_invite_request_check
end
def sanitize_languages def sanitize_languages
return if chosen_languages.nil? return if chosen_languages.nil?
chosen_languages.reject!(&:blank?) chosen_languages.reject!(&:blank?)
@ -466,4 +470,8 @@ class User < ApplicationRecord
def validate_email_dns? def validate_email_dns?
email_changed? && !(Rails.env.test? || Rails.env.development?) email_changed? && !(Rails.env.test? || Rails.env.development?)
end end
def invite_text_required?
Setting.require_invite_text && !invited? && !external? && !bypass_invite_request_check?
end
end end

View File

@ -3,29 +3,41 @@
class BatchedRemoveStatusService < BaseService class BatchedRemoveStatusService < BaseService
include Redisable include Redisable
# Delete given statuses and reblogs of them # Delete multiple statuses and reblogs of them as efficiently as possible
# Remove statuses from home feeds # @param [Enumerable<Status>] statuses An array of statuses
# Push delete events to streaming API for home feeds and public feeds
# @param [Enumerable<Status>] statuses A preferably batched array of statuses
# @param [Hash] options # @param [Hash] options
# @option [Boolean] :skip_side_effects # @option [Boolean] :skip_side_effects Do not modify feeds and send updates to streaming API
def call(statuses, **options) def call(statuses, **options)
statuses = Status.where(id: statuses.map(&:id)).includes(:account).flat_map { |status| [status] + status.reblogs.includes(:account).to_a } ActiveRecord::Associations::Preloader.new.preload(statuses, options[:skip_side_effects] ? :reblogs : [:account, :tags, reblogs: :account])
@mentions = statuses.each_with_object({}) { |s, h| h[s.id] = s.active_mentions.includes(:account).to_a } statuses_and_reblogs = statuses.flat_map { |status| [status] + status.reblogs }
@tags = statuses.each_with_object({}) { |s, h| h[s.id] = s.tags.pluck(:name) }
@json_payloads = statuses.each_with_object({}) { |s, h| h[s.id] = Oj.dump(event: :delete, payload: s.id.to_s) } # The conversations for direct visibility statuses also need
# to be manually updated. This part is not efficient but we
# rely on direct visibility statuses being relatively rare.
statuses_with_account_conversations = statuses.select(&:direct_visibility?)
statuses.each do |status| ActiveRecord::Associations::Preloader.new.preload(statuses_with_account_conversations, [mentions: :account])
status.mark_for_mass_destruction!
status.destroy statuses_with_account_conversations.each do |status|
status.send(:unlink_from_conversations)
unpush_from_direct_timelines(status)
end end
# We do not batch all deletes into one to avoid having a long-running
# transaction lock the database, but we use the delete method instead
# of destroy to avoid all callbacks. We rely on foreign keys to
# cascade the delete faster without loading the associations.
statuses_and_reblogs.each_slice(50) { |slice| Status.where(id: slice.map(&:id)).delete_all }
# Since we skipped all callbacks, we also need to manually
# deindex the statuses
Chewy.strategy.current.update(StatusesIndex, statuses_and_reblogs) if Chewy.enabled?
return if options[:skip_side_effects] return if options[:skip_side_effects]
# Batch by source account # Batch by source account
statuses.group_by(&:account_id).each_value do |account_statuses| statuses_and_reblogs.group_by(&:account_id).each_value do |account_statuses|
account = account_statuses.first.account account = account_statuses.first.account
next unless account next unless account
@ -35,20 +47,18 @@ class BatchedRemoveStatusService < BaseService
end end
# Cannot be batched # Cannot be batched
@status_id_cutoff = Mastodon::Snowflake.id_at(2.weeks.ago)
redis.pipelined do
statuses.each do |status| statuses.each do |status|
unpush_from_public_timelines(status) unpush_from_public_timelines(status)
unpush_from_direct_timelines(status) if status.direct_visibility? end
end end
end end
private private
def unpush_from_home_timelines(account, statuses) def unpush_from_home_timelines(account, statuses)
recipients = account.followers_for_local_distribution.to_a account.followers_for_local_distribution.includes(:user).reorder(nil).find_each do |follower|
recipients << account if account.local?
recipients.each do |follower|
statuses.each do |status| statuses.each do |status|
FeedManager.instance.unpush_from_home(follower, status) FeedManager.instance.unpush_from_home(follower, status)
end end
@ -56,7 +66,7 @@ class BatchedRemoveStatusService < BaseService
end end
def unpush_from_list_timelines(account, statuses) def unpush_from_list_timelines(account, statuses)
account.lists_for_local_distribution.select(:id, :account_id).each do |list| account.lists_for_local_distribution.select(:id, :account_id).includes(account: :user).reorder(nil).find_each do |list|
statuses.each do |status| statuses.each do |status|
FeedManager.instance.unpush_from_list(list, status) FeedManager.instance.unpush_from_list(list, status)
end end
@ -64,40 +74,27 @@ class BatchedRemoveStatusService < BaseService
end end
def unpush_from_public_timelines(status) def unpush_from_public_timelines(status)
return unless status.public_visibility? return unless status.public_visibility? && status.id > @status_id_cutoff
payload = @json_payloads[status.id] payload = Oj.dump(event: :delete, payload: status.id.to_s)
redis.pipelined do
redis.publish('timeline:public', payload) redis.publish('timeline:public', payload)
if status.local? redis.publish(status.local? ? 'timeline:public:local' : 'timeline:public:remote', payload)
redis.publish('timeline:public:local', payload)
else
redis.publish('timeline:public:remote', payload)
end
if status.media_attachments.any? if status.media_attachments.any?
redis.publish('timeline:public:media', payload) redis.publish('timeline:public:media', payload)
if status.local? redis.publish(status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', payload)
redis.publish('timeline:public:local:media', payload)
else
redis.publish('timeline:public:remote:media', payload)
end
end end
@tags[status.id].each do |hashtag| status.tags.map { |tag| tag.name.mb_chars.downcase }.each do |hashtag|
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", payload) redis.publish("timeline:hashtag:#{hashtag}", payload)
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", payload) if status.local? redis.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local?
end
end end
end end
def unpush_from_direct_timelines(status) def unpush_from_direct_timelines(status)
payload = @json_payloads[status.id] status.mentions.each do |mention|
redis.pipelined do
@mentions[status.id].each do |mention|
FeedManager.instance.unpush_from_direct(mention.account, status) if mention.account.local? FeedManager.instance.unpush_from_direct(mention.account, status) if mention.account.local?
end end
FeedManager.instance.unpush_from_direct(status.account, status) if status.account.local?
end
end end
end end

View File

@ -6,15 +6,19 @@ class DeleteAccountService < BaseService
ASSOCIATIONS_ON_SUSPEND = %w( ASSOCIATIONS_ON_SUSPEND = %w(
account_pins account_pins
active_relationships active_relationships
aliases
block_relationships block_relationships
blocked_by_relationships blocked_by_relationships
conversation_mutes conversation_mutes
conversations conversations
custom_filters custom_filters
devices
domain_blocks domain_blocks
favourites featured_tags
follow_requests follow_requests
identity_proofs
list_accounts list_accounts
migrations
mute_relationships mute_relationships
muted_by_relationships muted_by_relationships
notifications notifications
@ -25,6 +29,31 @@ class DeleteAccountService < BaseService
status_pins status_pins
).freeze ).freeze
# The following associations have no important side-effects
# in callbacks and all of their own associations are secured
# by foreign keys, making them safe to delete without loading
# into memory
ASSOCIATIONS_WITHOUT_SIDE_EFFECTS = %w(
account_pins
aliases
conversation_mutes
conversations
custom_filters
devices
domain_blocks
featured_tags
follow_requests
identity_proofs
list_accounts
migrations
mute_relationships
muted_by_relationships
notifications
owned_lists
scheduled_statuses
status_pins
)
ASSOCIATIONS_ON_DESTROY = %w( ASSOCIATIONS_ON_DESTROY = %w(
reports reports
targeted_moderation_notes targeted_moderation_notes
@ -55,19 +84,25 @@ class DeleteAccountService < BaseService
@options[:skip_activitypub] = true if @options[:skip_side_effects] @options[:skip_activitypub] = true if @options[:skip_side_effects]
reject_follows! distribute_activities!
undo_follows!
purge_user!
purge_profile!
purge_content! purge_content!
fulfill_deletion_request! fulfill_deletion_request!
end end
private private
def reject_follows! def distribute_activities!
return if @account.local? || !@account.activitypub? || @options[:skip_activitypub] return if skip_activitypub?
if @account.local?
delete_actor!
elsif @account.activitypub?
reject_follows!
undo_follows!
end
end
def reject_follows!
# When deleting a remote account, the account obviously doesn't # When deleting a remote account, the account obviously doesn't
# actually become deleted on its origin server, i.e. unlike a # actually become deleted on its origin server, i.e. unlike a
# locally deleted account it continues to have access to its home # locally deleted account it continues to have access to its home
@ -81,8 +116,6 @@ class DeleteAccountService < BaseService
end end
def undo_follows! def undo_follows!
return if @account.local? || !@account.activitypub? || @options[:skip_activitypub]
# When deleting a remote account, the account obviously doesn't # When deleting a remote account, the account obviously doesn't
# actually become deleted on its origin server, but following relationships # actually become deleted on its origin server, but following relationships
# are severed on our end. Therefore, make the remote server aware that the # are severed on our end. Therefore, make the remote server aware that the
@ -97,7 +130,7 @@ class DeleteAccountService < BaseService
def purge_user! def purge_user!
return if !@account.local? || @account.user.nil? return if !@account.local? || @account.user.nil?
if @options[:reserve_email] if keep_user_record?
@account.user.disable! @account.user.disable!
@account.user.invites.where(uses: 0).destroy_all @account.user.invites.where(uses: 0).destroy_all
else else
@ -106,34 +139,74 @@ class DeleteAccountService < BaseService
end end
def purge_content! def purge_content!
distribute_delete_actor! if @account.local? && !@options[:skip_side_effects] purge_user!
purge_profile!
purge_statuses!
purge_media_attachments!
purge_polls!
purge_generated_notifications!
purge_favourites!
purge_bookmarks!
purge_feeds!
purge_other_associations!
@account.statuses.reorder(nil).find_in_batches do |statuses| @account.destroy unless keep_account_record?
statuses.reject! { |status| reported_status_ids.include?(status.id) } if @options[:reserve_username]
BatchedRemoveStatusService.new.call(statuses, skip_side_effects: @options[:skip_side_effects])
end end
def purge_statuses!
@account.statuses.reorder(nil).where.not(id: reported_status_ids).in_batches do |statuses|
BatchedRemoveStatusService.new.call(statuses, skip_side_effects: skip_side_effects?)
end
end
def purge_media_attachments!
@account.media_attachments.reorder(nil).find_each do |media_attachment| @account.media_attachments.reorder(nil).find_each do |media_attachment|
next if @options[:reserve_username] && reported_status_ids.include?(media_attachment.status_id) next if keep_account_record? && reported_status_ids.include?(media_attachment.status_id)
media_attachment.destroy media_attachment.destroy
end end
@account.polls.reorder(nil).find_each do |poll|
next if @options[:reserve_username] && reported_status_ids.include?(poll.status_id)
# We can safely delete the poll rather than destroy it, as any non-reported
# status should have been deleted already, as long as we take care of
# notifications.
Notification.where(poll: poll).delete_all
poll.delete
end end
def purge_polls!
@account.polls.reorder(nil).where.not(status_id: reported_status_ids).in_batches.delete_all
end
def purge_generated_notifications!
# By deleting polls and statuses without callbacks, we've left behind
# polymorphically associated notifications generated by this account
Notification.where(from_account: @account).in_batches.delete_all
end
def purge_favourites!
@account.favourites.in_batches do |favourites|
ids = favourites.pluck(:status_id)
StatusStat.where(status_id: ids).update_all('favourites_count = GREATEST(0, favourites_count - 1)')
Chewy.strategy.current.update(StatusesIndex, ids) if Chewy.enabled?
# Rails.cache.delete_multi would be better, but we don't have it yet
ids.each { |id| Rails.cache.delete("statuses/#{id}") }
favourites.delete_all
end
end
def purge_bookmarks!
@account.bookmarks.in_batches do |bookmarks|
Chewy.strategy.current.update(StatusesIndex, bookmarks.pluck(:status_id)) if Chewy.enabled?
bookmarks.delete_all
end
end
def purge_other_associations!
associations_for_destruction.each do |association_name| associations_for_destruction.each do |association_name|
destroy_all(@account.public_send(association_name)) purge_association(association_name)
end
end end
@account.destroy unless @options[:reserve_username] def purge_feeds!
return unless @account.local?
FeedManager.instance.clean_feeds!(:home, [@account.id])
FeedManager.instance.clean_feeds!(:list, @account.owned_lists.pluck(:id))
end end
def purge_profile! def purge_profile!
@ -141,7 +214,7 @@ class DeleteAccountService < BaseService
# there is no point wasting time updating # there is no point wasting time updating
# its values first # its values first
return unless @options[:reserve_username] return unless keep_account_record?
@account.silenced_at = nil @account.silenced_at = nil
@account.suspended_at = @options[:suspended_at] || Time.now.utc @account.suspended_at = @options[:suspended_at] || Time.now.utc
@ -156,6 +229,7 @@ class DeleteAccountService < BaseService
@account.followers_count = 0 @account.followers_count = 0
@account.following_count = 0 @account.following_count = 0
@account.moved_to_account = nil @account.moved_to_account = nil
@account.also_known_as = []
@account.trust_level = :untrusted @account.trust_level = :untrusted
@account.avatar.destroy @account.avatar.destroy
@account.header.destroy @account.header.destroy
@ -166,11 +240,17 @@ class DeleteAccountService < BaseService
@account.deletion_request&.destroy @account.deletion_request&.destroy
end end
def destroy_all(association) def purge_association(association_name)
association = @account.public_send(association_name)
if ASSOCIATIONS_WITHOUT_SIDE_EFFECTS.include?(association_name)
association.in_batches.delete_all
else
association.in_batches.destroy_all association.in_batches.destroy_all
end end
end
def distribute_delete_actor! def delete_actor!
ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url| ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
[delete_actor_json, @account.id, inbox_url] [delete_actor_json, @account.id, inbox_url]
end end
@ -197,10 +277,26 @@ class DeleteAccountService < BaseService
end end
def associations_for_destruction def associations_for_destruction
if @options[:reserve_username] if keep_account_record?
ASSOCIATIONS_ON_SUSPEND ASSOCIATIONS_ON_SUSPEND
else else
ASSOCIATIONS_ON_SUSPEND + ASSOCIATIONS_ON_DESTROY ASSOCIATIONS_ON_SUSPEND + ASSOCIATIONS_ON_DESTROY
end end
end end
def keep_user_record?
@options[:reserve_email]
end
def keep_account_record?
@options[:reserve_username]
end
def skip_side_effects?
@options[:skip_side_effects]
end
def skip_activitypub?
@options[:skip_activitypub]
end
end end

View File

@ -15,41 +15,15 @@ class Scheduler::FeedCleanupScheduler
private private
def clean_home_feeds! def clean_home_feeds!
clean_feeds!(inactive_account_ids, :home) feed_manager.clean_feeds!(:home, inactive_account_ids)
end end
def clean_list_feeds! def clean_list_feeds!
clean_feeds!(inactive_list_ids, :list) feed_manager.clean_feeds!(:list, inactive_list_ids)
end end
def clean_direct_feeds! def clean_direct_feeds!
clean_feeds!(inactive_account_ids, :direct) feed_manager.clean_feeds!(:direct, inactive_account_ids)
end
def clean_feeds!(ids, type)
reblogged_id_sets = {}
redis.pipelined do
ids.each do |feed_id|
redis.del(feed_manager.key(type, feed_id))
reblog_key = feed_manager.key(type, feed_id, 'reblogs')
# We collect a future for this: we don't block while getting
# it, but we can iterate over it later.
reblogged_id_sets[feed_id] = redis.zrange(reblog_key, 0, -1)
redis.del(reblog_key)
end
end
# Remove all of the reblog tracking keys we just removed the
# references to.
redis.pipelined do
reblogged_id_sets.each do |feed_id, future|
future.value.each do |reblogged_id|
reblog_set_key = feed_manager.key(type, feed_id, "reblogs:#{reblogged_id}")
redis.del(reblog_set_key)
end
end
end
end end
def inactive_account_ids def inactive_account_ids

View File

@ -12,6 +12,10 @@ Chewy.settings = {
sidekiq: { queue: 'pull' }, sidekiq: { queue: 'pull' },
} }
# We use our own async strategy even outside the request-response
# cycle, which takes care of checking if ElasticSearch is enabled
# or not. However, mind that for the Rails console, the :urgent
# strategy is set automatically with no way to override it.
Chewy.root_strategy = :custom_sidekiq Chewy.root_strategy = :custom_sidekiq
Chewy.request_strategy = :custom_sidekiq Chewy.request_strategy = :custom_sidekiq
Chewy.use_after_commit_callbacks = false Chewy.use_after_commit_callbacks = false
@ -37,6 +41,7 @@ Elasticsearch::Transport::Client.prepend Module.new {
super arguments super arguments
end end
} }
Elasticsearch::API::Indices::IndicesClient.prepend Module.new { Elasticsearch::API::Indices::IndicesClient.prepend Module.new {
def create(arguments = {}) def create(arguments = {})
arguments[:include_type_name] = true arguments[:include_type_name] = true

View File

@ -3,7 +3,7 @@ kab:
activerecord: activerecord:
attributes: attributes:
poll: poll:
expires_at: Azemz n tagara expires_at: Azemz n taggara
options: Tifranin options: Tifranin
errors: errors:
models: models:

View File

@ -566,6 +566,7 @@ ca:
domain_blocks_rationale: domain_blocks_rationale:
title: Mostra el raonament title: Mostra el raonament
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Fer que els nous usuaris segueixin automàticament als comptes configurats i la seva línia de temps no arrenqui buida
title: Activa els seguiments per defecte per els usuaris nous title: Activa els seguiments per defecte per els usuaris nous
hero: hero:
desc_html: Es mostra en pàgina frontal. Recomanat al menys 600x100px. Si no es configura es mostrarà el del servidor desc_html: Es mostra en pàgina frontal. Recomanat al menys 600x100px. Si no es configura es mostrarà el del servidor

View File

@ -402,6 +402,8 @@ de:
silence: Stummschaltung silence: Stummschaltung
suspend: Sperre suspend: Sperre
title: Neue Domain-Blockade title: Neue Domain-Blockade
obfuscate: Domainname verschleiern
obfuscate_hint: Den Domainnamen in der Liste teilweise verschleiern, wenn die Liste der Domänenbeschränkungen aktiviert ist
private_comment: Privater Kommentar private_comment: Privater Kommentar
private_comment_hint: Kommentar zu dieser Domain-Beschränkung für die interne Nutzung durch die Moderatoren. private_comment_hint: Kommentar zu dieser Domain-Beschränkung für die interne Nutzung durch die Moderatoren.
public_comment: Öffentlicher Kommentar public_comment: Öffentlicher Kommentar
@ -564,6 +566,7 @@ de:
domain_blocks_rationale: domain_blocks_rationale:
title: Rationale anzeigen title: Rationale anzeigen
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Neue Benutzer automatisch den konfigurierten Konten folgen lassen, sodass ihr Home-Feed nicht leer startet
title: Aktiviere die Option "Konten, denen Neu-Angemeldete automatisch folgen" title: Aktiviere die Option "Konten, denen Neu-Angemeldete automatisch folgen"
hero: hero:
desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet
@ -921,6 +924,8 @@ de:
status: Verifizierungsstatus status: Verifizierungsstatus
view_proof: Zeige Nachweis view_proof: Zeige Nachweis
imports: imports:
errors:
over_rows_processing_limit: enthält mehr als %{count} Zeilen
modes: modes:
merge: Zusammenführen merge: Zusammenführen
merge_long: Behalte existierende Datensätze und füge neue hinzu merge_long: Behalte existierende Datensätze und füge neue hinzu

View File

@ -21,18 +21,18 @@ zh-TW:
action: 驗證電子信箱位址 action: 驗證電子信箱位址
action_with_app: 確認並返回 %{app} action_with_app: 確認並返回 %{app}
explanation: 您已經在 %{host} 上以此電子信箱位址建立了一支帳戶。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。 explanation: 您已經在 %{host} 上以此電子信箱位址建立了一支帳戶。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
explanation_when_pending: 您使用此電子信箱位址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請,而直到核准前您都無法登入。當您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 explanation_when_pending: 您使用此電子信箱位址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。
extra_html: 同時也請看看<a href="%{terms_path}">伺服器規則</a>與<a href="%{policy_path}">服務條款</a>。 extra_html: 同時也請看看<a href="%{terms_path}">伺服器規則</a>與<a href="%{policy_path}">服務條款</a>。
subject: Mastodon%{instance} 確認說明 subject: Mastodon%{instance} 確認說明
title: 驗證電子信箱位址 title: 驗證電子信箱位址
email_changed: email_changed:
explanation: 您帳戶的電子信箱位址將變更為: explanation: 您帳戶的電子信箱位址將變更為:
extra: 若您未變更電子信箱,那麼很有可能是某人取得了帳戶的存取權限。請立刻變更密碼,或當帳戶被鎖定時,請聯絡伺服器的管理員。 extra: 若您未變更電子信箱,那麼很有可能是某人取得了帳戶的存取權限。請立刻變更密碼,或當帳戶被鎖定時,請聯絡伺服器的管理員。
subject: Mastodon已變更電子信箱 subject: Mastodon已變更電子信箱
title: 新電子信箱位址 title: 新電子信箱位址
password_change: password_change:
explanation: 您帳戶的密碼已變更。 explanation: 您帳戶的密碼已變更。
extra: 如果您未變更密碼,那麼很有可能是某人取得了帳戶的存取權限。請立刻變更密碼,或若帳戶被鎖定時,請聯絡伺服器的管理員。 extra: 您未變更密碼,那麼很有可能是某人取得了帳戶的存取權限。請立刻變更密碼,或若帳戶被鎖定時,請聯絡伺服器的管理員。
subject: Mastodon已變更密碼 subject: Mastodon已變更密碼
title: 密碼已變更 title: 密碼已變更
reconfirmation_instructions: reconfirmation_instructions:
@ -43,7 +43,7 @@ zh-TW:
reset_password_instructions: reset_password_instructions:
action: 變更密碼 action: 變更密碼
explanation: 您已請求帳戶的新密碼。 explanation: 您已請求帳戶的新密碼。
extra: 若您並未請求,請忽略此信件。您的密碼在存取上方連結並建立新連結前不會變更。 extra: 若您並未請求,請忽略此信件。您的密碼在存取上方連結並建立新密碼前不會變更。
subject: Mastodon重設密碼指引 subject: Mastodon重設密碼指引
title: 重設密碼 title: 重設密碼
two_factor_disabled: two_factor_disabled:
@ -63,27 +63,27 @@ zh-TW:
webauthn_credential: webauthn_credential:
added: added:
explanation: 下面的安全密鑰已經新增至您的帳戶 explanation: 下面的安全密鑰已經新增至您的帳戶
subject: 'Mastodon: 新安全密鑰' subject: Mastodon新安全密鑰
title: 已新增新安全密鑰 title: 已新增新安全密鑰
deleted: deleted:
explanation: 的安全密鑰已經從您的帳戶中移除 explanation: 下的安全密鑰已經從您的帳戶中移除
subject: 'Mastodon: 安全密鑰已移除' subject: Mastodon安全密鑰已移除
title: 您的一支安全密鑰已經被移除 title: 您的一支安全密鑰已經被移除
webauthn_disabled: webauthn_disabled:
explanation: 您的帳戶並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 explanation: 您的帳戶並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。
subject: 'Mastodon: 安全密鑰認證方式已關閉' subject: Mastodon安全密鑰認證方式已關閉
title: 已關閉安全密鑰 title: 已關閉安全密鑰
webauthn_enabled: webauthn_enabled:
explanation: 安全密鑰認證已在您的帳戶中啟用。您可以使用安全密鑰登入了。 explanation: 您的帳戶已啟用安全密鑰認證。您可以使用安全密鑰登入了。
subject: 'Mastodon: 以啟用安全密鑰認證' subject: Mastodon已啟用安全密鑰認證
title: 啟安全密鑰 title: 安全密鑰
omniauth_callbacks: omniauth_callbacks:
failure: 無法透過 %{kind} 認證是否為您,因為「%{reason}」。 failure: 無法透過 %{kind} 認證是否為您,因為「%{reason}」。
success: 成功透過 %{kind} 帳戶登入。 success: 成功透過 %{kind} 帳戶登入。
passwords: passwords:
no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。 no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。
send_instructions: 若電子信箱位址存在於資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 send_instructions: 若電子信箱位址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
send_paranoid_instructions: 若電子信箱位址存在於資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 send_paranoid_instructions: 若電子信箱位址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
updated: 您的密碼已成功變更,現在已經登入。 updated: 您的密碼已成功變更,現在已經登入。
updated_not_active: 您的密碼已成功變更。 updated_not_active: 您的密碼已成功變更。
registrations: registrations:
@ -93,14 +93,14 @@ zh-TW:
signed_up_but_locked: 您已註冊成功,但由於您的帳戶已被鎖定,我們無法讓您登入。 signed_up_but_locked: 您已註冊成功,但由於您的帳戶已被鎖定,我們無法讓您登入。
signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。 signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。
signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。 signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。
update_needs_confirmation: 更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。 update_needs_confirmation: 成功更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。
updated: 您的帳戶已成功更新。 updated: 您的帳戶已成功更新。
sessions: sessions:
already_signed_out: 已成功登出。 already_signed_out: 已成功登出。
signed_in: 已成功登入。 signed_in: 已成功登入。
signed_out: 已成功登出。 signed_out: 已成功登出。
unlocks: unlocks:
send_instructions: 幾分鐘後您將收到確認信件。若未收到此信件,請檢查垃圾郵件資料夾。 send_instructions: 幾分鐘後您將收到解鎖帳號的指引信件。若未收到請檢查垃圾郵件資料夾。
send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。 send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。
unlocked: 已解鎖您的帳戶,請登入繼續。 unlocked: 已解鎖您的帳戶,請登入繼續。
errors: errors:

View File

@ -557,6 +557,7 @@ el:
domain_blocks_rationale: domain_blocks_rationale:
title: Εμφάνιση σκεπτικού title: Εμφάνιση σκεπτικού
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Οι νέοι χρήστες να ακολουθούν τους προρυθμισμένουνς λογαριασμούς ώστε η αρχική ροή τους να μην είναι άδεια
title: Προεπιλογή παρακολούθησης για τους νέους χρήστες title: Προεπιλογή παρακολούθησης για τους νέους χρήστες
hero: hero:
desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου

View File

@ -566,6 +566,7 @@ es-AR:
domain_blocks_rationale: domain_blocks_rationale:
title: Mostrar razonamiento title: Mostrar razonamiento
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Hacer que los nuevos usuarios sigan automáticamente las cuentas configuradas para que su línea temporal principal no comience vacía
title: Habilitar seguimientos predeterminados para nuevas cuentas title: Habilitar seguimientos predeterminados para nuevas cuentas
hero: hero:
desc_html: Mostrado en la página principal. Se recomienda un tamaño mínimo de 600x100 píxeles. Predeterminadamente se establece a la miniatura del servidor desc_html: Mostrado en la página principal. Se recomienda un tamaño mínimo de 600x100 píxeles. Predeterminadamente se establece a la miniatura del servidor

View File

@ -566,6 +566,7 @@ es:
domain_blocks_rationale: domain_blocks_rationale:
title: Mostrar la razón de ser title: Mostrar la razón de ser
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Hacer que los nuevos usuarios sigan automáticamente las cuentas configuradas para que su línea temporal de inicio no comience vacía
title: Habilitar seguimientos predeterminados para usuarios nuevos title: Habilitar seguimientos predeterminados para usuarios nuevos
hero: hero:
desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia

View File

@ -566,6 +566,7 @@ fr:
domain_blocks_rationale: domain_blocks_rationale:
title: Montrer la raison title: Montrer la raison
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Faire suivre automatiquement les comptes configurés aux nouveaux·lles utilisateurs·rices afin que leur flux personnel ne démarre pas vide
title: Activer les abonnements par défaut pour les nouveaux·elles utilisateur·rice·s title: Activer les abonnements par défaut pour les nouveaux·elles utilisateur·rice·s
hero: hero:
desc_html: Affichée sur la page daccueil. Au moins 600x100px recommandé. Lorsquelle nest pas définie, se rabat sur la vignette du serveur desc_html: Affichée sur la page daccueil. Au moins 600x100px recommandé. Lorsquelle nest pas définie, se rabat sur la vignette du serveur

View File

@ -402,6 +402,8 @@ gl:
silence: Silenciar silence: Silenciar
suspend: Suspender suspend: Suspender
title: Novo bloqueo de dominio title: Novo bloqueo de dominio
obfuscate: Ofuscar o nome de dominio
obfuscate_hint: Ofuscar parcialmente o nome do dominio na lista se está activada a publicación da lista de limitacións de dominio
private_comment: Comentario privado private_comment: Comentario privado
private_comment_hint: Comentar sobre esta limitación de dominio para uso interno polos moderadores. private_comment_hint: Comentar sobre esta limitación de dominio para uso interno polos moderadores.
public_comment: Comentario público public_comment: Comentario público
@ -564,6 +566,7 @@ gl:
domain_blocks_rationale: domain_blocks_rationale:
title: Amosar motivo title: Amosar motivo
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Facer que as novas usuarias sigan automáticamente certas contas para que así a cronoloxía inicial non esté baleira
title: Activar seguimentos por omisión para novas usuarias title: Activar seguimentos por omisión para novas usuarias
hero: hero:
desc_html: Amosado na páxina principal. Polo menos 600x100px recomendados. Se non está definido, estará por defecto a miniatura do servidor desc_html: Amosado na páxina principal. Polo menos 600x100px recomendados. Se non está definido, estará por defecto a miniatura do servidor
@ -921,6 +924,8 @@ gl:
status: Estado da validación status: Estado da validación
view_proof: Ver proba view_proof: Ver proba
imports: imports:
errors:
over_rows_processing_limit: contén máis de %{count} filas
modes: modes:
merge: Fusionar merge: Fusionar
merge_long: Manter os rexistros actuais e engadir novos merge_long: Manter os rexistros actuais e engadir novos

View File

@ -21,9 +21,9 @@ hu:
federation_hint_html: Egy %{instance} fiókkal bármely más Mastodon szerveren vagy a föderációban lévő felhasználót követni tudsz. federation_hint_html: Egy %{instance} fiókkal bármely más Mastodon szerveren vagy a föderációban lévő felhasználót követni tudsz.
get_apps: Próbálj ki egy mobil appot get_apps: Próbálj ki egy mobil appot
hosted_on: "%{domain} Mastodon szerver" hosted_on: "%{domain} Mastodon szerver"
instance_actor_flash: 'Ez a fiók egy virtuális szereplő, mely magát a szervert reprezentálja, nem egy felhasználót. Ez a föderáció támogatására készült, ezért nem szabad blokkolni, hacsak egy teljes szervert nem akarsz kitiltani, amire persze a domain blokkolása jobb megoldás. instance_actor_flash: |
Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét
' felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni, hacsak nem akarod a teljes szervert kitiltani, mely esetben a domain tiltásának használata javasolt.
learn_more: Tudj meg többet learn_more: Tudj meg többet
privacy_policy: Adatvédelmi szabályzat privacy_policy: Adatvédelmi szabályzat
see_whats_happening: Nézd, mi történik see_whats_happening: Nézd, mi történik
@ -60,7 +60,9 @@ hu:
one: Követő one: Követő
other: Követő other: Követő
following: Követett following: Követett
instance_actor_flash: Ez a fiók virtuális és magát a kiszolgálót reprezentálja, nem egy konkrét felhasználót. Föderációs célokból használt, és nem szabad felfüggeszteni. instance_actor_flash: |-
Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét
felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni.
joined: Csatlakozott %{date} joined: Csatlakozott %{date}
last_active: utoljára aktív last_active: utoljára aktív
link_verified_on: A link tulajdonosát %{date} -n ellenőriztük link_verified_on: A link tulajdonosát %{date} -n ellenőriztük
@ -226,15 +228,15 @@ hu:
create_announcement: Közlemény létrehozása create_announcement: Közlemény létrehozása
create_custom_emoji: Egyéni emodzsi létrehozása create_custom_emoji: Egyéni emodzsi létrehozása
create_domain_allow: Domain engedélyezés létrehozása create_domain_allow: Domain engedélyezés létrehozása
create_domain_block: Domain blokkolás létrehozása create_domain_block: Domain tiltás létrehozása
create_email_domain_block: E-mail domain blokkolás létrehozása create_email_domain_block: E-mail domain tiltás létrehozása
create_ip_block: IP szabály létrehozása create_ip_block: IP szabály létrehozása
demote_user: Felhasználó lefokozása demote_user: Felhasználó lefokozása
destroy_announcement: Közlemény törlése destroy_announcement: Közlemény törlése
destroy_custom_emoji: Egyéni emodzsi törlése destroy_custom_emoji: Egyéni emodzsi törlése
destroy_domain_allow: Domain engedélyezés törlése destroy_domain_allow: Domain engedélyezés törlése
destroy_domain_block: Domain blokkolás törlése destroy_domain_block: Domain tiltás törlése
destroy_email_domain_block: E-mail domain blokkolás törlése destroy_email_domain_block: E-mail domain tiltás törlése
destroy_ip_block: IP szabály törlése destroy_ip_block: IP szabály törlése
destroy_status: Állapot törlése destroy_status: Állapot törlése
disable_2fa_user: Kétlépcsős hitelesítés letiltása disable_2fa_user: Kétlépcsős hitelesítés letiltása
@ -257,7 +259,7 @@ hu:
unsuspend_account: Fiók felfüggesztésének feloldása unsuspend_account: Fiók felfüggesztésének feloldása
update_announcement: Közlemény frissítése update_announcement: Közlemény frissítése
update_custom_emoji: Egyéni emodzsi frissítése update_custom_emoji: Egyéni emodzsi frissítése
update_domain_block: Domain blokkolás frissítése update_domain_block: Domain tiltás frissítése
update_status: Állapot frissítése update_status: Állapot frissítése
actions: actions:
assigned_to_self_report: "%{name} a %{target} bejelentést magához rendelte" assigned_to_self_report: "%{name} a %{target} bejelentést magához rendelte"
@ -268,14 +270,14 @@ hu:
create_custom_emoji: "%{name} új emodzsit töltött fel: %{target}" create_custom_emoji: "%{name} új emodzsit töltött fel: %{target}"
create_domain_allow: "%{name} engedélyező listára vette %{target} domaint" create_domain_allow: "%{name} engedélyező listára vette %{target} domaint"
create_domain_block: "%{name} letiltotta az alábbi domaint: %{target}" create_domain_block: "%{name} letiltotta az alábbi domaint: %{target}"
create_email_domain_block: "%{name} feketelistára tette az alábbi e-mail domaint: %{target}" create_email_domain_block: "%{name} letiltotta az e-mail domaint: %{target}"
create_ip_block: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban" create_ip_block: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban"
demote_user: "%{name} lefokozta az alábbi felhasználót: %{target}" demote_user: "%{name} lefokozta az alábbi felhasználót: %{target}"
destroy_announcement: "%{name} törölte a közleményt %{target}" destroy_announcement: "%{name} törölte a közleményt %{target}"
destroy_custom_emoji: "%{name} törölte az emodzsit: %{target}" destroy_custom_emoji: "%{name} törölte az emodzsit: %{target}"
destroy_domain_allow: "%{name} leszedte %{target} domaint az engedélyező listáról" destroy_domain_allow: "%{name} leszedte %{target} domaint az engedélyező listáról"
destroy_domain_block: "%{name} engedélyezte az alábbi domaint: %{target}" destroy_domain_block: "%{name} engedélyezte az alábbi domaint: %{target}"
destroy_email_domain_block: "%{name} fehérlistára tette az alábbi e-mail domaint: %{target}" destroy_email_domain_block: "%{name} engedélyezte az e-mail domaint: %{target}"
destroy_ip_block: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban" destroy_ip_block: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban"
destroy_status: "%{name} eltávolította az alábbi felhasználó tülkjét: %{target}" destroy_status: "%{name} eltávolította az alábbi felhasználó tülkjét: %{target}"
disable_2fa_user: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján" disable_2fa_user: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján"
@ -298,7 +300,7 @@ hu:
unsuspend_account: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését" unsuspend_account: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését"
update_announcement: "%{name} frissítette a közleményt %{target}" update_announcement: "%{name} frissítette a közleményt %{target}"
update_custom_emoji: "%{name} frissítette az alábbi emodzsit: %{target}" update_custom_emoji: "%{name} frissítette az alábbi emodzsit: %{target}"
update_domain_block: "%{name} frissítette a(z) %{target} domain blokkolását" update_domain_block: "%{name} frissítette a %{target} domain tiltását"
update_status: "%{name} frissítette %{target} felhasználó tülkjét" update_status: "%{name} frissítette %{target} felhasználó tülkjét"
deleted_status: "(törölt tülk)" deleted_status: "(törölt tülk)"
empty: Nem található napló. empty: Nem található napló.
@ -430,16 +432,16 @@ hu:
view: Domain tiltásának megtekintése view: Domain tiltásának megtekintése
email_domain_blocks: email_domain_blocks:
add_new: Új hozzáadása add_new: Új hozzáadása
created_msg: E-mail domain sikeresen hozzáadva a feketelistához created_msg: E-mail domain sikeresen letiltva
delete: Törlés delete: Törlés
destroyed_msg: E-mail domain sikeresen eltávolítva a feketelistáról destroyed_msg: E-mail domain sikeresen engedélyezve
domain: Domain domain: Domain
empty: Nincs email domain a feketelistán. empty: Nincs letiltott email domain.
from_html: "%{domain}-ról" from_html: "%{domain}-ról"
new: new:
create: Domain hozzáadása create: Domain hozzáadása
title: Új e-mail feketelista bejegyzés title: Új e-mail domain tiltása
title: E-mail feketelista title: Tiltott e-mail domainek
instances: instances:
by_domain: Domain by_domain: Domain
delivery_available: Kézbesítés elérhető delivery_available: Kézbesítés elérhető
@ -566,6 +568,7 @@ hu:
domain_blocks_rationale: domain_blocks_rationale:
title: Mutasd meg az indokolást title: Mutasd meg az indokolást
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Az új felhasználók automatikusan követik a beállított fiókokat, így a Saját idővonaluk kezdéskor nem lesz üres
title: Alapértelmezett követés engedélyezése új felhasználóknak title: Alapértelmezett követés engedélyezése új felhasználóknak
hero: hero:
desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk
@ -1004,7 +1007,7 @@ hu:
moderation: moderation:
title: Moderáció title: Moderáció
move_handler: move_handler:
carry_blocks_over_text: Ez a fiók elköltözött innen %{acct}, melyet blokkoltatok. carry_blocks_over_text: Ez a fiók elköltözött innen %{acct}, melyet letiltottatok.
carry_mutes_over_text: Ez a fiók elköltözött innen %{acct}, melyet lenémítottatok. carry_mutes_over_text: Ez a fiók elköltözött innen %{acct}, melyet lenémítottatok.
copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:' copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:'
notification_mailer: notification_mailer:
@ -1187,7 +1190,7 @@ hu:
preferences: Beállítások preferences: Beállítások
profile: Profil profile: Profil
relationships: Követések és követők relationships: Követések és követők
two_factor_authentication: Kétlépcsős azonosítás two_factor_authentication: Kétlépcsős hitelesítés
webauthn_authentication: Biztonsági kulcsok webauthn_authentication: Biztonsági kulcsok
spam_check: spam_check:
spam_detected: Ez egy automatikus jelentés. Spamet érzékeltünk. spam_detected: Ez egy automatikus jelentés. Spamet érzékeltünk.

View File

@ -166,10 +166,12 @@ hy:
roles: roles:
admin: Ադմինիստրատոր admin: Ադմինիստրատոր
moderator: Մոդերատոր moderator: Մոդերատոր
staff: Անձնակազմ
user: Oգտատէր user: Oգտատէր
search: Որոնել search: Որոնել
search_same_email_domain: Այլ օգտատէրեր նոյն էլ․ փոստի դոմէյնով search_same_email_domain: Այլ օգտատէրեր նոյն էլ․ փոստի դոմէյնով
search_same_ip: Այլ օգտատէրեր նոյն IP֊ով search_same_ip: Այլ օգտատէրեր նոյն IP֊ով
sensitive: Զգայուն
show: show:
created_reports: Կազմել բողոքներ created_reports: Կազմել բողոքներ
targeted_reports: Այլոց կողմից բողոքարկուած targeted_reports: Այլոց կողմից բողոքարկուած
@ -194,6 +196,7 @@ hy:
confirm_user: Հաստատել օգտատիրոջը confirm_user: Հաստատել օգտատիրոջը
create_account_warning: Ստեղծել զգուշացում create_account_warning: Ստեղծել զգուշացում
create_announcement: Ստեղծել յայտարարութիւն create_announcement: Ստեղծել յայտարարութիւն
create_custom_emoji: Ստեղծել սեփական էմոջիները
create_email_domain_block: Ստեղծել էլ․ հասցէի դոմէյնի արգելափակում create_email_domain_block: Ստեղծել էլ․ հասցէի դոմէյնի արգելափակում
create_ip_block: Ստեղծել IP կանոն create_ip_block: Ստեղծել IP կանոն
destroy_announcement: Ջնջել յայտարարութիւնը destroy_announcement: Ջնջել յայտարարութիւնը
@ -278,8 +281,11 @@ hy:
image_hint: PNG մինչեւ 50KB image_hint: PNG մինչեւ 50KB
list: Ցանկ list: Ցանկ
listed: Ցուցակագրուած listed: Ցուցակագրուած
new:
title: Աւելացնել նոր էմոջի
overwrite: Վերագրել overwrite: Վերագրել
shortcode: Հապավում shortcode: Հապավում
title: Սեփական էմօջիներ
uncategorized: Չդասակարգուած uncategorized: Չդասակարգուած
unlist: Ապացուցակագրում unlist: Ապացուցակագրում
unlisted: Ծածուկ unlisted: Ծածուկ
@ -290,6 +296,7 @@ hy:
feature_invites: Հրաւէրի յղումներ feature_invites: Հրաւէրի յղումներ
feature_profile_directory: Օգտատիրոջ մատեան feature_profile_directory: Օգտատիրոջ մատեան
feature_registrations: Գրանցումներ feature_registrations: Գրանցումներ
feature_spam_check: Հակա-սպամ
feature_timeline_preview: Հոսքի նախադիտում feature_timeline_preview: Հոսքի նախադիտում
features: Յատկանիշներ features: Յատկանիշներ
open_reports: բաց բողոքներ open_reports: բաց բողոքներ
@ -346,6 +353,7 @@ hy:
title: էլ․ փոստի արգելափակուած տիրոյթներ title: էլ․ փոստի արգելափակուած տիրոյթներ
instances: instances:
by_domain: Դոմեն by_domain: Դոմեն
empty: Դոմեյնները չեն գտնուել
known_accounts: known_accounts:
one: "%{count} յայտնի հաշիւ" one: "%{count} յայտնի հաշիւ"
other: "%{count} յայտնի հաշիւներ" other: "%{count} յայտնի հաշիւներ"
@ -387,6 +395,7 @@ hy:
relationships: relationships:
title: "%{acct}ի յարաբերութիւններ" title: "%{acct}ի յարաբերութիւններ"
relays: relays:
add_new: Աւելացնել նոր վերահեռարձակուիչ
delete: Ջնջել delete: Ջնջել
disable: Անջատել disable: Անջատել
disabled: Անջատված է disabled: Անջատված է
@ -424,6 +433,7 @@ hy:
updated_at: Թարմացուած updated_at: Թարմացուած
settings: settings:
contact_information: contact_information:
email: Գործնական էլփոստ
username: Կոնտակտի ծածկանուն username: Կոնտակտի ծածկանուն
custom_css: custom_css:
title: Սեփական CSS title: Սեփական CSS
@ -449,6 +459,10 @@ hy:
approved: Գրանցման համար անհրաժեշտ է հաստատում approved: Գրանցման համար անհրաժեշտ է հաստատում
none: Ոչ ոք չի կարող գրանցուել none: Ոչ ոք չի կարող գրանցուել
open: Բոլորը կարող են գրանցուել open: Բոլորը կարող են գրանցուել
title: Գրանցումային ռեժիմ
show_staff_badge:
desc_html: Ցուցադրել անձնակազմի անդամի նշանը օգտատիրոջ էջում
title: Ցուցադրել անձնակազմի անդամի նշանը
site_description: site_description:
title: Կայքի նկարագրութիւն title: Կայքի նկարագրութիւն
site_short_description: site_short_description:
@ -468,10 +482,13 @@ hy:
back_to_account: Վերադառնալ անձնական էջ back_to_account: Վերադառնալ անձնական էջ
batch: batch:
delete: Ջնջել delete: Ջնջել
nsfw_on: Նշել որպէս դիւրազգաց
deleted: Ջնջված է deleted: Ջնջված է
failed_to_execute: Կատարումը ձախողուեց
media: media:
title: Մեդիա title: Մեդիա
no_media: Մեդիա չկայ no_media: Մեդիա չկայ
title: Օգտատիրոջ գրառումները
with_media: Մեդիայի հետ with_media: Մեդիայի հետ
tags: tags:
context: Համատեքստ context: Համատեքստ
@ -509,6 +526,7 @@ hy:
view_status: Նայել գրառումը view_status: Նայել գրառումը
applications: applications:
invalid_url: Տրամադրուած URL անվաւեր է invalid_url: Տրամադրուած URL անվաւեր է
your_token: Քո մուտքի բանալին
auth: auth:
apply_for_account: Հրաւէրի հարցում apply_for_account: Հրաւէրի հարցում
change_password: Գաղտնաբառ change_password: Գաղտնաբառ
@ -519,6 +537,7 @@ hy:
login: Մտնել login: Մտնել
logout: Դուրս գալ logout: Դուրս գալ
migrate_account: Տեղափոխուել այլ հաշիւ migrate_account: Տեղափոխուել այլ հաշիւ
or_log_in_with: Կամ մուտք գործել օգտագործելով՝
providers: providers:
cas: CAS cas: CAS
saml: SAML saml: SAML
@ -531,6 +550,7 @@ hy:
title: Կարգավորում title: Կարգավորում
status: status:
account_status: Հաշուի կարգավիճակ account_status: Հաշուի կարգավիճակ
pending: Դիմումը պէտք է քննուի մեր անձնակազմի կողմից, ինչը կարող է մի փոքր ժամանակ խլել։ Դիմումի հաստատուելու դէպքում, կտեղեկացնենք նամակով։
authorize_follow: authorize_follow:
follow: Հետևել follow: Հետևել
following: Յաջողութի՜ւն։ Դու այժմ հետեւում ես․ following: Յաջողութի՜ւն։ Դու այժմ հետեւում ես․
@ -578,7 +598,7 @@ hy:
errors: errors:
'400': The request you submitted was invalid or malformed. '400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page. '403': You don't have permission to view this page.
'404': The page you are looking for isn't here. '404': Էջը, որը փնտրում ես գոյութիւն չունի։
'406': This page is not available in the requested format. '406': This page is not available in the requested format.
'410': The page you were looking for doesn't exist here anymore. '410': The page you were looking for doesn't exist here anymore.
'422': '422':
@ -633,6 +653,7 @@ hy:
identity_proofs: identity_proofs:
active: Ակտիվ active: Ակտիվ
authorize: Այո, նոյնականացնել authorize: Այո, նոյնականացնել
authorize_connection_prompt: Հաւաստագրէ՞լ այս ծածկագրման կապակցումը
i_am_html: Ես %{username}ն եմ %{service}ում։ i_am_html: Ես %{username}ն եմ %{service}ում։
identity: Ինքնութիւն identity: Ինքնութիւն
inactive: Ոչ ակտիւ inactive: Ոչ ակտիւ
@ -650,6 +671,7 @@ hy:
blocking: Արգելափակումների ցուցակ blocking: Արգելափակումների ցուցակ
bookmarks: Էջանիշեր bookmarks: Էջանիշեր
domain_blocking: Տիրոյթի արգելափակումների ցուցակ domain_blocking: Տիրոյթի արգելափակումների ցուցակ
following: Հետեւումների ցանկ
upload: Վերբեռնել upload: Վերբեռնել
invites: invites:
delete: Ապաակտիւացնել delete: Ապաակտիւացնել
@ -680,11 +702,14 @@ hy:
not_found: չգտնուեց not_found: չգտնուեց
past_migrations: Նախոդ միգրացիաները past_migrations: Նախոդ միգրացիաները
proceed_with_move: Տեղափոխել հետեւորդներին proceed_with_move: Տեղափոխել հետեւորդներին
redirecting_to: Քո հաշիւը վերահասցեաորում է %{acct}-ին
warning: warning:
followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը
moderation: moderation:
title: Մոդերացիա title: Մոդերացիա
notification_mailer: notification_mailer:
digest:
title: Երբ բացակայ էիր...
favourite: favourite:
title: Նոր հաւանում title: Նոր հաւանում
follow: follow:
@ -695,6 +720,8 @@ hy:
title: Նոր հետեւելու հայցեր title: Նոր հետեւելու հայցեր
mention: mention:
action: Պատասխանել action: Պատասխանել
notifications:
other_settings: Ծանուցումների այլ կարգաւորումներ
number: number:
human: human:
decimal_units: decimal_units:
@ -714,8 +741,12 @@ hy:
older: Ավելի հին older: Ավելի հին
prev: Նախորդ prev: Նախորդ
truncate: "&hellip;" truncate: "&hellip;"
polls:
errors:
duration_too_short: շատ կարճ է
preferences: preferences:
other: Այլ other: Այլ
posting_defaults: Կանխադիր կարգաւորումներ
public_timelines: Հանրային հոսք public_timelines: Հանրային հոսք
relationships: relationships:
activity: Հաշուի ակտիւութիւնը activity: Հաշուի ակտիւութիւնը
@ -732,6 +763,8 @@ hy:
remove_selected_domains: Հեռացնել բոլոր հետեւորդներին նշուած դոմեյններից remove_selected_domains: Հեռացնել բոլոր հետեւորդներին նշուած դոմեյններից
remove_selected_followers: Հեռացնել նշուած հետեւորդներին remove_selected_followers: Հեռացնել նշուած հետեւորդներին
status: Հաշուի կարգավիճակ status: Հաշուի կարգավիճակ
scheduled_statuses:
too_soon: Նախադրուած ամսաթիւը պէտք է լինի ապագայում
sessions: sessions:
activity: Վերջին թութը activity: Վերջին թութը
browser: Դիտարկիչ browser: Դիտարկիչ
@ -771,11 +804,14 @@ hy:
title: Սեսսիա title: Սեսսիա
settings: settings:
account: Հաշիվ account: Հաշիվ
account_settings: Հաշուի կարգաւորումներ
appearance: Տեսք appearance: Տեսք
back: Ետ գնալ մաստադոն
delete: Հաշուի ջնջում delete: Հաշուի ջնջում
development: Ծրագրավորում development: Ծրագրավորում
edit_profile: Խմբագրել պրոֆիլը edit_profile: Խմբագրել պրոֆիլը
export: Տվյալների արտահանում export: Տվյալների արտահանում
featured_tags: Ընտրուած հէշթեգեր
identity_proofs: Անձի նոյնացումներ identity_proofs: Անձի նոյնացումներ
import: Ներմուծել import: Ներմուծել
import_and_export: Ներմուծել և արտահանել import_and_export: Ներմուծել և արտահանել
@ -926,12 +962,21 @@ hy:
otp: Նոյնականացման հավելված otp: Նոյնականացման հավելված
recovery_codes: Վերականգնման կոդեր recovery_codes: Վերականգնման կոդեր
recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են
webauthn: Անվտանգութեան բանալիներ
user_mailer: user_mailer:
sign_in_token:
title: Մուտքի փորձ
warning: warning:
get_in_touch: Կարող էք կապուել %{instance} հանգոյցի անձնակազմի հետ պատասխանելով այս նամակին։
statuses: Մասնաւորապէս, միայն՝
title: title:
none: Զգուշացում none: Զգուշացում
sensitive: Մեդիաֆայլը պիտակուել է որպէս զգայուն։
suspend: Հաշիւը արգելափակուած է
welcome: welcome:
edit_profile_action: Կարգաւորել հաշիւը
final_action: Սկսել թթել final_action: Սկսել թթել
review_preferences_action: Փոփոխել կարգաւորումները
subject: Բարի գալուստ Մաստոդոն subject: Բարի գալուստ Մաստոդոն
tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։
tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։ tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։
@ -949,3 +994,4 @@ hy:
verification: Ստուգում verification: Ստուգում
webauthn_credentials: webauthn_credentials:
delete: Ջնջել delete: Ջնջել
registered_on: Գրանցուել է %{date}

View File

@ -556,6 +556,7 @@ id:
domain_blocks_rationale: domain_blocks_rationale:
title: Tampilkan alasan title: Tampilkan alasan
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Buat pengguna baru mengikuti akun yang sudah dipilih agar beranda mereka tidak kosong
title: Aktifkan opsi ikuti otomatis untuk pengguna baru title: Aktifkan opsi ikuti otomatis untuk pengguna baru
hero: hero:
desc_html: Ditampilkan di halaman depan. Direkomendasikan minimal 600x100px. Jika tidak diatur, kembali ke server gambar kecil desc_html: Ditampilkan di halaman depan. Direkomendasikan minimal 600x100px. Jika tidak diatur, kembali ke server gambar kecil

View File

@ -566,6 +566,7 @@ is:
domain_blocks_rationale: domain_blocks_rationale:
title: Birta röksemdafærslu title: Birta röksemdafærslu
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Láta nýja notendur sjálfkrafa fylgjast með uppsettum aðgöngum svo að heimastreymi þeirra byrji ekki autt
title: Virkja sjálfgefnar fylgnistillingar fyrir nýja notendur title: Virkja sjálfgefnar fylgnistillingar fyrir nýja notendur
hero: hero:
desc_html: Birt á forsíðunni. Mælt með að hún sé a.m.k. 600×100 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins desc_html: Birt á forsíðunni. Mælt með að hún sé a.m.k. 600×100 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins

View File

@ -566,6 +566,7 @@ it:
domain_blocks_rationale: domain_blocks_rationale:
title: Mostra motivazione title: Mostra motivazione
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: I nuovi utenti seguiranno automaticamente gli account configurati, in modo che il loro home feed all'inizio non sia vuoto
title: Abilita seguiti predefiniti per i nuovi utenti title: Abilita seguiti predefiniti per i nuovi utenti
hero: hero:
desc_html: Mostrata nella pagina iniziale. Almeno 600x100 px consigliati. Se non impostata, sarà usato il thumbnail del server desc_html: Mostrata nella pagina iniziale. Almeno 600x100 px consigliati. Se non impostata, sarà usato il thumbnail del server

View File

@ -128,6 +128,7 @@ ko:
follows: 팔로잉 수 follows: 팔로잉 수
header: 헤더 header: 헤더
inbox_url: 수신함 URL inbox_url: 수신함 URL
invite_request_text: 가입 하려는 이유
invited_by: 초대자 invited_by: 초대자
ip: IP ip: IP
joined: 가입 joined: 가입
@ -399,6 +400,8 @@ ko:
silence: 침묵 silence: 침묵
suspend: 정지 suspend: 정지
title: 새로운 도메인 차단 title: 새로운 도메인 차단
obfuscate: 도메인 이름 난독화
obfuscate_hint: 도메인 제한 목록을 공개하는 경우 도메인 이름의 일부를 난독화 합니다
private_comment: 비공개 주석 private_comment: 비공개 주석
private_comment_hint: 이 도메인 제한에 대한 주석은 중재자를 위해 내부적으로 사용 됩니다. private_comment_hint: 이 도메인 제한에 대한 주석은 중재자를 위해 내부적으로 사용 됩니다.
public_comment: 공개 주석 public_comment: 공개 주석
@ -557,6 +560,7 @@ ko:
domain_blocks_rationale: domain_blocks_rationale:
title: 사유 보여주기 title: 사유 보여주기
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: 새 사용자들이 자동으로 설정 된 계정들을 팔로우 하도록 해서 그들의 홈 피드가 빈 상태로 시작하지 않도록 합니다
title: 새 유저가 팔로우할 계정을 보여주기 title: 새 유저가 팔로우할 계정을 보여주기
hero: hero:
desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 서버의 썸네일이 사용 됩니다 desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 서버의 썸네일이 사용 됩니다

View File

@ -1,32 +1,52 @@
--- ---
ml: ml:
about: about:
about_this: കുറിച്ച്
api: API
apps: മൊബൈൽ ആപ്പുകൾ
contact: ബന്ധപ്പെടുക
contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_missing: സജ്ജമാക്കിയിട്ടില്ല
contact_unavailable: ലഭ്യമല്ല contact_unavailable: ലഭ്യമല്ല
discover_users: ഉപയോഗ്‌താക്കളെ കണ്ടെത്തുക discover_users: ഉപയോഗ്‌താക്കളെ കണ്ടെത്തുക
get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക
learn_more: കൂടുതൽ പഠിക്കുക learn_more: കൂടുതൽ പഠിക്കുക
privacy_policy: സ്വകാര്യതാ നയം privacy_policy: സ്വകാര്യതാ നയം
see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക
source_code: സോഴ്സ് കോഡ്
status_count_before: ആരാൽ എഴുതപ്പെട്ടു status_count_before: ആരാൽ എഴുതപ്പെട്ടു
tagline: സുഹൃത്തുക്കളെ പിന്തുടരുകയും പുതിയവരെ കണ്ടെത്തുകയും ചെയ്യുക tagline: സുഹൃത്തുക്കളെ പിന്തുടരുകയും പുതിയവരെ കണ്ടെത്തുകയും ചെയ്യുക
terms: സേവന വ്യവസ്ഥകൾ terms: സേവന വ്യവസ്ഥകൾ
unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം
unavailable_content_description: unavailable_content_description:
domain: സെർവർ
reason: കാരണം reason: കാരണം
what_is_mastodon: എന്താണ് മാസ്റ്റഡോൺ? what_is_mastodon: എന്താണ് മാസ്റ്റഡോൺ?
accounts: accounts:
follow: പിന്തുടരുക follow: പിന്തുടരുക
following: നിങ്ങൾ പിന്തുടരുന്നവർ following: പിന്തുടരുന്നു
joined: "%{date} ൽ ചേർന്നു" joined: "%{date} ൽ ചേർന്നു"
last_active: അവസാനം സജീവമായിരുന്നത് last_active: അവസാനം സജീവമായിരുന്നത്
link_verified_on: സന്ധിയുടെ ഉടമസ്ഥാവസ്‌കാശം %{date} ൽ പരിശോധിക്കപ്പെട്ടു link_verified_on: സന്ധിയുടെ ഉടമസ്ഥാവസ്‌കാശം %{date} ൽ പരിശോധിക്കപ്പെട്ടു
media: മാധ്യമങ്ങൾ media: മാധ്യമങ്ങൾ
moved_html: "%{name}, %{new_profile_link} ലേക്ക് നീങ്ങിയിരിക്കുന്നു:" moved_html: "%{name}, %{new_profile_link} ലേക്ക് നീങ്ങിയിരിക്കുന്നു:"
network_hidden: ഈ വിവരം ലഭ്യമല്ല
nothing_here: ഇവിടെ ഒന്നുമില്ല!
posts_tab_heading: ടൂട്ടുകൾ
posts_with_replies: ടൂട്ടുകളും മറുപടികളും
roles:
admin: അഡ്‌മിന്‍
bot: ബോട്ട്
group: ഗ്രൂപ്പ്
unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല
admin: admin:
account_moderation_notes: account_moderation_notes:
delete: മായ്ക്കുക delete: മായ്ക്കുക
accounts: accounts:
add_email_domain_block: ഇ-മെയിൽ ഡൊമെയ്ൻ തടയുക
approve: അംഗീകരിക്കുക approve: അംഗീകരിക്കുക
approve_all: എല്ലാം അംഗീകരിക്കുക
are_you_sure: നിങ്ങൾക്ക് ഉറപ്പാണോ?
avatar: അവതാർ
by_domain: മേഖല by_domain: മേഖല
change_email: change_email:
changed_msg: അംഗത്തിന്റെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം വിജയകരമായി മാറ്റിയിരിക്കുന്നു! changed_msg: അംഗത്തിന്റെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം വിജയകരമായി മാറ്റിയിരിക്കുന്നു!
@ -37,6 +57,8 @@ ml:
title: "%{username} ന്റെ ഇലക്ട്രോണിക് കത്ത് മേൽവിലാസം മാറ്റുക" title: "%{username} ന്റെ ഇലക്ട്രോണിക് കത്ത് മേൽവിലാസം മാറ്റുക"
confirm: നിജപ്പെടുത്തുക confirm: നിജപ്പെടുത്തുക
confirmed: നിജപ്പെടുത്തി confirmed: നിജപ്പെടുത്തി
confirming: സ്ഥിരീകരിക്കുന്നു
delete: ഡാറ്റ ഇല്ലാതാക്കുക
deleted: മായിച്ചു deleted: മായിച്ചു
demote: തരം താഴ്ത്തുക demote: തരം താഴ്ത്തുക
disable: പ്രവര്‍ത്തന രഹിതമാക്കുക disable: പ്രവര്‍ത്തന രഹിതമാക്കുക
@ -44,6 +66,56 @@ ml:
disabled: പ്രവർത്തന രഹിതമാക്കപ്പെട്ടിരിക്കുന്നു disabled: പ്രവർത്തന രഹിതമാക്കപ്പെട്ടിരിക്കുന്നു
display_name: കാണപ്പെടുന്ന നാമം display_name: കാണപ്പെടുന്ന നാമം
domain: മേഖല domain: മേഖല
edit: തിരുത്തുക
email: ഇമെയിൽ
header: തലക്കെട്ട്
location:
all: എല്ലാം
moderation:
active: സജീവമാണ്
all: എല്ലാം
resend_confirmation:
send: സ്ഥിരീകരണ ഇമെയിൽ വീണ്ടും അയയ്ക്കുക
success: സ്ഥിരീകരണ ഇമെയിൽ വിജയകരമായി അയച്ചു!
reset: പുനഃക്രമീകരിക്കുക
reset_password: പാസ്‌വേഡ് പുനഃക്രമീകരിക്കുക
role: അനുമതികൾ
roles:
user: ഉപയോക്താവ്
search: തിരയുക
title: അക്കൗണ്ടുകൾ
unconfirmed_email: സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ
username: ഉപയോക്തൃനാമം
web: വെബ്
action_logs:
action_types:
confirm_user: ഉപയോക്താവിനെ സ്ഥിരീകരിക്കുക
remove_avatar_user: അവതാർ നീക്കംചെയ്യുക
reset_password_user: പാസ്‌വേഡ് പുനഃക്രമീകരിക്കുക
custom_emojis:
copy: പകര്‍ത്തുക
create_new_category: പുതിയ വിഭാഗം സൃഷ്ടിക്കുക
delete: ഇല്ലാതാക്കുക
emoji: ഇമോജി
dashboard:
feature_profile_directory: പ്രൊഫൈൽ ഡയറക്ടറി
features: സവിശേഷതകൾ
title: ഡാഷ്ബോർഡ്
total_users: മൊത്തം ഉപയോക്താക്കൾ
trends: ട്രെൻഡുകൾ
email_domain_blocks:
add_new: പുതിയത് ചേര്‍ക്കുക
delete: ഇല്ലാതാക്കുക
domain: ഡൊമൈന്‍
new:
create: ഡൊമൈൻ ചേര്‍ക്കുക
invites:
filter:
all: എല്ലാം
authorize_follow:
following: 'വിജയകരം! നിങ്ങൾ ഇപ്പോൾ പിന്തുടരുന്നു:'
directories:
directory: പ്രൊഫൈൽ ഡയറക്ടറി
errors: errors:
'400': The request you submitted was invalid or malformed. '400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page. '403': You don't have permission to view this page.
@ -54,3 +126,18 @@ ml:
'429': Too many requests '429': Too many requests
'500': '500':
'503': The page could not be served due to a temporary server failure. '503': The page could not be served due to a temporary server failure.
filters:
contexts:
notifications: അറിയിപ്പുകൾ
generic:
all: എല്ലാം
notification_mailer:
digest:
action: എല്ലാ അറിയിപ്പുകളും കാണിക്കുക
follow:
body: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു!"
subject: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു"
relationships:
following: പിന്തുടരുന്നു
settings:
notifications: അറിയിപ്പുകൾ

View File

@ -60,6 +60,7 @@ nl:
one: Volger one: Volger
other: Volgers other: Volgers
following: Volgend following: Volgend
instance_actor_flash: Dit account is een 'virtual actor' waarmee de server zichzelf vertegenwoordigd en is dus geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden opgeschort.
joined: Geregistreerd in %{date} joined: Geregistreerd in %{date}
last_active: laatst actief last_active: laatst actief
link_verified_on: Eigendom van deze link is gecontroleerd op %{date} link_verified_on: Eigendom van deze link is gecontroleerd op %{date}
@ -131,6 +132,7 @@ nl:
follows: Volgt follows: Volgt
header: Omslagfoto header: Omslagfoto
inbox_url: Inbox-URL inbox_url: Inbox-URL
invite_request_text: Redenen om te registreren
invited_by: Uitgenodigd door invited_by: Uitgenodigd door
ip: IP ip: IP
joined: Geregistreerd in joined: Geregistreerd in
@ -207,8 +209,11 @@ nl:
undo_sensitized: Niet meer als gevoelig markeren undo_sensitized: Niet meer als gevoelig markeren
undo_silenced: Niet langer negeren undo_silenced: Niet langer negeren
undo_suspension: Niet langer opschorten undo_suspension: Niet langer opschorten
unsilenced_msg: Het opheffen van de beperkingen van %{username} zijn geslaagd
unsubscribe: Opzeggen unsubscribe: Opzeggen
unsuspended_msg: Het niet langer opschorten van %{username} is geslaagd
username: Gebruikersnaam username: Gebruikersnaam
view_domain: Samenvatting voor domein bekijken
warn: Waarschuwen warn: Waarschuwen
web: Webapp web: Webapp
whitelisted: Goedgekeurd voor federatie whitelisted: Goedgekeurd voor federatie
@ -243,13 +248,16 @@ nl:
reopen_report: Rapportage heropenen reopen_report: Rapportage heropenen
reset_password_user: Wachtwoord opnieuw instellen reset_password_user: Wachtwoord opnieuw instellen
resolve_report: Rapportage oplossen resolve_report: Rapportage oplossen
sensitive_account: De media in jouw account als gevoelig markeren
silence_account: Account negeren silence_account: Account negeren
suspend_account: Account opschorten suspend_account: Account opschorten
unassigned_report: Rapportage niet langer toewijzen unassigned_report: Rapportage niet langer toewijzen
unsensitive_account: De media in jouw account niet langer als gevoelig markeren
unsilence_account: Account niet langer negeren unsilence_account: Account niet langer negeren
unsuspend_account: Account niet langer opschorten unsuspend_account: Account niet langer opschorten
update_announcement: Mededeling bijwerken update_announcement: Mededeling bijwerken
update_custom_emoji: Lokale emoji bijwerken update_custom_emoji: Lokale emoji bijwerken
update_domain_block: Domeinblokkade bijwerken
update_status: Toot bijwerken update_status: Toot bijwerken
actions: actions:
assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen"
@ -428,6 +436,7 @@ nl:
instances: instances:
by_domain: Domein by_domain: Domein
delivery_available: Bezorging is mogelijk delivery_available: Bezorging is mogelijk
empty: Geen domeinen gevonden.
known_accounts: known_accounts:
one: "%{count} bekend account" one: "%{count} bekend account"
other: "%{count} bekende accounts" other: "%{count} bekende accounts"
@ -505,6 +514,8 @@ nl:
comment: comment:
none: Geen none: Geen
created_at: Gerapporteerd op created_at: Gerapporteerd op
forwarded: Doorgestuurd
forwarded_to: Doorgestuurd naar %{domain}
mark_as_resolved: Markeer als opgelost mark_as_resolved: Markeer als opgelost
mark_as_unresolved: Markeer als onopgelost mark_as_unresolved: Markeer als onopgelost
notes: notes:
@ -742,6 +753,7 @@ nl:
functional: Jouw account is volledig operationeel. functional: Jouw account is volledig operationeel.
pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd.
redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}.
too_fast: Formulier is te snel ingediend. Probeer het nogmaals.
trouble_logging_in: Problemen met inloggen? trouble_logging_in: Problemen met inloggen?
use_security_key: Beveiligingssleutel gebruiken use_security_key: Beveiligingssleutel gebruiken
authorize_follow: authorize_follow:
@ -901,6 +913,8 @@ nl:
status: Verificatiestatus status: Verificatiestatus
view_proof: Bekijk bewijs view_proof: Bekijk bewijs
imports: imports:
errors:
over_rows_processing_limit: bevat meer dan %{count} rijen
modes: modes:
merge: Samenvoegen merge: Samenvoegen
merge_long: Bestaande gegevens behouden en nieuwe toevoegen merge_long: Bestaande gegevens behouden en nieuwe toevoegen
@ -1350,11 +1364,13 @@ nl:
subject: subject:
disable: Jouw account %{acct} is bevroren disable: Jouw account %{acct} is bevroren
none: Waarschuwing voor %{acct} none: Waarschuwing voor %{acct}
sensitive: De door jouw account %{acct} geplaatste media is als gevoelig gemarkeerd
silence: Jouw account %{acct} is nu beperkt silence: Jouw account %{acct} is nu beperkt
suspend: Jouw account %{acct} is opgeschort suspend: Jouw account %{acct} is opgeschort
title: title:
disable: Account bevroren disable: Account bevroren
none: Waarschuwing none: Waarschuwing
sensitive: Jouw media is als gevoelig gemarkeerd
silence: Account beperkt silence: Account beperkt
suspend: Account opgeschort suspend: Account opgeschort
welcome: welcome:
@ -1392,9 +1408,14 @@ nl:
webauthn_credentials: webauthn_credentials:
add: Nieuwe beveiligingssleutel toevoegen add: Nieuwe beveiligingssleutel toevoegen
create: create:
error: Er deed zich een probleem voor met het toevoegen van jouw beveiligingssleutel. Probeer het nogmaals.
success: Het toevoegen van je beveiligingssleutel is geslaagd. success: Het toevoegen van je beveiligingssleutel is geslaagd.
delete: Verwijderen delete: Verwijderen
delete_confirmation: Weet je zeker dat je deze beveiligingssleutel wilt verwijderen? delete_confirmation: Weet je zeker dat je deze beveiligingssleutel wilt verwijderen?
description_html: Wanneer je <strong>verificatie met beveiligingssleutels</strong> inschakelt, moet je tijdens het inloggen een van jouw beveiligingssleutels gebruiken.
destroy:
error: Er deed zich een probleem voor met het verwijderen van jouw beveiligingssleutel. Probeer het nogmaals.
success: Het verwijderen van jouw beveiligingssleutel is geslaagd.
invalid_credential: Ongeldige beveiligingssleutel invalid_credential: Ongeldige beveiligingssleutel
nickname_hint: Voer de bijnaam in van jouw nieuwe beveiligingssleutel nickname_hint: Voer de bijnaam in van jouw nieuwe beveiligingssleutel
not_enabled: Je hebt WebAuthn nog niet ingeschakeld not_enabled: Je hebt WebAuthn nog niet ingeschakeld

View File

@ -132,6 +132,7 @@ oc:
login_status: Estat formulari de connexion login_status: Estat formulari de connexion
media_attachments: Mèdias enviats media_attachments: Mèdias enviats
memorialize: Passar en memorial memorialize: Passar en memorial
memorialized: Memorizat
moderation: moderation:
active: Actius active: Actius
all: Totes all: Totes
@ -773,6 +774,7 @@ oc:
request: Demandar vòstre archiu request: Demandar vòstre archiu
size: Talha size: Talha
blocks: Personas que blocatz blocks: Personas que blocatz
bookmarks: Marcadors
csv: CSV csv: CSV
domain_blocks: Blocatge de domenis domain_blocks: Blocatge de domenis
lists: Listas lists: Listas
@ -847,6 +849,7 @@ oc:
success: Vòstras donadas son ben estadas mandadas e seràn tractadas tre que possible success: Vòstras donadas son ben estadas mandadas e seràn tractadas tre que possible
types: types:
blocking: Lista de blocatge blocking: Lista de blocatge
bookmarks: Marcadors
domain_blocking: Lista dels domenis blocats domain_blocking: Lista dels domenis blocats
following: Lista de monde que seguètz following: Lista de monde que seguètz
muting: Lista de monde que volètz pas legir muting: Lista de monde que volètz pas legir
@ -1083,6 +1086,9 @@ oc:
spam_detected: Aquò es un senhalament automatic. Dspam es estat detectat. spam_detected: Aquò es un senhalament automatic. Dspam es estat detectat.
statuses: statuses:
attached: attached:
audio:
one: "%{count} àudio"
other: "%{count} àudios"
description: 'Ajustat: %{attached}' description: 'Ajustat: %{attached}'
image: image:
one: "%{count} imatge" one: "%{count} imatge"
@ -1232,6 +1238,7 @@ oc:
recovery_codes: Salvar los còdis de recuperacion recovery_codes: Salvar los còdis de recuperacion
recovery_codes_regenerated: Los còdis de recuperacion son ben estats tornats generar recovery_codes_regenerated: Los còdis de recuperacion son ben estats tornats generar
recovery_instructions_html: Se vos arriba de perdre vòstre mobil, podètz utilizar un dels còdis de recuperacion cai-jos per poder tornar accedir a vòstre compte. <strong>Gardatz los còdis en seguretat</strong>, per exemple, imprimissètz los e gardatz los amb vòstres documents importants. recovery_instructions_html: Se vos arriba de perdre vòstre mobil, podètz utilizar un dels còdis de recuperacion cai-jos per poder tornar accedir a vòstre compte. <strong>Gardatz los còdis en seguretat</strong>, per exemple, imprimissètz los e gardatz los amb vòstres documents importants.
webauthn: Claus de seguretat
user_mailer: user_mailer:
backup_ready: backup_ready:
explanation: Avètz demandat una salvagarda complèta de vòstre compte Mastodon. Es prèsta per telecargament! explanation: Avètz demandat una salvagarda complèta de vòstre compte Mastodon. Es prèsta per telecargament!
@ -1284,4 +1291,7 @@ oc:
explanation_html: 'Podètz <strong>verificar vosautres meteisses coma proprietari dels ligams per las metadonadas de vòstre perfil</strong>. Per aquò far, lo site Web ligat deu conténer un ligam cap a vòstre perfil Mastodon. Lo ligam <strong>deu</strong> aver un atribut <code>rel="me"</code>. Lo contengut tèxte del ligam impòrta pas. Vaquí un exemple :' explanation_html: 'Podètz <strong>verificar vosautres meteisses coma proprietari dels ligams per las metadonadas de vòstre perfil</strong>. Per aquò far, lo site Web ligat deu conténer un ligam cap a vòstre perfil Mastodon. Lo ligam <strong>deu</strong> aver un atribut <code>rel="me"</code>. Lo contengut tèxte del ligam impòrta pas. Vaquí un exemple :'
verification: Verificacion verification: Verificacion
webauthn_credentials: webauthn_credentials:
add: Apondre una clau de seguretat novèla
delete: Suprimir
invalid_credential: Cau de seguretat invalida
registered_on: Inscripcion del %{date} registered_on: Inscripcion del %{date}

View File

@ -582,6 +582,7 @@ pl:
domain_blocks_rationale: domain_blocks_rationale:
title: Pokaż uzasadnienia title: Pokaż uzasadnienia
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Niech nowi użytkownicy automatycznie śledzą ustawione konta, aby ich główna oś czasu nie był początkowo pusta
title: Dodawaj domyślne obserwacje nowym użytkownikom title: Dodawaj domyślne obserwacje nowym użytkownikom
hero: hero:
desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura serwera desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura serwera

View File

@ -566,6 +566,7 @@ pt-PT:
domain_blocks_rationale: domain_blocks_rationale:
title: Mostrar motivo title: Mostrar motivo
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Faça com que novos utilizadores sigam automaticamente contas configuradas, para que a cronologia destes não se apresente inicialmente vazia
title: Habilitar seguidores predefinidos para novos utilizadores title: Habilitar seguidores predefinidos para novos utilizadores
hero: hero:
desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentada a miniatura da instância desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentada a miniatura da instância

View File

@ -94,6 +94,7 @@ hy:
types: types:
disable: Փակել մուտքը disable: Փակել մուտքը
none: Ոչինչ չանել none: Ոչինչ չանել
sensitive: Զգայուն
silence: Լուռ silence: Լուռ
suspend: Արգելափակել եւ անվերադարձ ջնջել հաշուի ամբողջ ինֆորմացիան suspend: Արգելափակել եւ անվերադարձ ջնջել հաշուի ամբողջ ինֆորմացիան
warning_preset_id: Օգտագործել զգուշացնող նախադիր warning_preset_id: Օգտագործել զգուշացնող նախադիր
@ -119,6 +120,7 @@ hy:
expires_in: Սպառուում է expires_in: Սպառուում է
fields: Հաշուի մետադատա fields: Հաշուի մետադատա
header: Վերնագիր header: Վերնագիր
honeypot: "%{label} (չլրացնել)"
inbox_url: Ներմուծման շերտի URL inbox_url: Ներմուծման շերտի URL
irreversible: Թաքցնելու փոխարէն ջնջել irreversible: Թաքցնելու փոխարէն ջնջել
locale: Ինտերֆեյսի լեզու locale: Ինտերֆեյսի լեզու

View File

@ -14,3 +14,7 @@ ml:
acct: പഴയ അംഗത്വത്തിലേക്കുള്ള പിടി acct: പഴയ അംഗത്വത്തിലേക്കുള്ള പിടി
account_migration: account_migration:
acct: പുതിയ അംഗത്വത്തിലേക്കുള്ള പിടി acct: പുതിയ അംഗത്വത്തിലേക്കുള്ള പിടി
defaults:
email: ഇ-മെയിൽ വിലാസം
notification_emails:
follow: ആരോ നിങ്ങളെ പിന്തുടർന്നു

View File

@ -121,6 +121,7 @@ nl:
expires_in: Vervalt na expires_in: Vervalt na
fields: Metadata profiel fields: Metadata profiel
header: Omslagfoto header: Omslagfoto
honeypot: "%{label} (niet invullen)"
inbox_url: Inbox-URL van de relayserver inbox_url: Inbox-URL van de relayserver
irreversible: Verwijderen in plaats van verbergen irreversible: Verwijderen in plaats van verbergen
locale: Taal van de gebruikersomgeving locale: Taal van de gebruikersomgeving
@ -173,7 +174,7 @@ nl:
invite: invite:
comment: Opmerking comment: Opmerking
invite_request: invite_request:
text: Waarom wil jij je aanmelden? text: Waarom wil je je hier registreren?
ip_block: ip_block:
comment: Opmerking comment: Opmerking
ip: IP ip: IP

View File

@ -126,6 +126,7 @@ oc:
expires_in: Expira aprèp expires_in: Expira aprèp
fields: Metadonada del perfil fields: Metadonada del perfil
header: Bandièra header: Bandièra
honeypot: "%{label} (emplenar pas)"
inbox_url: URL de la bóstia de recepcion del relai inbox_url: URL de la bóstia de recepcion del relai
irreversible: Suprimir allòc de rescondre irreversible: Suprimir allòc de rescondre
locale: Lenga de linterfàcia locale: Lenga de linterfàcia

View File

@ -566,6 +566,7 @@ sq:
domain_blocks_rationale: domain_blocks_rationale:
title: Shfaq arsye title: Shfaq arsye
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Bëj që përdoruesit e rinj automatikisht të ndjekin llogaritë e formësuara, që prurja e tyre bazë të mos nisë e zbrazët
title: Aktivizo ndjekje parazgjedhje për përdorues të rinj title: Aktivizo ndjekje parazgjedhje për përdorues të rinj
hero: hero:
desc_html: E shfaqur në faqen ballore. Këshillohet të paktën 600x100px. Kur nuk caktohet gjë, përdoret miniaturë e shërbyesit desc_html: E shfaqur në faqen ballore. Këshillohet të paktën 600x100px. Kur nuk caktohet gjë, përdoret miniaturë e shërbyesit

View File

@ -558,6 +558,7 @@ vi:
domain_blocks_rationale: domain_blocks_rationale:
title: Hiển thị lý do title: Hiển thị lý do
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: Thiết lập người mới đăng ký sẽ tự động theo dõi những tài khoản cho trước nhằm tránh việc bảng tin trống
title: Gợi ý theo dõi cho người dùng mới title: Gợi ý theo dõi cho người dùng mới
hero: hero:
desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ

View File

@ -57,6 +57,7 @@ zh-CN:
followers: followers:
other: 关注者 other: 关注者
following: 正在关注 following: 正在关注
instance_actor_flash: 这个账户是虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该封禁。
joined: 加入于 %{date} joined: 加入于 %{date}
last_active: 最近活动 last_active: 最近活动
link_verified_on: 此链接的所有权已在 %{date} 检查 link_verified_on: 此链接的所有权已在 %{date} 检查
@ -397,6 +398,8 @@ zh-CN:
silence: 自动隐藏 silence: 自动隐藏
suspend: 自动封禁 suspend: 自动封禁
title: 新增域名屏蔽 title: 新增域名屏蔽
obfuscate: 混淆域名
obfuscate_hint: 如果启用了域名列表公开限制,就部分混淆列表中的域名
private_comment: 私密评论 private_comment: 私密评论
private_comment_hint: 给这一域名限制添加备注,供监察员内部使用 private_comment_hint: 给这一域名限制添加备注,供监察员内部使用
public_comment: 公开评论 public_comment: 公开评论
@ -555,6 +558,7 @@ zh-CN:
domain_blocks_rationale: domain_blocks_rationale:
title: 显示理由 title: 显示理由
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: 让新用户自动关注指定用户,这样,他们的主页时间线就不会在一开始的时候空空荡荡
title: 开启新用户默认关注功能 title: 开启新用户默认关注功能
hero: hero:
desc_html: 将用于在首页展示。推荐使用分辨率 600×100px 以上的图片。如未设置,将默认使用本站缩略图。 desc_html: 将用于在首页展示。推荐使用分辨率 600×100px 以上的图片。如未设置,将默认使用本站缩略图。
@ -583,7 +587,7 @@ zh-CN:
title: 允许发送邀请的用户组 title: 允许发送邀请的用户组
require_invite_text: require_invite_text:
desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项
title: 要求新用户填写注册申请 title: 要求新用户填写申请注册的原因
registrations_mode: registrations_mode:
modes: modes:
approved: 注册时需要批准 approved: 注册时需要批准
@ -911,6 +915,8 @@ zh-CN:
status: 验证状态 status: 验证状态
view_proof: 查看证明 view_proof: 查看证明
imports: imports:
errors:
over_rows_processing_limit: 包含行数超过了 %{count}
modes: modes:
merge: 合并 merge: 合并
merge_long: 保留现有记录并添加新的记录 merge_long: 保留现有记录并添加新的记录

View File

@ -57,6 +57,7 @@ zh-TW:
followers: followers:
other: 關注者 other: 關注者
following: 正在關注 following: 正在關注
instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
joined: 加入於 %{date} joined: 加入於 %{date}
last_active: 上次活躍時間 last_active: 上次活躍時間
link_verified_on: 此連結的所有權已在 %{date} 檢查過 link_verified_on: 此連結的所有權已在 %{date} 檢查過
@ -127,6 +128,7 @@ zh-TW:
follows: 正在關注 follows: 正在關注
header: 開頭 header: 開頭
inbox_url: 收件箱 (Inbox) URL inbox_url: 收件箱 (Inbox) URL
invite_request_text: 加入原因
invited_by: 邀請者 invited_by: 邀請者
ip: IP 位址 ip: IP 位址
joined: 已加入 joined: 已加入
@ -251,6 +253,7 @@ zh-TW:
unsuspend_account: 取消用戶的暫停狀態 unsuspend_account: 取消用戶的暫停狀態
update_announcement: 更新公告 update_announcement: 更新公告
update_custom_emoji: 更新自訂顏文字 update_custom_emoji: 更新自訂顏文字
update_domain_block: 更新封鎖網域
update_status: 更新狀態 update_status: 更新狀態
actions: actions:
assigned_to_self_report: "%{name} 接受了檢舉 %{target}" assigned_to_self_report: "%{name} 接受了檢舉 %{target}"
@ -291,6 +294,7 @@ zh-TW:
unsuspend_account: "%{name} 取消了使用者 %{target} 的停權狀態" unsuspend_account: "%{name} 取消了使用者 %{target} 的停權狀態"
update_announcement: "%{name} 更新了公告 %{target}" update_announcement: "%{name} 更新了公告 %{target}"
update_custom_emoji: "%{name} 更新了自訂表情符號 %{target}" update_custom_emoji: "%{name} 更新了自訂表情符號 %{target}"
update_domain_block: "%{name} 更新封鎖網域 %{target}"
update_status: "%{name} 重整了 %{target} 的嘟文" update_status: "%{name} 重整了 %{target} 的嘟文"
deleted_status: "(已刪除嘟文)" deleted_status: "(已刪除嘟文)"
empty: 找不到 log empty: 找不到 log
@ -394,6 +398,8 @@ zh-TW:
silence: 靜音 silence: 靜音
suspend: 停權 suspend: 停權
title: 新增封鎖站點 title: 新增封鎖站點
obfuscate: 混淆網域名稱
obfuscate_hint: 若啟用網域廣告列表限制,於列表部份混淆網域名稱
private_comment: 私人留言 private_comment: 私人留言
private_comment_hint: 請提供更多有關此站台限制的資訊以供版主作內部參考。 private_comment_hint: 請提供更多有關此站台限制的資訊以供版主作內部參考。
public_comment: 公開留言 public_comment: 公開留言
@ -432,6 +438,7 @@ zh-TW:
instances: instances:
by_domain: 站台 by_domain: 站台
delivery_available: 可傳送 delivery_available: 可傳送
empty: 找不到網域
known_accounts: known_accounts:
other: "%{count} 已知的帳戶" other: "%{count} 已知的帳戶"
moderation: moderation:
@ -483,19 +490,31 @@ zh-TW:
enable_hint: 啟用後,你的伺服器將訂閱該中繼的所有公開文章,並將會此伺服器的公開文章發送給它。 enable_hint: 啟用後,你的伺服器將訂閱該中繼的所有公開文章,並將會此伺服器的公開文章發送給它。
enabled: 已啟用 enabled: 已啟用
inbox_url: 中繼URL inbox_url: 中繼URL
pending: 等待中繼站審核
save_and_enable: 儲存並啟用 save_and_enable: 儲存並啟用
setup: 設定中繼連結
signatures_not_enabled: 若啟用安全模式或受限的站點聯盟模式,中繼將不會正常運作
status: 狀態 status: 狀態
title: 中繼
report_notes: report_notes:
created_msg: 檢舉記錄建立成功! created_msg: 檢舉記錄建立成功!
destroyed_msg: 檢舉記錄刪除成功! destroyed_msg: 檢舉記錄刪除成功!
reports: reports:
account:
notes:
other: "%{count} 則備註"
reports:
other: "%{count} 則檢舉"
action_taken_by: 操作執行者 action_taken_by: 操作執行者
are_you_sure: 你確定嗎? are_you_sure: 你確定嗎?
assign_to_self: 指派給自己 assign_to_self: 指派給自己
assigned: 指派負責人 assigned: 指派負責人
by_target_domain: 檢舉帳號之網域
comment: comment:
none: none:
created_at: 日期 created_at: 日期
forwarded: 已轉寄
forwarded_to: 轉寄到 %{domain}
mark_as_resolved: 標記為「已解決」 mark_as_resolved: 標記為「已解決」
mark_as_unresolved: 標記為「未解決」 mark_as_unresolved: 標記為「未解決」
notes: notes:
@ -526,12 +545,20 @@ zh-TW:
email: 用於聯絡的公開電子信箱位址 email: 用於聯絡的公開電子信箱位址
username: 請輸入使用者名稱 username: 請輸入使用者名稱
custom_css: custom_css:
desc_html: 透過於每個頁面都載入的 CSS 調整外觀
title: 自訂 CSS title: 自訂 CSS
default_noindex:
desc_html: 影響所有沒有變更此設定的使用者
title: 預設將使用者退出搜尋引擎索引
domain_blocks: domain_blocks:
all: 給任何人 all: 給任何人
disabled: 給沒有人 disabled: 給沒有人
title: 顯示封鎖的網域 title: 顯示封鎖的網域
users: 套用至所有登入的本機使用者
domain_blocks_rationale:
title: 顯示解釋原因
enable_bootstrap_timeline_accounts: enable_bootstrap_timeline_accounts:
desc_html: 使新使用者自動跟隨設定之帳號,所以他們的首頁動態一開始不會空白
title: 啟用新使用者的預設追蹤 title: 啟用新使用者的預設追蹤
hero: hero:
desc_html: 在首頁顯示。推薦最小 600x100px。如果留空就會重設回伺服器預覽圖 desc_html: 在首頁顯示。推薦最小 600x100px。如果留空就會重設回伺服器預覽圖
@ -543,6 +570,7 @@ zh-TW:
desc_html: 本伺服器在聯邦中發現的站點 desc_html: 本伺服器在聯邦中發現的站點
title: 發布已知伺服器的列表 title: 發布已知伺服器的列表
preview_sensitive_media: preview_sensitive_media:
desc_html: 連結來自其他網站的預覽將顯示於縮圖,即使這些媒體被標記為敏感
title: 在 OpenGraph 預覽中顯示敏感媒體 title: 在 OpenGraph 預覽中顯示敏感媒體
profile_directory: profile_directory:
desc_html: 允許能探索使用者 desc_html: 允許能探索使用者

View File

@ -2,29 +2,10 @@
module Chewy module Chewy
class Strategy class Strategy
class CustomSidekiq < Base class CustomSidekiq < Sidekiq
class Worker def update(_type, _objects, _options = {})
include ::Sidekiq::Worker super if Chewy.enabled?
sidekiq_options queue: 'pull'
def perform(type, ids, options = {})
options[:refresh] = !Chewy.disable_refresh_async if Chewy.disable_refresh_async
type.constantize.import!(ids, options)
end end
end end
def update(type, objects, _options = {})
return unless Chewy.enabled?
ids = type.root.id ? Array.wrap(objects) : type.adapter.identify(objects)
return if ids.empty?
Worker.perform_async(type.name, ids)
end
def leave; end
end
end end
end end

View File

@ -77,7 +77,7 @@ module Mastodon
def create(username) def create(username)
account = Account.new(username: username) account = Account.new(username: username)
password = SecureRandom.hex password = SecureRandom.hex
user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil) user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true)
if options[:reattach] if options[:reattach]
account = Account.find_local(username) || Account.new(username: username) account = Account.find_local(username) || Account.new(username: username)

View File

@ -17,7 +17,7 @@ module Mastodon
end end
def flags def flags
'rc2' 'rc3'
end end
def suffix def suffix

View File

@ -412,7 +412,7 @@ namespace :mastodon do
password = SecureRandom.hex(16) password = SecureRandom.hex(16)
user = User.new(admin: true, email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }) user = User.new(admin: true, email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true)
user.save(validate: false) user.save(validate: false)
prompt.ok "You can login with the password: #{password}" prompt.ok "You can login with the password: #{password}"

View File

@ -195,16 +195,19 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
end end
end end
context 'approval-based registrations with valid invite' do context 'approval-based registrations with valid invite and required invite text' do
around do |example| around do |example|
registrations_mode = Setting.registrations_mode registrations_mode = Setting.registrations_mode
require_invite_text = Setting.require_invite_text
example.run example.run
Setting.require_invite_text = require_invite_text
Setting.registrations_mode = registrations_mode Setting.registrations_mode = registrations_mode
end end
subject do subject do
inviter = Fabricate(:user, confirmed_at: 2.days.ago) inviter = Fabricate(:user, confirmed_at: 2.days.ago)
Setting.registrations_mode = 'approved' Setting.registrations_mode = 'approved'
Setting.require_invite_text = true
request.headers["Accept-Language"] = accept_language request.headers["Accept-Language"] = accept_language
invite = Fabricate(:invite, user: inviter, max_uses: nil, expires_at: 1.hour.from_now) invite = Fabricate(:invite, user: inviter, max_uses: nil, expires_at: 1.hour.from_now)
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', 'invite_code': invite.code, agreement: 'true' } } post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', 'invite_code': invite.code, agreement: 'true' } }

View File

@ -26,6 +26,11 @@ RSpec.describe BatchedRemoveStatusService, type: :service do
subject.call([status1, status2]) subject.call([status1, status2])
end end
it 'removes statuses' do
expect { Status.find(status1.id) }.to raise_error ActiveRecord::RecordNotFound
expect { Status.find(status2.id) }.to raise_error ActiveRecord::RecordNotFound
end
it 'removes statuses from author\'s home feed' do it 'removes statuses from author\'s home feed' do
expect(HomeFeed.new(alice).get(10)).to_not include([status1.id, status2.id]) expect(HomeFeed.new(alice).get(10)).to_not include([status1.id, status2.id])
end end
@ -38,10 +43,6 @@ RSpec.describe BatchedRemoveStatusService, type: :service do
expect(Redis.current).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) expect(Redis.current).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once)
end end
it 'notifies streaming API of author' do
expect(Redis.current).to have_received(:publish).with("timeline:#{alice.id}", any_args).at_least(:once)
end
it 'notifies streaming API of public timeline' do it 'notifies streaming API of public timeline' do
expect(Redis.current).to have_received(:publish).with('timeline:public', any_args).at_least(:once) expect(Redis.current).to have_received(:publish).with('timeline:public', any_args).at_least(:once)
end end

View File

@ -7313,9 +7313,9 @@ node-modules-regexp@^1.0.0:
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
node-notifier@^8.0.0: node-notifier@^8.0.0:
version "8.0.0" version "8.0.1"
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1"
integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==
dependencies: dependencies:
growly "^1.3.0" growly "^1.3.0"
is-wsl "^2.2.0" is-wsl "^2.2.0"
@ -9561,9 +9561,11 @@ semver@^6.0.0, semver@^6.3.0:
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.2.1, semver@^7.3.2: semver@^7.2.1, semver@^7.3.2:
version "7.3.2" version "7.3.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
dependencies:
lru-cache "^6.0.0"
send@0.17.1: send@0.17.1:
version "0.17.1" version "0.17.1"
@ -10855,9 +10857,9 @@ uuid@^3.3.2, uuid@^3.4.0:
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.3.0, uuid@^8.3.1: uuid@^8.3.0, uuid@^8.3.1:
version "8.3.1" version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
version "2.2.0" version "2.2.0"