diff --git a/.nvmrc b/.nvmrc
index 12fd1fc277..fd655f8a35 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-24.13
+24.14
diff --git a/Gemfile b/Gemfile
index a294fb7206..4c47b0861c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -180,7 +180,7 @@ group :development do
# Enhanced error message pages for development
gem 'better_errors', '~> 2.9'
- gem 'binding_of_caller', '~> 1.0'
+ gem 'binding_of_caller'
# Preview mail in the browser
gem 'letter_opener', '~> 1.8'
diff --git a/Gemfile.lock b/Gemfile.lock
index 1d94c3ec05..7f9f82cb39 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -89,7 +89,7 @@ GEM
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
- addressable (2.8.8)
+ addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
aes_key_wrap (1.1.0)
android_key_attestation (0.3.0)
@@ -129,12 +129,12 @@ GEM
rouge (>= 1.0.0)
bigdecimal (3.3.1)
bindata (2.5.1)
- binding_of_caller (1.0.1)
+ binding_of_caller (2.0.0)
debug_inspector (>= 1.2.0)
blurhash (0.1.8)
bootsnap (1.23.0)
msgpack (~> 1.2)
- brakeman (8.0.2)
+ brakeman (8.0.4)
racc
browser (6.2.0)
builder (3.3.0)
@@ -953,7 +953,7 @@ DEPENDENCIES
aws-sdk-core
aws-sdk-s3 (~> 1.123)
better_errors (~> 2.9)
- binding_of_caller (~> 1.0)
+ binding_of_caller
blurhash (~> 0.1)
bootsnap
brakeman (~> 8.0)
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 4fcb4cc5e2..108a450c8a 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Fremhævede hashtags",
"account_edit.name_modal.add_title": "Tilføj visningsnavn",
"account_edit.name_modal.edit_title": "Rediger visningsnavn",
+ "account_edit.profile_tab.button_label": "Tilpas",
+ "account_edit.profile_tab.hint.description": "Disse indstillinger tilpasser hvad brugere ser på {server} i de officielle apps, men de gælder muligvis ikke for brugere på andre servere og tredjeparts apps.",
+ "account_edit.profile_tab.hint.title": "Visninger vil stadig variere",
+ "account_edit.profile_tab.show_featured.description": "‘Fremhævet‘ er en valgfri fane, hvor du kan fremvise andre konti.",
+ "account_edit.profile_tab.show_featured.title": "Vis fanebladet ‘Fremhævet‘",
+ "account_edit.profile_tab.show_media.description": "‘Medier’ er en valgfri fane, der viser dine indlæg, der indeholder billeder eller videoer.",
+ "account_edit.profile_tab.show_media.title": "Vis fanebladet ‘Medier‘",
+ "account_edit.profile_tab.show_media_replies.description": "Når aktiveret, viser fanen Medier både dine indlæg og svar på andres indlæg.",
+ "account_edit.profile_tab.show_media_replies.title": "Inkludér svar på fanen 'Medier'",
"account_edit.profile_tab.subtitle": "Tilpas fanerne på din profil og det, de viser.",
"account_edit.profile_tab.title": "Indstillinger for profil-fane",
"account_edit.save": "Gem",
@@ -272,6 +281,7 @@
"closed_registrations_modal.preamble": "Mastodon er decentraliseret, så uanset hvor du opretter din konto, vil du være i stand til at følge og interagere med hvem som helst på denne server. Du kan endda selv være vært for den!",
"closed_registrations_modal.title": "Oprettelse på Mastodon",
"collection.share_modal.share_link_label": "Invitationlink til deling",
+ "collection.share_modal.share_via_post": "Del på Mastodon",
"collection.share_modal.share_via_system": "Del med…",
"collection.share_modal.title": "Del samling",
"collection.share_modal.title_new": "Del din nye samling!",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index ce49025b5a..65418f851e 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -161,11 +161,20 @@
"account_edit.featured_hashtags.title": "Vorgestellte Hashtags",
"account_edit.name_modal.add_title": "Anzeigenamen hinzufügen",
"account_edit.name_modal.edit_title": "Anzeigenamen bearbeiten",
+ "account_edit.profile_tab.button_label": "Anpassen",
+ "account_edit.profile_tab.hint.description": "Diese Einstellungen legen fest, was andere in den offiziellen Apps auf {server} sehen können. Möglicherweise werden sie nicht von anderen Servern oder Apps von Dritten berücksichtigt.",
+ "account_edit.profile_tab.hint.title": "Darstellung kann abweichen",
+ "account_edit.profile_tab.show_featured.description": "„Vorgestellt“ ist ein optionaler Tab, der von dir ausgewählte Profile hervorhebt.",
+ "account_edit.profile_tab.show_featured.title": "„Vorgestellt“-Tab anzeigen",
+ "account_edit.profile_tab.show_media.description": "„Medien“ ist ein optionaler Tab, der deine Beiträge mit Bildern oder Videos anzeigt.",
+ "account_edit.profile_tab.show_media.title": "„Medien“-Tab anzeigen",
+ "account_edit.profile_tab.show_media_replies.description": "Durch das Aktivieren werden sowohl deine Beiträge als auch deine Antworten auf Beiträge anderer im „Medien“-Tab angezeigt.",
+ "account_edit.profile_tab.show_media_replies.title": "Antworten im „Medien“-Tab anzeigen",
"account_edit.profile_tab.subtitle": "Passe die Tabs deines Profils und deren Inhalte an.",
"account_edit.profile_tab.title": "Profil-Tab-Einstellungen",
"account_edit.save": "Speichern",
"account_edit_tags.column_title": "Vorgestellte Hashtags bearbeiten",
- "account_edit_tags.help_text": "Vorgestellte Hashtags können dabei helfen, dein Profil zu entdecken und besser mit dir zu interagieren. Sie erscheinen in der Aktivitätenübersicht deines Profils und dienen als Filter.",
+ "account_edit_tags.help_text": "Vorgestellte Hashtags können dabei helfen, dein Profil zu entdecken und besser mit dir zu interagieren. Sie dienen als Filter in der Aktivitätenübersicht deines Profils.",
"account_edit_tags.search_placeholder": "Gib einen Hashtag ein …",
"account_edit_tags.suggestions": "Vorschläge:",
"account_edit_tags.tag_status_count": "{count, plural, one {# Beitrag} other {# Beiträge}}",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 68de788149..a649feef70 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Αναδεδειγμένες ετικέτες",
"account_edit.name_modal.add_title": "Προσθήκη εμφανιζόμενου ονόματος",
"account_edit.name_modal.edit_title": "Επεξεργασία εμφανιζόμενου ονόματος",
+ "account_edit.profile_tab.button_label": "Προσαρμογή",
+ "account_edit.profile_tab.hint.description": "Αυτές οι ρυθμίσεις προσαρμόζουν τι βλέπουν οι χρήστες στο {server} στις επίσημες εφαρμογές, αλλά δεν μπορούν να εφαρμοστούν για χρήστες σε άλλους διακομιστές και εφαρμογές τρίτων.",
+ "account_edit.profile_tab.hint.title": "Οι εμφανίσεις εξακολουθούν να ποικίλλουν",
+ "account_edit.profile_tab.show_featured.description": "«Αναδεδειγμένα» είναι μια προαιρετική καρτέλα όπου μπορείτε να αναδείξετε άλλους λογαριασμούς.",
+ "account_edit.profile_tab.show_featured.title": "Εμφάνιση καρτέλας «Αναδεδειγμένα»",
+ "account_edit.profile_tab.show_media.description": "«Πολυμέσα» είναι μια προαιρετική καρτέλα που δείχνει τις αναρτήσεις σας που περιέχουν εικόνες ή βίντεο.",
+ "account_edit.profile_tab.show_media.title": "Εμφάνιση καρτέλας «Πολυμέσα»",
+ "account_edit.profile_tab.show_media_replies.description": "Όταν ενεργοποιηθεί, η καρτέλα Πολυμέσα εμφανίζει τόσο τις αναρτήσεις σας όσο και τις απαντήσεις σας σε αναρτήσεις άλλων ατόμων.",
+ "account_edit.profile_tab.show_media_replies.title": "Συμπερίληψη απαντήσεων στην καρτέλα «Πολυμέσα»",
"account_edit.profile_tab.subtitle": "Προσαρμόστε τις καρτέλες στο προφίλ σας και τι εμφανίζουν.",
"account_edit.profile_tab.title": "Ρυθμίσεις καρτέλας προφίλ",
"account_edit.save": "Αποθήκευση",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index cac4cf72e0..49e1177249 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Featured hashtags",
"account_edit.name_modal.add_title": "Add display name",
"account_edit.name_modal.edit_title": "Edit display name",
+ "account_edit.profile_tab.button_label": "Customise",
+ "account_edit.profile_tab.hint.description": "These settings customise what users see on {server} in the official apps, but they may not apply to users on other servers and 3rd party apps.",
+ "account_edit.profile_tab.hint.title": "Displays still vary",
+ "account_edit.profile_tab.show_featured.description": "‘Featured’ is an optional tab where you can showcase other accounts.",
+ "account_edit.profile_tab.show_featured.title": "Show ‘Featured’ tab",
+ "account_edit.profile_tab.show_media.description": "‘Media’ is an optional tab that shows your posts containing images or videos.",
+ "account_edit.profile_tab.show_media.title": "Show ‘Media’ tab",
+ "account_edit.profile_tab.show_media_replies.description": "When enabled, Media tab shows both your posts and replies to other people’s posts.",
+ "account_edit.profile_tab.show_media_replies.title": "Include replies on ‘Media’ tab",
"account_edit.profile_tab.subtitle": "Customise the tabs on your profile and what they display.",
"account_edit.profile_tab.title": "Profile tab settings",
"account_edit.save": "Save",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index 3e81941bc8..6ecc2c1c38 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Etiquetas destacadas",
"account_edit.name_modal.add_title": "Agregar nombre a mostrar",
"account_edit.name_modal.edit_title": "Editar nombre a mostrar",
+ "account_edit.profile_tab.button_label": "Personalizar",
+ "account_edit.profile_tab.hint.description": "Esta configuración personaliza lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se apliquen a los usuarios en otros servidores y aplicaciones de terceros.",
+ "account_edit.profile_tab.hint.title": "Las pantallas pueden variar",
+ "account_edit.profile_tab.show_featured.description": "«Destacados» es una pestaña opcional en donde podés mostrar otras cuentas.",
+ "account_edit.profile_tab.show_featured.title": "Mostrar pestaña «Destacados»",
+ "account_edit.profile_tab.show_media.description": "«Medios» es una pestaña opcional que muestra tus mensajes conteniendo imágenes, videos o audios.",
+ "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Medios»",
+ "account_edit.profile_tab.show_media_replies.description": "Cuando está habilitada, la pestaña «Medios» muestra tanto tus mensajes como tus respuestas a otras cuentas.",
+ "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Medios»",
"account_edit.profile_tab.subtitle": "Personalizá las pestañas en tu perfil y qué van a mostrar.",
"account_edit.profile_tab.title": "Configuración de pestaña de perfil",
"account_edit.save": "Guardar",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 51c9882261..a884b94a58 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Etiquetas destacadas",
"account_edit.name_modal.add_title": "Añadir nombre para mostrar",
"account_edit.name_modal.edit_title": "Editar nombre para mostrar",
+ "account_edit.profile_tab.button_label": "Personalizar",
+ "account_edit.profile_tab.hint.description": "Esta configuración personaliza lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se aplique a los usuarios de otros servidores y aplicaciones de terceros.",
+ "account_edit.profile_tab.hint.title": "Las pantallas todavía varían",
+ "account_edit.profile_tab.show_featured.description": "«Destacados» es una pestaña opcional en la que puedes mostrar otras cuentas.",
+ "account_edit.profile_tab.show_featured.title": "Mostrar la pestaña «Destacados»",
+ "account_edit.profile_tab.show_media.description": "«Multimedia» es una pestaña opcional que muestra tus publicaciones que contienen imágenes o videos.",
+ "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Multimedia»",
+ "account_edit.profile_tab.show_media_replies.description": "Cuando está habilitada, la pestaña Multimedia muestra tanto tus publicaciones como tus respuestas a las publicaciones de otras personas.",
+ "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Multimedia»",
"account_edit.profile_tab.subtitle": "Personaliza las pestañas de tu perfil y lo que muestran.",
"account_edit.profile_tab.title": "Configuración de la pestaña de perfil",
"account_edit.save": "Guardar",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 62abafc4bc..cafd141937 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Etiquetas destacadas",
"account_edit.name_modal.add_title": "Añadir nombre para mostrar",
"account_edit.name_modal.edit_title": "Editar nombre para mostrar",
+ "account_edit.profile_tab.button_label": "Personalizar",
+ "account_edit.profile_tab.hint.description": "Estos ajustes personalizan lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se apliquen a los usuarios en otros servidores y aplicaciones de terceros.",
+ "account_edit.profile_tab.hint.title": "La disposición puede variar",
+ "account_edit.profile_tab.show_featured.description": "«Destacado» es una pestaña opcional donde puedes mostrar otras cuentas.",
+ "account_edit.profile_tab.show_featured.title": "Mostrar pestaña «Destacado»",
+ "account_edit.profile_tab.show_media.description": "«Multimedia» es una pestaña opcional que muestra tus publicaciones que contienen imágenes o videos.",
+ "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Multimedia»",
+ "account_edit.profile_tab.show_media_replies.description": "Cuando está activado, la pestaña Multimedia muestra tanto tus publicaciones como tus respuestas a las publicaciones de otras personas.",
+ "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Multimedia»",
"account_edit.profile_tab.subtitle": "Personaliza las pestañas de tu perfil y lo que muestran.",
"account_edit.profile_tab.title": "Configuración de la pestaña de perfil",
"account_edit.save": "Guardar",
@@ -313,7 +322,7 @@
"collections.new_collection": "Nueva colección",
"collections.no_collections_yet": "Aún no hay colecciones.",
"collections.old_last_post_note": "Última publicación hace más de una semana",
- "collections.remove_account": "Borrar esta cuenta",
+ "collections.remove_account": "Quitar esta cuenta",
"collections.report_collection": "Informar de esta colección",
"collections.search_accounts_label": "Buscar cuentas para añadir…",
"collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index d9c7ee97a1..4b95f2ff94 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Esiteltävät aihetunnisteet",
"account_edit.name_modal.add_title": "Lisää näyttönimi",
"account_edit.name_modal.edit_title": "Muokkaa näyttönimeä",
+ "account_edit.profile_tab.button_label": "Mukauta",
+ "account_edit.profile_tab.hint.description": "Nämä asetukset mukauttavat sitä, mitä käyttäjät näkevät palvelimella {server} virallisissa sovelluksissa, mutta ne eivät välttämättä vaikuta muiden palvelinten tai kolmannen osapuolen sovellusten käyttäjiin.",
+ "account_edit.profile_tab.hint.title": "Näkymät vaihtelevat edelleen",
+ "account_edit.profile_tab.show_featured.description": "”Esittelyssä” on valinnainen välilehti, jossa voit esitellä muita tilejä.",
+ "account_edit.profile_tab.show_featured.title": "Näytä Esittelyssä-välilehti",
+ "account_edit.profile_tab.show_media.description": "”Media” on valinnainen välilehti, joka näyttää kuvia tai videoita sisältävät julkaisusi.",
+ "account_edit.profile_tab.show_media.title": "Näytä Media-välilehti",
+ "account_edit.profile_tab.show_media_replies.description": "Kun käytössä, Media-välilehti näyttää sekä julkaisusi että vastauksesi muiden julkaisuihin.",
+ "account_edit.profile_tab.show_media_replies.title": "Sisällytä vastaukset Media-välilehdelle",
"account_edit.profile_tab.subtitle": "Mukauta profiilisi välilehtiä ja sitä, mitä niissä näkyy.",
"account_edit.profile_tab.title": "Profiilin välilehtien asetukset",
"account_edit.save": "Tallenna",
@@ -271,6 +280,13 @@
"closed_registrations_modal.find_another_server": "Etsi toinen palvelin",
"closed_registrations_modal.preamble": "Mastodon on hajautettu, joten riippumatta siitä, missä luot tilisi, voit seurata ja olla vuorovaikutuksessa kenen tahansa kanssa tällä palvelimella. Voit jopa isännöidä palvelinta!",
"closed_registrations_modal.title": "Rekisteröityminen Mastodoniin",
+ "collection.share_modal.share_link_label": "Kutsun jakolinkki",
+ "collection.share_modal.share_via_post": "Jaa Mastodonissa",
+ "collection.share_modal.share_via_system": "Jaa kohteeseen…",
+ "collection.share_modal.title": "Jaa kokoelma",
+ "collection.share_modal.title_new": "Jaa uusi kokoelmasi!",
+ "collection.share_template_other": "Katso tämä siisti kokoelma: {link}",
+ "collection.share_template_own": "Katso uusi kokoelmani: {link}",
"collections.account_count": "{count, plural, one {# tili} other {# tiliä}}",
"collections.accounts.empty_description": "Lisää enintään {count} seuraamaasi tiliä",
"collections.accounts.empty_title": "Tämä kokoelma on tyhjä",
@@ -448,6 +464,7 @@
"conversation.open": "Näytä keskustelu",
"conversation.with": "{names} kanssa",
"copy_icon_button.copied": "Kopioitu leikepöydälle",
+ "copy_icon_button.copy_this_text": "Kopioi linkki leikepöydälle",
"copypaste.copied": "Kopioitu",
"copypaste.copy_to_clipboard": "Kopioi leikepöydälle",
"directory.federated": "Tunnetusta fediversumista",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 417947a25b..10f727109e 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -42,7 +42,7 @@
"account.familiar_followers_many": "{name1}, {name2} og {othersCount, plural, one {ein annar/onnur tú kennir} other {# onnur tú kennir}} fylgja",
"account.familiar_followers_one": "{name1} fylgir",
"account.familiar_followers_two": "{name1} og {name2} fylgja",
- "account.featured": "Tikin fram",
+ "account.featured": "Sermerkt",
"account.featured.accounts": "Vangar",
"account.featured.collections": "Søvn",
"account.featured.hashtags": "Frámerki",
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Sermerkt frámerki",
"account_edit.name_modal.add_title": "Legg víst navn afturat",
"account_edit.name_modal.edit_title": "Rætta víst navn",
+ "account_edit.profile_tab.button_label": "Tillaga",
+ "account_edit.profile_tab.hint.description": "Hesi stillingarnar tillaga tað, sum brúkarar síggja á {server} í almennu appunum, men tær eru kanska ikki galdandi fyri brúkarar á øðrum servarum og appum hjá triðjapørtum.",
+ "account_edit.profile_tab.hint.title": "Vísingar eru framvegis ymiskar",
+ "account_edit.profile_tab.show_featured.description": "'Sermerkt' er eitt valfrítt spjaldur, har tú kanst sýna aðrar kontur fram.",
+ "account_edit.profile_tab.show_featured.title": "Vís 'Sermerkt\" spjaldur",
+ "account_edit.profile_tab.show_media.description": "'Miðlar' er eitt valfrítt spjaldur, sum vísur tínar postar, sum innihalda myndir ella sjónfílur.",
+ "account_edit.profile_tab.show_media.title": "Vís 'Miðlar' spjaldur",
+ "account_edit.profile_tab.show_media_replies.description": "Tá tað er virkið, vísir Miðlar spjaldrið bæði tínar postar og svar til postar hjá øðrum.",
+ "account_edit.profile_tab.show_media_replies.title": "Írokna svar á 'Miðlar' spjaldrinum",
"account_edit.profile_tab.subtitle": "Tillaga spjøldrini á vanganum hjá tær og tað, tey vísa.",
"account_edit.profile_tab.title": "Stillingar fyri spjøldur á vanga",
"account_edit.save": "Goym",
diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json
index 54036c953f..ac99eb7ba8 100644
--- a/app/javascript/mastodon/locales/fr-CA.json
+++ b/app/javascript/mastodon/locales/fr-CA.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Hashtags mis en avant",
"account_edit.name_modal.add_title": "Ajouter un nom public",
"account_edit.name_modal.edit_title": "Modifier le nom public",
+ "account_edit.profile_tab.button_label": "Personnaliser",
+ "account_edit.profile_tab.hint.description": "Ces paramètres personnalisent ce que les personnes voient sur {server} dans les applications officielles, mais ils peuvent ne pas s'appliquer aux personnes sur d'autres serveurs ou utilisant une application tiers.",
+ "account_edit.profile_tab.hint.title": "L'affichage peut varier",
+ "account_edit.profile_tab.show_featured.description": "« En vedette » est un onglet facultatif où vous pouvez mettre en avant d'autres comptes.",
+ "account_edit.profile_tab.show_featured.title": "Afficher l'onglet « En vedette »",
+ "account_edit.profile_tab.show_media.description": "« Média » est un onglet facultatif qui affiche vos messages contenant des images ou des vidéos.",
+ "account_edit.profile_tab.show_media.title": "Afficher l'onglet « Média »",
+ "account_edit.profile_tab.show_media_replies.description": "En activant cette option l'onglet « Média » affiche à la fois vos messages et vos réponses aux messages d'autres personnes.",
+ "account_edit.profile_tab.show_media_replies.title": "Inclure les réponses dans l'onglet « Média »",
"account_edit.profile_tab.subtitle": "Personnaliser les onglets de votre profil et leur contenu.",
"account_edit.profile_tab.title": "Paramètres de l'onglet du profil",
"account_edit.save": "Enregistrer",
@@ -271,6 +280,13 @@
"closed_registrations_modal.find_another_server": "Trouver un autre serveur",
"closed_registrations_modal.preamble": "Mastodon est décentralisé, donc peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger vous-même!",
"closed_registrations_modal.title": "S'inscrire sur Mastodon",
+ "collection.share_modal.share_link_label": "Lien à partager",
+ "collection.share_modal.share_via_post": "Publier sur Mastodon",
+ "collection.share_modal.share_via_system": "Partager avec…",
+ "collection.share_modal.title": "Partager la collection",
+ "collection.share_modal.title_new": "Partager votre nouvelle collection !",
+ "collection.share_template_other": "Découvrez cette collection incroyable : {link}",
+ "collection.share_template_own": "Découvrez ma nouvelle collection : {link}",
"collections.account_count": "{count, plural, one {# compte} other {# comptes}}",
"collections.accounts.empty_description": "Ajouter jusqu'à {count} comptes que vous suivez",
"collections.accounts.empty_title": "Cette collection est vide",
@@ -448,6 +464,7 @@
"conversation.open": "Afficher cette conversation",
"conversation.with": "Avec {names}",
"copy_icon_button.copied": "Copié dans le presse-papier",
+ "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier",
"copypaste.copied": "Copié",
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
"directory.federated": "D'un fediverse connu",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 18daca7893..2c6f4be00a 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Hashtags mis en avant",
"account_edit.name_modal.add_title": "Ajouter un nom public",
"account_edit.name_modal.edit_title": "Modifier le nom public",
+ "account_edit.profile_tab.button_label": "Personnaliser",
+ "account_edit.profile_tab.hint.description": "Ces paramètres personnalisent ce que les personnes voient sur {server} dans les applications officielles, mais ils peuvent ne pas s'appliquer aux personnes sur d'autres serveurs ou utilisant une application tiers.",
+ "account_edit.profile_tab.hint.title": "L'affichage peut varier",
+ "account_edit.profile_tab.show_featured.description": "« En vedette » est un onglet facultatif où vous pouvez mettre en avant d'autres comptes.",
+ "account_edit.profile_tab.show_featured.title": "Afficher l'onglet « En vedette »",
+ "account_edit.profile_tab.show_media.description": "« Média » est un onglet facultatif qui affiche vos messages contenant des images ou des vidéos.",
+ "account_edit.profile_tab.show_media.title": "Afficher l'onglet « Média »",
+ "account_edit.profile_tab.show_media_replies.description": "En activant cette option l'onglet « Média » affiche à la fois vos messages et vos réponses aux messages d'autres personnes.",
+ "account_edit.profile_tab.show_media_replies.title": "Inclure les réponses dans l'onglet « Média »",
"account_edit.profile_tab.subtitle": "Personnaliser les onglets de votre profil et leur contenu.",
"account_edit.profile_tab.title": "Paramètres de l'onglet du profil",
"account_edit.save": "Enregistrer",
@@ -271,6 +280,13 @@
"closed_registrations_modal.find_another_server": "Trouver un autre serveur",
"closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
"closed_registrations_modal.title": "Inscription sur Mastodon",
+ "collection.share_modal.share_link_label": "Lien à partager",
+ "collection.share_modal.share_via_post": "Publier sur Mastodon",
+ "collection.share_modal.share_via_system": "Partager avec…",
+ "collection.share_modal.title": "Partager la collection",
+ "collection.share_modal.title_new": "Partager votre nouvelle collection !",
+ "collection.share_template_other": "Découvrez cette collection incroyable : {link}",
+ "collection.share_template_own": "Découvrez ma nouvelle collection : {link}",
"collections.account_count": "{count, plural, one {# compte} other {# comptes}}",
"collections.accounts.empty_description": "Ajouter jusqu'à {count} comptes que vous suivez",
"collections.accounts.empty_title": "Cette collection est vide",
@@ -448,6 +464,7 @@
"conversation.open": "Afficher la conversation",
"conversation.with": "Avec {names}",
"copy_icon_button.copied": "Copié dans le presse-papier",
+ "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier",
"copypaste.copied": "Copié",
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
"directory.federated": "Du fédivers connu",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 5ae8d75fce..776df2db7b 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Haischlibeanna Réadmhaoine",
"account_edit.name_modal.add_title": "Cuir ainm taispeána leis",
"account_edit.name_modal.edit_title": "Cuir ainm taispeána in eagar",
+ "account_edit.profile_tab.button_label": "Saincheap",
+ "account_edit.profile_tab.hint.description": "Saincheapann na socruithe seo a bhfeiceann úsáideoirí ar {server} sna haipeanna oifigiúla, ach ní fhéadfaidh siad a bheith infheidhme maidir le húsáideoirí ar fhreastalaithe eile agus ar aipeanna tríú páirtí.",
+ "account_edit.profile_tab.hint.title": "Bíonn taispeántais fós éagsúil",
+ "account_edit.profile_tab.show_featured.description": "Is cluaisín roghnach é ‘Molta’ inar féidir leat cuntais eile a thaispeáint.",
+ "account_edit.profile_tab.show_featured.title": "Taispeáin an cluaisín 'Molta'",
+ "account_edit.profile_tab.show_media.description": "Is cluaisín roghnach é ‘Meáin’ a thaispeánann do phoist ina bhfuil íomhánna nó físeáin.",
+ "account_edit.profile_tab.show_media.title": "Taispeáin an cluaisín ‘Meáin’",
+ "account_edit.profile_tab.show_media_replies.description": "Nuair a bhíonn sé cumasaithe, taispeánann an cluaisín Meáin do phoist agus freagraí ar phoist daoine eile araon.",
+ "account_edit.profile_tab.show_media_replies.title": "Cuir freagraí san áireamh ar an táb ‘Meáin’",
"account_edit.profile_tab.subtitle": "Saincheap na cluaisíní ar do phróifíl agus a bhfuil á thaispeáint iontu.",
"account_edit.profile_tab.title": "Socruithe an chluaisín próifíle",
"account_edit.save": "Sábháil",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 1a49f6ba36..4301834a08 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -161,6 +161,14 @@
"account_edit.featured_hashtags.title": "Cancelos destacados",
"account_edit.name_modal.add_title": "Engadir nome público",
"account_edit.name_modal.edit_title": "Editar o nome público",
+ "account_edit.profile_tab.button_label": "Personalizar",
+ "account_edit.profile_tab.hint.description": "Estes axustes personalizan o que ven as usuarias de {server} nas apps oficiais, pero non se aplica ás usuarias de outros servidores nin apps alleas.",
+ "account_edit.profile_tab.show_featured.description": "'Destacado' é unha pestana optativa na que podes mostrar outras contas.",
+ "account_edit.profile_tab.show_featured.title": "Mostrar pestana 'Destacado'",
+ "account_edit.profile_tab.show_media.description": "'Multimedia' é unha pestana optativa na que aparecen as túas publicacións con fotos e vídeos.",
+ "account_edit.profile_tab.show_media.title": "Mostrar pestana 'Multimedia'",
+ "account_edit.profile_tab.show_media_replies.description": "Ao activala, a pestana Multimedia mostra tanto as túas publicacións como as respostas a outras persoas.",
+ "account_edit.profile_tab.show_media_replies.title": "Incluír respostas na pestana 'Multimedia'",
"account_edit.profile_tab.subtitle": "Personaliza as pestanas e o seu contido no teu perfil.",
"account_edit.profile_tab.title": "Perfil e axustes das pestanas",
"account_edit.save": "Gardar",
@@ -271,6 +279,13 @@
"closed_registrations_modal.find_another_server": "Atopa outro servidor",
"closed_registrations_modal.preamble": "Mastodon é descentralizado, así que non importa onde crees a conta, poderás seguir e interactuar con calquera conta deste servidor. Incluso podes ter o teu servidor!",
"closed_registrations_modal.title": "Crear conta en Mastodon",
+ "collection.share_modal.share_link_label": "Ligazón para compartir",
+ "collection.share_modal.share_via_post": "Publicar en Mastodon",
+ "collection.share_modal.share_via_system": "Compartir con…",
+ "collection.share_modal.title": "Compartir colección",
+ "collection.share_modal.title_new": "Comparte a túa nova colección!",
+ "collection.share_template_other": "Mira que colección máis boa: {link}",
+ "collection.share_template_own": "Mira a miña nova colección: {link}",
"collections.account_count": "{count, plural, one {# conta} other {# contas}}",
"collections.accounts.empty_description": "Engade ata {count} contas que segues",
"collections.accounts.empty_title": "A colección está baleira",
@@ -448,6 +463,7 @@
"conversation.open": "Ver conversa",
"conversation.with": "Con {names}",
"copy_icon_button.copied": "Copiada ao portapapeis",
+ "copy_icon_button.copy_this_text": "Copiar a ligazón ao portapapeis",
"copypaste.copied": "Copiado",
"copypaste.copy_to_clipboard": "Copiar ao portapapeis",
"directory.federated": "Do fediverso coñecido",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index abe3687f89..7bea5cac0f 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "תגיות נבחרות",
"account_edit.name_modal.add_title": "הוספת שם תצוגה",
"account_edit.name_modal.edit_title": "עריכת שם תצוגה",
+ "account_edit.profile_tab.button_label": "התאמה אישית",
+ "account_edit.profile_tab.hint.description": "הגדרות אלו משנות מה משתמשים יראו על {server} ביישומונים הרשמיים, אבל הן לא בהכרח רלוונטיות למשתמשים על שרתים אחרים ועל יישומונים צד ג'.",
+ "account_edit.profile_tab.hint.title": "התצוגה עשויה להיות שונה",
+ "account_edit.profile_tab.show_featured.description": "\"נבחרים\" הוא טאב לבחירה שבו תוכלו להציג חשבונות אחרים.",
+ "account_edit.profile_tab.show_featured.title": "הצגת טאב \"נבחרים\"",
+ "account_edit.profile_tab.show_media.description": "\"מדיה\" הוא טאב לבחירה שבוא יוצגו הודעות שלך שמכילות תמונות או וידאו.",
+ "account_edit.profile_tab.show_media.title": "הצגת טאב \"מדיה\"",
+ "account_edit.profile_tab.show_media_replies.description": "כשמאופשר, טאב המדיה מציג גם הודעות מקוריות וגם תשובות להודעות של אחרים.",
+ "account_edit.profile_tab.show_media_replies.title": "לכלול תגובות בטאב המדיה",
"account_edit.profile_tab.subtitle": "התאימו את הטאבים בפרופיל שלכם ומה שהם יציגו.",
"account_edit.profile_tab.title": "הגדרות טאבים לפרופיל",
"account_edit.save": "שמירה",
@@ -271,6 +280,13 @@
"closed_registrations_modal.find_another_server": "חיפוש שרת אחר",
"closed_registrations_modal.preamble": "מסטודון הוא רשת מבוזרת, כך שלא משנה היכן החשבון שלך, קיימת האפשרות לעקוב ולתקשר עם משתמשים בשרת הזה. אפשר אפילו להריץ שרת בעצמך!",
"closed_registrations_modal.title": "להרשם למסטודון",
+ "collection.share_modal.share_link_label": "קישור להזמנה לשיתוף",
+ "collection.share_modal.share_via_post": "לפרסם במסטודון",
+ "collection.share_modal.share_via_system": "לשתף אל…",
+ "collection.share_modal.title": "שיתוף אוסף",
+ "collection.share_modal.title_new": "שתפו את האוסף החדש שלכם!",
+ "collection.share_template_other": "הציצו על האוסף המעניין הזה: {link}",
+ "collection.share_template_own": "הציצו על האוסף החדש שלי: {link}",
"collections.account_count": "{count, plural, one {חשבון אחד} other {# חשבונות}}",
"collections.accounts.empty_description": "להוסיף עד ל־{count} חשבונות שאתם עוקבים אחריהם",
"collections.accounts.empty_title": "האוסף הזה ריק",
@@ -448,6 +464,7 @@
"conversation.open": "צפו בשיחה",
"conversation.with": "עם {names}",
"copy_icon_button.copied": "הועתק ללוח",
+ "copy_icon_button.copy_this_text": "העתקת הקישור",
"copypaste.copied": "הועתק",
"copypaste.copy_to_clipboard": "העתקה ללוח הגזירים",
"directory.federated": "מהפדרציה הידועה",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index ee31fcac5d..ced1cb70f8 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -78,7 +78,7 @@
"account.languages": "Breyta tungumálum í áskrift",
"account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}",
"account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.",
- "account.media": "Myndskrár",
+ "account.media": "Myndefni",
"account.mention": "Minnast á @{name}",
"account.menu.add_to_list": "Bæta á lista…",
"account.menu.block": "Útiloka notandaaðgang",
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Myllumerki með aukið vægi",
"account_edit.name_modal.add_title": "Bættu við birtingarnafni",
"account_edit.name_modal.edit_title": "Breyta birtingarnafni",
+ "account_edit.profile_tab.button_label": "Sérsníða",
+ "account_edit.profile_tab.hint.description": "Þessar stillingar sérsníða hvað notendur sjá á {server} í opinberu forritunum, en ekki er víst hvernig þetta virkar fyrir notendur á öðrum netþjónum og utanaðkomandi forritum.",
+ "account_edit.profile_tab.hint.title": "Birting er ennþá breytileg",
+ "account_edit.profile_tab.show_featured.description": "'Með aukið vægi' er valkvæður flipi þar sem þú getur kynnt aðra notendaaðganga.",
+ "account_edit.profile_tab.show_featured.title": "Birta 'Með aukið vægi' flipa",
+ "account_edit.profile_tab.show_media.description": "‘Myndefni’ er valkvæður flipi þar sem birtast þær færslur þínar sem innihalda myndir eða myndskeið.",
+ "account_edit.profile_tab.show_media.title": "Birta 'Myndefni' flipa",
+ "account_edit.profile_tab.show_media_replies.description": "Þegar þetta er virkt, sýnir myndefnisflipinn bæði færslurnar þínar og svör þín við færslum annarra.",
+ "account_edit.profile_tab.show_media_replies.title": "Hafa með svör á flipanum ‘Myndefni’",
"account_edit.profile_tab.subtitle": "Sérsníddu flipana á notandasniðinu þínu og hvað þeir birta.",
"account_edit.profile_tab.title": "Stillingar notandasniðsflipa",
"account_edit.save": "Vista",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 9746153961..226314eba1 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -42,7 +42,7 @@
"account.familiar_followers_many": "Seguito da {name1}, {name2}, e {othersCount, plural, one {un altro che conosci} other {altri # che conosci}}",
"account.familiar_followers_one": "Seguito da {name1}",
"account.familiar_followers_two": "Seguito da {name1} e {name2}",
- "account.featured": "In primo piano",
+ "account.featured": "In evidenza",
"account.featured.accounts": "Profili",
"account.featured.collections": "Collezioni",
"account.featured.hashtags": "Hashtag",
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Hashtag in evidenza",
"account_edit.name_modal.add_title": "Aggiungi il nome mostrato",
"account_edit.name_modal.edit_title": "Modifica il nome mostrato",
+ "account_edit.profile_tab.button_label": "Personalizza",
+ "account_edit.profile_tab.hint.description": "Queste impostazioni personalizzano ciò che gli utenti vedono su {server} nelle app ufficiali, ma potrebbero non applicarsi agli utenti su altri server e app di terze parti.",
+ "account_edit.profile_tab.hint.title": "La visualizzazione può variare",
+ "account_edit.profile_tab.show_featured.description": "\"In evidenza\" è una scheda opzionale in cui puoi mostrare altri account.",
+ "account_edit.profile_tab.show_featured.title": "Mostra la scheda \"In evidenza\"",
+ "account_edit.profile_tab.show_media.description": "\"Media\" è una scheda opzionale che mostra i tuoi post contenenti immagini o video.",
+ "account_edit.profile_tab.show_media.title": "Mostra la scheda \"Media\"",
+ "account_edit.profile_tab.show_media_replies.description": "Quando abilitata, la scheda Media mostra sia i tuoi post che le risposte ai post di altre persone.",
+ "account_edit.profile_tab.show_media_replies.title": "Includi le risposte nella scheda \"Media\"",
"account_edit.profile_tab.subtitle": "Personalizza le schede del tuo profilo e ciò che mostrano.",
"account_edit.profile_tab.title": "Impostazioni della scheda del profilo",
"account_edit.save": "Salva",
@@ -509,7 +518,7 @@
"emoji_button.travel": "Viaggi & Luoghi",
"empty_column.account_featured.me": "Non hai ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?",
"empty_column.account_featured.other": "{acct} non ha ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?",
- "empty_column.account_featured_other.unknown": "Questo account non ha ancora pubblicato nulla.",
+ "empty_column.account_featured_other.unknown": "Questo account non ha ancora messo nulla in evidenza.",
"empty_column.account_hides_collections": "Questo utente ha scelto di non rendere disponibili queste informazioni",
"empty_column.account_suspended": "Profilo sospeso",
"empty_column.account_timeline": "Nessun post qui!",
diff --git a/app/javascript/mastodon/locales/nan-TW.json b/app/javascript/mastodon/locales/nan-TW.json
index 60639f9756..634ea4e248 100644
--- a/app/javascript/mastodon/locales/nan-TW.json
+++ b/app/javascript/mastodon/locales/nan-TW.json
@@ -44,9 +44,11 @@
"account.familiar_followers_two": "Hōo {name1} kap {name2} 跟tuè",
"account.featured": "精選ê",
"account.featured.accounts": "個人資料",
+ "account.featured.collections": "收藏",
"account.featured.hashtags": "Hashtag",
"account.featured_tags.last_status_at": "頂kái tī {date} Po文",
"account.featured_tags.last_status_never": "無PO文",
+ "account.field_overflow": "展示規篇內容",
"account.filters.all": "逐ē活動",
"account.filters.boosts_toggle": "顯示轉PO",
"account.filters.posts_boosts": "PO文kap轉PO",
@@ -144,6 +146,9 @@
"account_edit.bio.title": "個人紹介",
"account_edit.bio_modal.add_title": "加添個人紹介",
"account_edit.bio_modal.edit_title": "編個人紹介",
+ "account_edit.button.add": "加 {item}",
+ "account_edit.button.delete": "Thâi {item}",
+ "account_edit.button.edit": "編 {item}",
"account_edit.char_counter": "{currentLength}/{maxLength} ê字",
"account_edit.column_button": "做好ah",
"account_edit.column_title": "編輯個人資料",
@@ -151,13 +156,28 @@
"account_edit.custom_fields.title": "自訂欄",
"account_edit.display_name.placeholder": "Lí ê顯示ê名是lí ê名佇lí ê個人資料kap時間線出現ê方式。",
"account_edit.display_name.title": "顯示ê名",
+ "account_edit.featured_hashtags.item": "hashtag",
"account_edit.featured_hashtags.placeholder": "幫tsān別lâng認捌,kap緊緊接近使用lí收藏ê主題。",
"account_edit.featured_hashtags.title": "特色ê hashtag",
"account_edit.name_modal.add_title": "加添顯示ê名",
"account_edit.name_modal.edit_title": "編顯示ê名",
+ "account_edit.profile_tab.button_label": "自訂",
+ "account_edit.profile_tab.hint.description": "Tsiah ê設定自訂用官方應用程式佇 {server} 所看著ê內容,毋kú in可能無用佇別ê服侍器或者用第三方應用程式ê用者。",
+ "account_edit.profile_tab.hint.title": "展示結果uân-á可能無kâng款",
+ "account_edit.profile_tab.show_featured.description": "「精選ê」是通揀ê分頁,其中lí ē當展示別ê口座。",
+ "account_edit.profile_tab.show_featured.title": "顯示「精選ê」分頁",
+ "account_edit.profile_tab.show_media.description": "「媒體」是通揀ê分頁,展示lí包含影像kap影片ê PO文。",
+ "account_edit.profile_tab.show_media.title": "展示「媒體」分頁",
+ "account_edit.profile_tab.show_media_replies.description": "若是啟用,媒體分頁展示lí ê PO文kap對別lâng ê PO文ê回應。",
+ "account_edit.profile_tab.show_media_replies.title": "佇媒體分頁內包含回應",
"account_edit.profile_tab.subtitle": "自訂lí ê個人資料ê分頁kap顯示ê內容。",
"account_edit.profile_tab.title": "個人資料分頁設定",
"account_edit.save": "儲存",
+ "account_edit_tags.column_title": "編收藏ê hashtag",
+ "account_edit_tags.help_text": "收藏ê hashtag幫tsān用者發現kap hām lí ê個人資料互動。In會成做過濾器,佇lí ê個人資料頁ê活動內底出現。",
+ "account_edit_tags.search_placeholder": "編輯hashtag……",
+ "account_edit_tags.suggestions": "建議:",
+ "account_edit_tags.tag_status_count": "{count, plural, other {# 篇PO文}}",
"account_note.placeholder": "Tshi̍h tse加註kha",
"admin.dashboard.daily_retention": "註冊以後ê用者維持率(用kang計算)",
"admin.dashboard.monthly_retention": "註冊以後ê用者維持率",
@@ -260,6 +280,13 @@
"closed_registrations_modal.find_another_server": "Tshuē別ê服侍器",
"closed_registrations_modal.preamble": "因為Mastodon非中心化,所以bô論tī tá tsi̍t ê服侍器建立口座,lí lóng ē當跟tuè tsi̍t ê服侍器ê逐ê lâng,kap hām in交流。Lí iā ē當ka-tī起tsi̍t ê站!",
"closed_registrations_modal.title": "註冊 Mastodon ê口座",
+ "collection.share_modal.share_link_label": "邀請分享ê連結",
+ "collection.share_modal.share_via_post": "PO佇Mastodon頂",
+ "collection.share_modal.share_via_system": "分享kàu……",
+ "collection.share_modal.title": "分享收藏",
+ "collection.share_modal.title_new": "分享lí ê新收藏!",
+ "collection.share_template_other": "緊看覓chit ê時行ê收藏:{link}",
+ "collection.share_template_own": "緊看覓我ê收藏:{link}",
"collections.account_count": "{count, plural, other {# ê口座}}",
"collections.accounts.empty_description": "加lí跟tuè ê口座,上tsē {count} ê",
"collections.accounts.empty_title": "收藏內底無半項",
@@ -296,11 +323,13 @@
"collections.no_collections_yet": "Iáu無收藏。",
"collections.old_last_post_note": "頂改佇超過一禮拜進前PO文",
"collections.remove_account": "Suá掉tsit ê口座",
+ "collections.report_collection": "檢舉tsit ê收藏",
"collections.search_accounts_label": "Tshuē口座來加添……",
"collections.search_accounts_max_reached": "Lí已經加kàu口座數ê盡磅ah。",
"collections.sensitive": "敏感ê",
"collections.topic_hint": "加 hashtag,幫tsān別lâng了解tsit ê收藏ê主題。",
"collections.view_collection": "看收藏",
+ "collections.view_other_collections_by_user": "看tsit ê用者ê別ê收藏",
"collections.visibility_public": "公共ê",
"collections.visibility_public_hint": "佇tshiau-tshuē結果kap別位有推薦ê所在通發現。",
"collections.visibility_title": "通看ê程度",
@@ -435,6 +464,7 @@
"conversation.open": "顯示會話",
"conversation.with": "Kap {names}",
"copy_icon_button.copied": "有khóo-pih kàu tsián貼pang",
+ "copy_icon_button.copy_this_text": "Khóo-pih連結kàu tsián貼pang",
"copypaste.copied": "有khóo-pih",
"copypaste.copy_to_clipboard": "Khóo-pih kàu tsián貼pang",
"directory.federated": "Uì知影ê Fediverse",
@@ -964,6 +994,7 @@
"report.category.title_account": "個人資料",
"report.category.title_status": "PO文",
"report.close": "完成",
+ "report.collection_comment": "Lí是án-tsuánn beh檢舉tsit ê收藏?",
"report.comment.title": "Lí敢有別ê想beh hōo guán知ê?",
"report.forward": "轉送kàu {target}",
"report.forward_hint": "Tsit ê口座是別ê服侍器ê。Kám iā beh送bô落名ê檢舉ê khóo-pih?",
@@ -985,6 +1016,8 @@
"report.rules.title": "違反siánn-mih規則?",
"report.statuses.subtitle": "請揀所有符合ê選項",
"report.statuses.title": "Kám有任何PO文證明tsit ê檢舉?",
+ "report.submission_error": "檢舉bē當送",
+ "report.submission_error_details": "請檢查lí ê網路連線,等leh koh試。",
"report.submit": "送出",
"report.target": "檢舉 {target}",
"report.thanks.take_action": "下kha是你控制所beh 佇Mastodon看ê內容ê選項:",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 4fd73e3cea..e3a698cd20 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Hashtag-ë të zgjedhur",
"account_edit.name_modal.add_title": "Shtoni emër në ekran",
"account_edit.name_modal.edit_title": "Përpunoni emër në ekran",
+ "account_edit.profile_tab.button_label": "Përshtateni",
+ "account_edit.profile_tab.hint.description": "Këto rregullime përshtasin ç’shohin përdoruesit në {server} te aplikacionet zyrtare, por mund të mos kenë vend për përdorues në shërbyes të tjerë dhe aplikacione nga palë të treta.",
+ "account_edit.profile_tab.hint.title": "Ç’duket, ende varion",
+ "account_edit.profile_tab.show_featured.description": "“Të zgjedhura” është një skedë opsionale ku mund të shpalosni llogari të tjera.",
+ "account_edit.profile_tab.show_featured.title": "Shfaq skedë “Të zgjedhura”",
+ "account_edit.profile_tab.show_media.description": "“Media” është një skedë opsionale që shfaq postime tuajat që përmbajnë figura ose video.",
+ "account_edit.profile_tab.show_media.title": "Shfaq skedë “Media”",
+ "account_edit.profile_tab.show_media_replies.description": "Kur aktivizohet, skeda Media shfaq si postimet tuaja, ashtu edhe përgjigje te postime nga persona të tjerë.",
+ "account_edit.profile_tab.show_media_replies.title": "Përfshi te skeda “Media” përgjigje",
"account_edit.profile_tab.subtitle": "Përshtatni skedat në profilin tuaj dhe ato çka shfaqet në to.",
"account_edit.profile_tab.title": "Rregullime skede profili",
"account_edit.save": "Ruaje",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 17f254a1e0..78b511735f 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -14,9 +14,16 @@
"about.powered_by": "En decentraliserad plattform for sociala medier, drivet av {mastodon}",
"about.rules": "Serverregler",
"account.account_note_header": "Personlig anteckning",
+ "account.activity": "Aktivitet",
+ "account.add_note": "Lägg till en personlig anteckning",
"account.add_or_remove_from_list": "Lägg till i eller ta bort från listor",
+ "account.badges.admin": "Administratör",
+ "account.badges.blocked": "Blockerad",
"account.badges.bot": "Bot",
+ "account.badges.domain_blocked": "Blockerad domän",
"account.badges.group": "Grupp",
+ "account.badges.muted": "Tystad",
+ "account.badges.muted_until": "Tystade till {until}",
"account.block": "Blockera @{name}",
"account.block_domain": "Blockera domänen {domain}",
"account.block_short": "Blockera",
@@ -27,6 +34,7 @@
"account.direct": "Nämn @{name} privat",
"account.disable_notifications": "Sluta meddela mig när @{name} skriver ett inlägg",
"account.domain_blocking": "Blockerad domän",
+ "account.edit_note": "Redigera personlig anteckning",
"account.edit_profile": "Redigera profil",
"account.edit_profile_short": "Redigera",
"account.enable_notifications": "Notifiera mig när @{name} gör inlägg",
@@ -36,6 +44,7 @@
"account.familiar_followers_two": "Följs av {name1} och {name2}",
"account.featured": "Utvalda",
"account.featured.accounts": "Profiler",
+ "account.featured.collections": "Samlingar",
"account.featured.hashtags": "Fyrkantstaggar",
"account.featured_tags.last_status_at": "Senaste inlägg den {date}",
"account.featured_tags.last_status_never": "Inga inlägg",
@@ -93,6 +102,7 @@
"account.unmute_short": "Avtysta",
"account_edit.column_button": "Klar",
"account_edit.column_title": "Redigera profil",
+ "account_edit.profile_tab.button_label": "Anpassa",
"account_note.placeholder": "Klicka för att lägga till anteckning",
"admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering",
"admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 270f130cad..2ad5a23d50 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Öne çıkan etiketler",
"account_edit.name_modal.add_title": "Görünen ad ekle",
"account_edit.name_modal.edit_title": "Görünen adı düzenle",
+ "account_edit.profile_tab.button_label": "Özelleştir",
+ "account_edit.profile_tab.hint.description": "Bu ayarlar kullanıcıların resmi uygulamalarda {server} üzerinde gördüklerini özelleştirir, ancak diğer sunuculardaki ve üçüncü taraf uygulamalardaki kullanıcılar için geçerli olmayabilir.",
+ "account_edit.profile_tab.hint.title": "Görünümler yine de farklı olabilir",
+ "account_edit.profile_tab.show_featured.description": "\"Öne Çıkanlar\" diğer hesapları sergileyebileceğiniz isteğe bağlı bir sekmedir.",
+ "account_edit.profile_tab.show_featured.title": "\"Öne Çıkanlar\" sekmesini göster",
+ "account_edit.profile_tab.show_media.description": "\"Medya\" resim veya video içeren gönderilerinizi gösteren isteğe bağlı bir sekmedir.",
+ "account_edit.profile_tab.show_media.title": "\"Medya\" sekmesini göster",
+ "account_edit.profile_tab.show_media_replies.description": "Etkinleştirildiğinde Medya sekmesi hem kendi gönderilerinizi hem de diğer kişilerin gönderilerine verdiğiniz yanıtları gösterir.",
+ "account_edit.profile_tab.show_media_replies.title": "\"Medya\" sekmesinde yanıtları göster",
"account_edit.profile_tab.subtitle": "Profilinizdeki sekmeleri ve bunların görüntülediği bilgileri özelleştirin.",
"account_edit.profile_tab.title": "Profil sekme ayarları",
"account_edit.save": "Kaydet",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 5a62060560..3aa940e952 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -14,8 +14,13 @@
"about.powered_by": "Децентралізовані соціальні мережі від {mastodon}",
"about.rules": "Правила сервера",
"account.account_note_header": "Особиста нотатка",
+ "account.activity": "Дії",
+ "account.add_note": "Додати особисту нотатку",
"account.add_or_remove_from_list": "Додати або видалити зі списків",
+ "account.badges.admin": "Адміністрація",
+ "account.badges.blocked": "Заблоковано",
"account.badges.bot": "Бот",
+ "account.badges.domain_blocked": "Блокований домен",
"account.badges.group": "Група",
"account.block": "Заблокувати @{name}",
"account.block_domain": "Заблокувати домен {domain}",
@@ -25,6 +30,7 @@
"account.copy": "Копіювати посилання на профіль",
"account.direct": "Особиста згадка @{name}",
"account.disable_notifications": "Не повідомляти мене про дописи @{name}",
+ "account.edit_note": "Редагувати особисту нотатку",
"account.edit_profile": "Редагувати профіль",
"account.edit_profile_short": "Редагувати",
"account.enable_notifications": "Повідомляти мене про дописи @{name}",
@@ -37,6 +43,13 @@
"account.featured.hashtags": "Хештеги",
"account.featured_tags.last_status_at": "Останній допис {date}",
"account.featured_tags.last_status_never": "Немає дописів",
+ "account.field_overflow": "Показати повністю",
+ "account.filters.all": "Усі дії",
+ "account.filters.boosts_toggle": "Показати поширення",
+ "account.filters.posts_boosts": "Дописи й поширення",
+ "account.filters.posts_only": "Дописи",
+ "account.filters.posts_replies": "Дописи й відповіді",
+ "account.filters.replies_toggle": "Показати відповіді",
"account.follow": "Підписатися",
"account.follow_back": "Стежити також",
"account.follow_back_short": "Підписатись навзаєм",
@@ -55,12 +68,27 @@
"account.go_to_profile": "Перейти до профілю",
"account.hide_reblogs": "Сховати поширення від @{name}",
"account.in_memoriam": "Пам'ятник.",
+ "account.joined_long": "Долучилися {date}",
"account.joined_short": "Дата приєднання",
"account.languages": "Змінити обрані мови",
"account.link_verified_on": "Права власності на це посилання були перевірені {date}",
"account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.",
"account.media": "Медіа",
"account.mention": "Згадати @{name}",
+ "account.menu.add_to_list": "Додати до списку…",
+ "account.menu.block": "Блокувати обліковий запис",
+ "account.menu.block_domain": "Блокувати {domain}",
+ "account.menu.copied": "Посилання на обліковий запис скопійовано до буферу обміну",
+ "account.menu.copy": "Копіювати посилання",
+ "account.menu.direct": "Особиста згадка",
+ "account.menu.mention": "Згадка",
+ "account.menu.note.description": "Видно лише вам",
+ "account.menu.open_original_page": "Переглянути на {domain}",
+ "account.menu.remove_follower": "Вилучити підписника",
+ "account.menu.report": "Скарга на обліковий запис",
+ "account.menu.share": "Поділитися…",
+ "account.menu.unblock": "Розблокувати обліковий запис",
+ "account.menu.unblock_domain": "Розблокувати {domain}",
"account.moved_to": "{name} вказує, що їхній новий обліковий запис тепер:",
"account.mute": "Приховати @{name}",
"account.mute_notifications_short": "Не сповіщати",
@@ -68,6 +96,7 @@
"account.muted": "Приховується",
"account.mutual": "Підписані навзаєм",
"account.no_bio": "Немає опису.",
+ "account.node_modal.save": "Зберегти",
"account.open_original_page": "Відкрити оригінальну сторінку",
"account.posts": "Дописи",
"account.posts_with_replies": "Дописи й відповіді",
@@ -87,6 +116,9 @@
"account.unmute": "Не приховувати @{name}",
"account.unmute_notifications_short": "Сповіщати",
"account.unmute_short": "Не приховувати",
+ "account_edit.save": "Зберегти",
+ "account_edit_tags.suggestions": "Пропозиції:",
+ "account_edit_tags.tag_status_count": "{count, plural, one {# допис} few {# дописи} many {# дописів} other {# допису}}",
"account_note.placeholder": "Натисніть, щоб додати примітку",
"admin.dashboard.daily_retention": "Щоденний показник утримання користувачів після реєстрації",
"admin.dashboard.monthly_retention": "Щомісячний показник утримання користувачів після реєстрації",
@@ -110,6 +142,23 @@
"alt_text_modal.describe_for_people_with_visual_impairments": "Опишіть цю ідею для людей із порушеннями зору…",
"alt_text_modal.done": "Готово",
"announcement.announcement": "Оголошення",
+ "annual_report.announcement.action_dismiss": "Ні, дякую",
+ "annual_report.nav_item.badge": "Нове",
+ "annual_report.shared_page.donate": "Підтримати",
+ "annual_report.summary.archetype.booster.name": "Лучник",
+ "annual_report.summary.archetype.lurker.name": "Стоїк",
+ "annual_report.summary.archetype.oracle.name": "Провидець",
+ "annual_report.summary.archetype.pollster.name": "Допитливий",
+ "annual_report.summary.archetype.replier.name": "Метелик",
+ "annual_report.summary.archetype.title_public": "Архетип {name}",
+ "annual_report.summary.archetype.title_self": "Ваш архетип",
+ "annual_report.summary.close": "Закрити",
+ "annual_report.summary.copy_link": "Копіювати посилання",
+ "annual_report.summary.followers.new_followers": "{count, plural, one {новий підписник} few {нові підписники} many {нових підписників} other {нового підписника}}",
+ "annual_report.summary.highlighted_post.boost_count": "Допис поширено {count, plural, one {# раз} few {# рази} many {# разів} other {# раза}}.",
+ "annual_report.summary.highlighted_post.favourite_count": "Допис уподобано {count, plural, one {# раз} few {# рази} many {# разів} other {# раза}}.",
+ "annual_report.summary.highlighted_post.reply_count": "Допис отримав {count, plural, one {# відповідь} few {# відповіді} many {# відповідей} other {# відповіді}}.",
+ "annual_report.summary.highlighted_post.title": "Найпопулярніший допис",
"annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег",
"annual_report.summary.new_posts.new_posts": "нові дописи",
@@ -145,6 +194,9 @@
"closed_registrations_modal.find_another_server": "Знайти інший сервер",
"closed_registrations_modal.preamble": "Mastodon децентралізований, тож незалежно від того, де ви створюєте свій обліковий запис, ви зможете слідкувати та взаємодіяти з будь-ким на цьому сервері. Ви навіть можете розмістити його самостійно!",
"closed_registrations_modal.title": "Реєстрація на Mastodon",
+ "collections.detail.accounts_heading": "Облікові записи",
+ "collections.edit_details": "Редагувати подробиці",
+ "collections.remove_account": "Вилучити обліковий запис",
"column.about": "Про застосунок",
"column.blocks": "Заблоковані користувачі",
"column.bookmarks": "Закладки",
@@ -205,6 +257,7 @@
"confirmations.delete.confirm": "Видалити",
"confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?",
"confirmations.delete.title": "Видалити допис?",
+ "confirmations.delete_collection.confirm": "Видалити",
"confirmations.delete_list.confirm": "Видалити",
"confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?",
"confirmations.delete_list.title": "Видалити список?",
@@ -381,6 +434,8 @@
"follow_suggestions.who_to_follow": "На кого підписатися",
"followed_tags": "Відстежувані хештеґи",
"footer.about": "Про проєкт",
+ "footer.about_mastodon": "Про Mastodon",
+ "footer.about_server": "Про {domain}",
"footer.about_this_server": "Про сервер",
"footer.directory": "Каталог профілів",
"footer.get_app": "Завантажити застосунок",
@@ -825,7 +880,7 @@
"search_results.no_results": "Жодних результатів.",
"search_results.no_search_yet": "Спробуйте пошукати дописи, профілі або хештеґи.",
"search_results.see_all": "Показати все",
- "search_results.statuses": "Дописів",
+ "search_results.statuses": "Дописи",
"search_results.title": "Пошук «{q}»",
"server_banner.about_active_users": "Люди, які використовують цей сервер протягом останніх 30 днів (Щомісячні Активні Користувачі)",
"server_banner.active_users": "активні користувачі",
@@ -938,6 +993,7 @@
"tabs_bar.notifications": "Сповіщення",
"tabs_bar.publish": "Новий допис",
"tabs_bar.search": "Пошук",
+ "tag.remove": "Вилучити",
"terms_of_service.effective_as_of": "Ефективний на {date}",
"terms_of_service.title": "Умови використання",
"terms_of_service.upcoming_changes_on": "Майбутні зміни {date}",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index ad14df1a1a..711ae4dd35 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -78,7 +78,7 @@
"account.languages": "Đổi ngôn ngữ mong muốn",
"account.link_verified_on": "Liên kết này đã được xác minh vào {date}",
"account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.",
- "account.media": "Media",
+ "account.media": "Phương tiện",
"account.mention": "Nhắc đến @{name}",
"account.menu.add_to_list": "Thêm vào danh sách…",
"account.menu.block": "Chặn người này",
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "Hashtag thường dùng",
"account_edit.name_modal.add_title": "Thêm tên gọi",
"account_edit.name_modal.edit_title": "Sửa tên gọi",
+ "account_edit.profile_tab.button_label": "Tùy chỉnh",
+ "account_edit.profile_tab.hint.description": "Những thiết lập này tùy chỉnh những gì người dùng thấy trên {server} trong ứng dụng chính thức, nhưng có thể sẽ không thấy trên các máy chủ khác hoặc các ứng dụng thứ ba.",
+ "account_edit.profile_tab.hint.title": "Hiển thị vẫn đa dạng",
+ "account_edit.profile_tab.show_featured.description": "‘Nêu bật’ là một tab tùy chọn, giúp bạn nêu bật các tài khoản khác.",
+ "account_edit.profile_tab.show_featured.title": "Hiện tab ‘Nêu bật’",
+ "account_edit.profile_tab.show_media.description": "‘Phương tiện’ là một tab tùy chọn, hiển thị những tút có chứa hình ảnh hoặc video của bạn.",
+ "account_edit.profile_tab.show_media.title": "Hiện tab ‘Phương tiện’",
+ "account_edit.profile_tab.show_media_replies.description": "Nếu bật, tab Phương tiện sẽ hiện cả những tút của bạn lẫn những trả lời tới tút của người khác.",
+ "account_edit.profile_tab.show_media_replies.title": "Bao gồm tút dạng trả lời trong tab ‘Phương tiện’",
"account_edit.profile_tab.subtitle": "Tùy chỉnh tab trên hồ sơ của bạn và những gì chúng hiển thị.",
"account_edit.profile_tab.title": "Thiết lập tab hồ sơ",
"account_edit.save": "Lưu",
@@ -271,6 +280,13 @@
"closed_registrations_modal.find_another_server": "Tìm máy chủ khác",
"closed_registrations_modal.preamble": "Mastodon liên hợp nên bất kể bạn tạo tài khoản ở đâu, bạn cũng sẽ có thể theo dõi và tương tác với tài khoản trên máy chủ này. Bạn thậm chí có thể tự mở máy chủ!",
"closed_registrations_modal.title": "Đăng ký Mastodon",
+ "collection.share_modal.share_link_label": "Mời chia sẻ liên kết",
+ "collection.share_modal.share_via_post": "Đăng lên Mastodon",
+ "collection.share_modal.share_via_system": "Chia sẻ qua…",
+ "collection.share_modal.title": "Chia sẻ collection",
+ "collection.share_modal.title_new": "Chia sẻ collection mới của bạn!",
+ "collection.share_template_other": "Xem ngay collection tuyệt vời này: {link}",
+ "collection.share_template_own": "Xem ngay collection mới của tôi: {link}",
"collections.account_count": "{count, plural, other {# tài khoản}}",
"collections.accounts.empty_description": "Thêm tối đa {count} tài khoản mà bạn theo dõi",
"collections.accounts.empty_title": "Collection này trống",
@@ -448,6 +464,7 @@
"conversation.open": "Xem toàn bộ tin nhắn",
"conversation.with": "Với {names}",
"copy_icon_button.copied": "Đã sao chép vào bộ nhớ tạm",
+ "copy_icon_button.copy_this_text": "Sao chép liên kết vào clipboard",
"copypaste.copied": "Đã sao chép",
"copypaste.copy_to_clipboard": "Sao chép vào bộ nhớ tạm",
"directory.federated": "Ở mạng liên hợp",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 6295ca9b50..be8a700c03 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "精选话题标签",
"account_edit.name_modal.add_title": "添加显示名称",
"account_edit.name_modal.edit_title": "编辑显示名称",
+ "account_edit.profile_tab.button_label": "自定义",
+ "account_edit.profile_tab.hint.description": "这些设置可以自定义用户使用官方应用程序时在 {server} 上可以看到的内容,但可能不适用于外站及第三方应用程序上的用户。",
+ "account_edit.profile_tab.hint.title": "实际的显示情况可能不同",
+ "account_edit.profile_tab.show_featured.description": "你可以使用可选的“精选”选项卡来展示其他账号。",
+ "account_edit.profile_tab.show_featured.title": "显示“精选”选项卡",
+ "account_edit.profile_tab.show_media.description": "可选的“媒体”选项卡可以显示你发布的包含图片或视频的嘟文。",
+ "account_edit.profile_tab.show_media.title": "显示“媒体”选项卡",
+ "account_edit.profile_tab.show_media_replies.description": "如果启用,媒体选项卡将同时显示你的嘟文及你对其他人嘟文的回复。",
+ "account_edit.profile_tab.show_media_replies.title": "在“媒体”选项卡中包括回复",
"account_edit.profile_tab.subtitle": "自定义你个人资料的标签页及其显示的内容。",
"account_edit.profile_tab.title": "个人资料标签页设置",
"account_edit.save": "保存",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 31443295bb..20cad7639f 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -161,6 +161,15 @@
"account_edit.featured_hashtags.title": "推薦主題標籤",
"account_edit.name_modal.add_title": "新增顯示名稱",
"account_edit.name_modal.edit_title": "編輯顯示名稱",
+ "account_edit.profile_tab.button_label": "自訂",
+ "account_edit.profile_tab.hint.description": "這些設定能自訂使用者在官方應用程式中於 {server} 所見之內容,但可能不適用於其他伺服器或第三方應用程式的使用者。",
+ "account_edit.profile_tab.hint.title": "檢視結果仍可能有所不同",
+ "account_edit.profile_tab.show_featured.description": "「精選內容」為您能展現其他帳號之可選分頁。",
+ "account_edit.profile_tab.show_featured.title": "顯示「精選內容」分頁",
+ "account_edit.profile_tab.show_media.description": "「媒體」為顯示您包含圖片或影片嘟文之可選分頁。",
+ "account_edit.profile_tab.show_media.title": "顯示「媒體」分頁",
+ "account_edit.profile_tab.show_media_replies.description": "當啟用時,媒體分頁將顯示您的嘟文與對其他人嘟文之回嘟。",
+ "account_edit.profile_tab.show_media_replies.title": "於「媒體」分頁中包含回嘟",
"account_edit.profile_tab.subtitle": "自訂您個人檔案之分頁與內容。",
"account_edit.profile_tab.title": "個人檔案分頁設定",
"account_edit.save": "儲存",
diff --git a/app/lib/webhooks/payload_renderer.rb b/app/lib/webhooks/payload_renderer.rb
index 3d2731f6dc..73ae30b572 100644
--- a/app/lib/webhooks/payload_renderer.rb
+++ b/app/lib/webhooks/payload_renderer.rb
@@ -39,7 +39,7 @@ class Webhooks::PayloadRenderer
rule(:digit) { match('[0-9]') }
rule(:property_name) { match('[a-z_]').repeat(1) }
rule(:array_index) { digit.repeat(1) }
- rule(:segment) { (property_name | array_index) }
+ rule(:segment) { property_name | array_index }
rule(:path) { property_name >> (dot >> segment).repeat }
rule(:variable) { (str('}}').absent? >> path).repeat.as(:variable) }
rule(:expression) { str('{{') >> variable >> str('}}') }
diff --git a/app/models/collection_item.rb b/app/models/collection_item.rb
index c5c9ebc16e..e113b3b522 100644
--- a/app/models/collection_item.rb
+++ b/app/models/collection_item.rb
@@ -42,6 +42,10 @@ class CollectionItem < ApplicationRecord
scope :not_blocked_by, ->(account) { where.not(accounts: { id: account.blocking }) }
scope :local, -> { joins(:collection).merge(Collection.local) }
+ def revoke!
+ update!(state: :revoked)
+ end
+
def local_item_with_remote_account?
local? && account&.remote?
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index af4d4702b2..8819d93273 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -100,6 +100,8 @@ class Form::AdminSettings
authorized_fetch: :authorized_fetch_mode?,
}.freeze
+ UPLOAD_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze
+
DESCRIPTION_LIMIT = 200
DOMAIN_BLOCK_AUDIENCES = %w(disabled users all).freeze
REGISTRATION_MODES = %w(open approved none).freeze
diff --git a/app/serializers/activitypub/delete_feature_authorization_serializer.rb b/app/serializers/activitypub/delete_feature_authorization_serializer.rb
new file mode 100644
index 0000000000..eb9f39fb4b
--- /dev/null
+++ b/app/serializers/activitypub/delete_feature_authorization_serializer.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class ActivityPub::DeleteFeatureAuthorizationSerializer < ActivityPub::Serializer
+ include RoutingHelper
+
+ attributes :id, :type, :actor, :to
+
+ has_one :object, serializer: ActivityPub::FeatureAuthorizationSerializer
+
+ def id
+ [ap_account_feature_authorization_url(object.account_id, object), '#delete'].join
+ end
+
+ def type
+ 'Delete'
+ end
+
+ def actor
+ ActivityPub::TagManager.instance.uri_for(object.account)
+ end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
+end
diff --git a/app/services/activitypub/fetch_remote_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb
index e08f82f7d9..4ef5a6571e 100644
--- a/app/services/activitypub/fetch_remote_status_service.rb
+++ b/app/services/activitypub/fetch_remote_status_service.rb
@@ -60,6 +60,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService
def trustworthy_attribution?(uri, attributed_to)
return false if uri.nil? || attributed_to.nil?
+ return false if unsupported_uri_scheme?(uri) || unsupported_uri_scheme?(attributed_to)
Addressable::URI.parse(uri).normalized_host.casecmp(Addressable::URI.parse(attributed_to).normalized_host).zero?
end
diff --git a/app/services/revoke_collection_item_service.rb b/app/services/revoke_collection_item_service.rb
new file mode 100644
index 0000000000..d299b567f2
--- /dev/null
+++ b/app/services/revoke_collection_item_service.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class RevokeCollectionItemService < BaseService
+ include Payloadable
+
+ def call(collection_item)
+ @collection_item = collection_item
+ @account = collection_item.account
+
+ @collection_item.revoke!
+
+ distribute_stamp_deletion! if Mastodon::Feature.collections_federation_enabled? && @collection_item.remote?
+ end
+
+ private
+
+ def distribute_stamp_deletion!
+ ActivityPub::AccountRawDistributionWorker.perform_async(signed_activity_json, @collection_item.collection.account_id)
+ end
+
+ def signed_activity_json
+ @signed_activity_json ||= Oj.dump(serialize_payload(@collection_item, ActivityPub::DeleteFeatureAuthorizationSerializer, signer: @account, always_sign: true))
+ end
+end
diff --git a/app/views/admin/custom_emojis/new.html.haml b/app/views/admin/custom_emojis/new.html.haml
index 1181f477ea..1ab688c07d 100644
--- a/app/views/admin/custom_emojis/new.html.haml
+++ b/app/views/admin/custom_emojis/new.html.haml
@@ -12,7 +12,7 @@
.fields-group
= f.input :image,
wrapper: :with_label,
- input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES.join(',') },
+ input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES },
hint: t('admin.custom_emojis.image_hint', size: number_to_human_size(CustomEmoji::LOCAL_LIMIT))
.actions
diff --git a/app/views/admin/settings/branding/show.html.haml b/app/views/admin/settings/branding/show.html.haml
index 22116167eb..02da7b2c8f 100644
--- a/app/views/admin/settings/branding/show.html.haml
+++ b/app/views/admin/settings/branding/show.html.haml
@@ -44,7 +44,7 @@
.fields-row__column.fields-row__column-6.fields-group
= f.input :favicon,
as: :file,
- input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') },
+ input_html: { accept: f.object.class::UPLOAD_MIME_TYPES },
wrapper: :with_block_label
.fields-row__column.fields-row__column-6.fields-group
@@ -58,7 +58,7 @@
.fields-row__column.fields-row__column-6.fields-group
= f.input :app_icon,
as: :file,
- input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') },
+ input_html: { accept: f.object.class::UPLOAD_MIME_TYPES },
wrapper: :with_block_label
.fields-row__column.fields-row__column-6.fields-group
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index 3815eb7fc2..8df50a5a8c 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -35,7 +35,7 @@
.fields-group
= f.input :avatar,
hint: t('simple_form.hints.defaults.avatar', dimensions: Account::Avatar::AVATAR_GEOMETRY, size: number_to_human_size(Account::Avatar::AVATAR_LIMIT)),
- input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES.join(',') },
+ input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES },
wrapper: :with_block_label
.fields-row__column.fields-row__column-6
@@ -51,7 +51,7 @@
.fields-group
= f.input :header,
hint: t('simple_form.hints.defaults.header', dimensions: Account::Header::HEADER_GEOMETRY, size: number_to_human_size(Account::Header::HEADER_LIMIT)),
- input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES.join(',') },
+ input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES },
wrapper: :with_block_label
.fields-row__column.fields-row__column-6
diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb
index 76d3765c1c..8133a4de07 100644
--- a/app/workers/move_worker.rb
+++ b/app/workers/move_worker.rb
@@ -53,7 +53,7 @@ class MoveWorker
rescue ActiveRecord::RecordInvalid
nil
end
- end
+ end
# Finally, handle the common case of accounts not following the new account
source_local_followers
@@ -72,7 +72,7 @@ class MoveWorker
['relationships', @target_account.id, follow.account_id],
]
end)
- end
+ end
num_moved
end
diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml
index 01a441b556..9b8d428b39 100644
--- a/config/locales/doorkeeper.sv.yml
+++ b/config/locales/doorkeeper.sv.yml
@@ -83,6 +83,10 @@ sv:
access_denied: Resursägaren eller behörighetsservern nekade begäran.
credential_flow_not_configured: Resurs Ägare Lösenord Credentials flöde misslyckades på grund av att Doorkeeper.configure.resource_owner_from_credentials är okonfigurerad.
invalid_client: Klientautentisering misslyckades på grund av okänd klient, ingen klientautentisering inkluderad eller icke godkänd autentiseringsmetod.
+ invalid_code_challenge_method:
+ one: code_challenge_method måste vara %{challenge_methods}.
+ other: code_challenge_method måste vara en av %{challenge_methods}.
+ zero: Auktoriseringsservern stöder inte PKCE eftersom det inte finns några accepterade code_challenge_metod-värden.
invalid_grant: Det beviljade godkännandetillskottet är ogiltigt, upphört, återkallat, matchar inte den omdirigering URI som användes i auktorisationsförfrågan eller har utfärdats till en annan klient.
invalid_redirect_uri: Den omdirigerade uri är inte giltig.
invalid_request:
diff --git a/config/locales/nan-TW.yml b/config/locales/nan-TW.yml
index 5d15b9685d..3b89a02707 100644
--- a/config/locales/nan-TW.yml
+++ b/config/locales/nan-TW.yml
@@ -263,6 +263,7 @@ nan-TW:
demote_user_html: "%{name} kā用者 %{target} 降級"
destroy_announcement_html: "%{name} kā公告 %{target} thâi掉ah"
destroy_canonical_email_block_html: "%{name} kā hash是 %{target} ê電子phue取消封鎖ah"
+ destroy_collection_html: "%{name} kā %{target} ê收藏thâi掉"
destroy_custom_emoji_html: "%{name} kā 新ê emoji %{target} thâi掉ah"
destroy_domain_allow_html: "%{name} 無允准 %{target} 域名加入聯邦"
destroy_domain_block_html: "%{name} 取消封鎖域名 %{target}"
@@ -302,6 +303,7 @@ nan-TW:
unsilence_account_html: "%{name} 取消限制 %{target} ê口座"
unsuspend_account_html: "%{name} kā %{target} ê口座恢復權限ah"
update_announcement_html: "%{name} kā公告 %{target} 更新ah"
+ update_collection_html: "%{name} kā %{target} ê收藏更新"
update_custom_emoji_html: "%{name} kā 新ê emoji %{target} 更新ah"
update_domain_block_html: "%{name} kā %{target} ê域名封鎖更新ah"
update_ip_block_html: "%{name} 改變 IP %{target} ê規則"
@@ -675,6 +677,7 @@ nan-TW:
cancel: 取消
category: 類別
category_description_html: Tsit ê 受檢舉ê口座kap/á是內容,ē佇kap tsit ê口座ê聯絡內底引用。
+ collections: 收藏 (%{count})
comment:
none: 無
comment_description_html: 為著提供其他資訊,%{name} 寫:
@@ -710,6 +713,7 @@ nan-TW:
resolved_msg: 檢舉成功解決ah!
skip_to_actions: 跳kàu行動
status: 狀態
+ statuses: PO文 (%{count})
statuses_description_html: 冒犯ê內容ē引用tī kap受檢舉口座ê聯絡
summary:
action_preambles:
@@ -1815,6 +1819,19 @@ nan-TW:
activity: 上尾ê活動
browser: 瀏覽器
browsers:
+ alipay: Alipay
+ blackberry: BlackBerry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: 毋知影ê瀏覽器
+ huawei_browser: 華為ê瀏覽器
+ ie: Internet Explorer
+ micro_messenger: 微信
+ nokia: Nokia S40 Ovi 瀏覽器
+ opera: Opera
+ otter: Otter
qq: QQ 瀏覽器
safari: Safari
uc_browser: UC 瀏覽器
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index a2839293fe..66b6ab26ea 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -164,6 +164,7 @@ sv:
name: Offentligt namn på rollen, om rollen är inställd på att visas som ett emblem
permissions_as_keys: Användare med denna roll kommer ha tillgång till...
position: Högre roll avgör konfliktlösning i vissa situationer. Vissa åtgärder kan endast utföras på roller med lägre prioritet
+ require_2fa: Användare med denna roll kommer att krävas för att ställa in tvåfaktorsautentisering för att använda Mastodon
username_block:
allow_with_approval: I stället för att förhindra direkt registrering kräver matchning av registreringar ditt godkännande
comparison: Var uppmärksam på Scunthorpe Problem vid blockering av partiella matcher
@@ -223,6 +224,7 @@ sv:
email: E-postadress
expires_in: Utgår efter
fields: Profil-metadata
+ filter_action: Filtrera åtgärd
header: Sidhuvud
honeypot: "%{label} (fyll inte i)"
inbox_url: Webbadress för ombudsinkorg
@@ -387,6 +389,7 @@ sv:
name: Namn
permissions_as_keys: Behörigheter
position: Prioritet
+ require_2fa: Kräv tvåfaktorsautentisering
username_block:
allow_with_approval: Tillåt registreringar med godkännande
comparison: Jämförelsesätt
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 8311e29d66..72a8b4cdbb 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -53,6 +53,7 @@ sv:
label: Ändra roll
no_role: Ingen roll
title: Ändra roll för %{username}
+ collections: Samlingar
confirm: Bekräfta
confirmed: Bekräftad
confirming: Bekräftande
@@ -263,6 +264,7 @@ sv:
demote_user_html: "%{name} nedgraderade användare %{target}"
destroy_announcement_html: "%{name} raderade kungörelsen %{target}"
destroy_canonical_email_block_html: "%{name} avblockerade e-post med hash%{target}"
+ destroy_collection_html: "%{name} tog bort samlingen av %{target}"
destroy_custom_emoji_html: "%{name} raderade emoji %{target}"
destroy_domain_allow_html: "%{name} raderade domän %{target} från vitlistan"
destroy_domain_block_html: "%{name} avblockerade domänen %{target}"
@@ -302,6 +304,7 @@ sv:
unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto"
unsuspend_account_html: "%{name} ångrade avstängningen av %{target}s konto"
update_announcement_html: "%{name} uppdaterade kungörelsen %{target}"
+ update_collection_html: "%{name} uppdaterade samlingen av %{target}"
update_custom_emoji_html: "%{name} uppdaterade emoji %{target}"
update_domain_block_html: "%{name} uppdaterade domän-block för %{target}"
update_ip_block_html: "%{name} ändrade regel för IP %{target}"
@@ -339,9 +342,13 @@ sv:
updated_msg: Kungörelsen uppdaterades!
collections:
accounts: Konton
+ collection_title: Samling av %{name}
+ contents: Innehåll
number_of_accounts:
one: 1 konto
other: "%{count} konton"
+ open: Öppna
+ view_publicly: Visa offentligt
critical_update_pending: Kritisk uppdatering väntar
custom_emojis:
assign_category: Tilldela kategori
@@ -681,6 +688,7 @@ sv:
cancel: Avbryt
category: Kategori
category_description_html: Anledningen till att kontot och/eller innehållet rapporterades kommer att visas i kommunikation med det rapporterade kontot
+ collections: Samlingar (%{count})
comment:
none: Ingen
comment_description_html: 'För att ge mer information, skrev %{name}:'
@@ -716,6 +724,7 @@ sv:
resolved_msg: Anmälan har lösts framgångsrikt!
skip_to_actions: Hoppa till åtgärder
status: Status
+ statuses: Inlägg (%{count})
statuses_description_html: Stötande innehåll kommer att citeras i kommunikationen med det rapporterade kontot
summary:
action_preambles:
@@ -804,6 +813,7 @@ sv:
view_devops_description: Ger användare tillgång till instrumentpanelerna Sidekiq och pgHero
view_feeds: Visa live- och ämnesflöden
view_feeds_description: Ger användare tillgång till live-och ämnesflöden oavsett serverinställningar
+ requires_2fa: Kräver tvåfaktorsautentisering
title: Roller
rules:
add_new: Lägg till regel
@@ -2022,6 +2032,8 @@ sv:
past_preamble_html: Vi har ändrat våra användarvillkor sedan ditt senaste besök. Vi uppmanar dig att granska de uppdaterade villkoren.
review_link: Granska villkoren för tjänsten
title: Villkoren för tjänsten i %{domain} ändras
+ themes:
+ default: Mastodon
time:
formats:
default: "%d %b %Y, %H:%M"
@@ -2046,6 +2058,8 @@ sv:
recovery_codes: Backup återställningskod
recovery_codes_regenerated: Återställningskoder genererades på nytt
recovery_instructions_html: Om du någonsin tappar åtkomst till din telefon kan du använda någon av återställningskoderna nedan för att återställa åtkomst till ditt konto. Håll återställningskoderna säkra . Du kan till exempel skriva ut dem och lagra dem med andra viktiga dokument.
+ resume_app_authorization: Fortsätt app-autentisering
+ role_requirement: "%{domain} kräver att du ställer in tvåfaktorsautentisering innan du kan använda Mastodon."
webauthn: Säkerhetsnycklar
user_mailer:
announcement_published:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index e6ff166392..11dcf51c6e 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -23,7 +23,7 @@ uk:
many: Дописів
one: Допис
other: Дописів
- posts_tab_heading: Дописів
+ posts_tab_heading: Дописи
self_follow_error: Ви не можете стежити за власним обліковим записом
admin:
account_actions:
@@ -335,6 +335,8 @@ uk:
unpublish: Скасувати публікацію
unpublished_msg: Оголошення успішно приховано!
updated_msg: Оголошення успішно оновлено!
+ collections:
+ open: Відкрити
critical_update_pending: Очікується критичне оновлення
custom_emojis:
assign_category: Призначити категорію
@@ -498,6 +500,7 @@ uk:
fasp:
debug:
callbacks:
+ created_at: Створено
delete: Видалити
providers:
delete: Видалити
@@ -701,6 +704,7 @@ uk:
resolved_msg: Скаргу успішно вирішено!
skip_to_actions: Перейти до дій
status: Стан
+ statuses: Дописи (%{count})
statuses_description_html: Замінений вміст буде цитований у спілкуванні з обліковим записом, на який поскаржилися
summary:
action_preambles:
@@ -794,11 +798,16 @@ uk:
title: Ролі
rules:
add_new: Додати правило
+ add_translation: Додати переклад
delete: Видалити
description_html: Хоча більшість заявляє про прочитання та погодження з умовами обслуговування, як правило, люди не читають їх до появи проблеми. Спростіть перегляд правил вашого сервера, зробивши їх у вигляді маркованого списку. Спробуйте створити короткі та просі правила, але не розділяйте їх на багато окремих частин.
edit: Змінити правило
empty: Жодних правил сервера ще не визначено.
+ move_down: Посунути вниз
+ move_up: Посунути вгору
title: Правила сервера
+ translation: Переклад
+ translations: Переклади
settings:
about:
manage_rules: Керувати правилами сервера
@@ -1278,6 +1287,10 @@ uk:
hint_html: "Підказка: ми не будемо запитувати ваш пароль впродовж наступної години."
invalid_password: Невірний пароль
prompt: Підтвердіть пароль для продовження
+ color_scheme:
+ auto: Авто
+ dark: Темна
+ light: Світла
crypto:
errors:
invalid_key: не є припустимим ключем Ed25519 або Curve25519
diff --git a/package.json b/package.json
index 925e1129b2..8d599f8d64 100644
--- a/package.json
+++ b/package.json
@@ -170,7 +170,7 @@
"eslint-import-resolver-typescript": "^4.2.5",
"eslint-plugin-formatjs": "^5.3.1",
"eslint-plugin-import": "~2.32.0",
- "eslint-plugin-jsdoc": "^61.7.1",
+ "eslint-plugin-jsdoc": "^62.0.0",
"eslint-plugin-jsx-a11y": "~6.10.2",
"eslint-plugin-promise": "~7.2.1",
"eslint-plugin-react": "^7.37.4",
@@ -187,7 +187,6 @@
"react-test-renderer": "^18.2.0",
"storybook": "^10.0.5",
"stylelint": "^17.0.0",
- "stylelint-config-prettier-scss": "^1.0.0",
"stylelint-config-standard-scss": "^17.0.0",
"typescript": "~5.9.0",
"typescript-eslint": "^8.55.0",
diff --git a/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb b/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb
new file mode 100644
index 0000000000..a1b2de7966
--- /dev/null
+++ b/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe ActivityPub::DeleteFeatureAuthorizationSerializer do
+ include RoutingHelper
+
+ subject { serialized_record_json(collection_item, described_class, adapter: ActivityPub::Adapter) }
+
+ describe 'serializing an object' do
+ let(:collection) { Fabricate(:remote_collection) }
+ let(:collection_item) { Fabricate(:collection_item, collection:, uri: 'https://example.com') }
+
+ it 'returns expected json structure' do
+ expect(subject)
+ .to include({
+ 'type' => 'Delete',
+ 'to' => ['https://www.w3.org/ns/activitystreams#Public'],
+ 'actor' => ActivityPub::TagManager.instance.uri_for(collection_item.account),
+ 'object' => a_hash_including({
+ 'type' => 'FeatureAuthorization',
+ 'id' => ap_account_feature_authorization_url(collection_item.account_id, collection_item),
+ }),
+ })
+ end
+ end
+end
diff --git a/spec/services/revoke_collection_item_service_spec.rb b/spec/services/revoke_collection_item_service_spec.rb
new file mode 100644
index 0000000000..8ea753dcc5
--- /dev/null
+++ b/spec/services/revoke_collection_item_service_spec.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe RevokeCollectionItemService do
+ subject { described_class.new }
+
+ let(:collection_item) { Fabricate(:collection_item) }
+
+ it 'revokes the collection item and sends a Delete activity' do
+ expect { subject.call(collection_item) }
+ .to change { collection_item.reload.state }.from('accepted').to('revoked')
+ end
+
+ context 'when the collection is remote', feature: :collections_federation do
+ let(:collection) { Fabricate(:remote_collection) }
+ let(:collection_item) { Fabricate(:collection_item, collection:, uri: 'https://example.com') }
+
+ it 'federates a `Delete` activity' do
+ subject.call(collection_item)
+
+ expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
+ end
+ end
+end
diff --git a/stylelint.config.js b/stylelint.config.js
index b1256252e2..af554e481d 100644
--- a/stylelint.config.js
+++ b/stylelint.config.js
@@ -1,5 +1,5 @@
module.exports = {
- extends: ['stylelint-config-standard-scss', 'stylelint-config-prettier-scss'],
+ extends: ['stylelint-config-standard-scss'],
ignoreFiles: [
'app/javascript/styles/mastodon/reset.scss',
'app/javascript/flavours/glitch/styles/mastodon/reset.scss',
diff --git a/yarn.lock b/yarn.lock
index e4bff3d9b9..a286babfe0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2093,16 +2093,16 @@ __metadata:
languageName: node
linkType: hard
-"@es-joy/jsdoccomment@npm:~0.78.0":
- version: 0.78.0
- resolution: "@es-joy/jsdoccomment@npm:0.78.0"
+"@es-joy/jsdoccomment@npm:~0.84.0":
+ version: 0.84.0
+ resolution: "@es-joy/jsdoccomment@npm:0.84.0"
dependencies:
"@types/estree": "npm:^1.0.8"
- "@typescript-eslint/types": "npm:^8.46.4"
- comment-parser: "npm:1.4.1"
- esquery: "npm:^1.6.0"
- jsdoc-type-pratt-parser: "npm:~7.0.0"
- checksum: 10c0/be18b8149303e8e7c9414b0b0453a0fa959c1c8db6f721b75178336e01b65a9f251db98ecfedfb1b3cfa5e717f3e2abdb06a0f8dbe45d3330a62262c5331c327
+ "@typescript-eslint/types": "npm:^8.54.0"
+ comment-parser: "npm:1.4.5"
+ esquery: "npm:^1.7.0"
+ jsdoc-type-pratt-parser: "npm:~7.1.1"
+ checksum: 10c0/b5562c176dde36cd2956bb115b79229d2253b27d6d7e52820eb55c509f75a72048ae8ea8d57193b33be42728c1aa7a5ee20937b4967175291cb4ae60fdda318d
languageName: node
linkType: hard
@@ -2662,10 +2662,10 @@ __metadata:
languageName: node
linkType: hard
-"@ioredis/commands@npm:1.5.0":
- version: 1.5.0
- resolution: "@ioredis/commands@npm:1.5.0"
- checksum: 10c0/2d192d967a21f0192e17310d27ead02b0bdd504e834c782714abe641190ebfb548ad307fd89fd2d80db97c462afdc69ab4a4383831ab64ce61fe92f130d8b466
+"@ioredis/commands@npm:1.5.1":
+ version: 1.5.1
+ resolution: "@ioredis/commands@npm:1.5.1"
+ checksum: 10c0/cb8f6d13cff0753e3e7ef001fb895491985d9a623248192538f13bc2fd9bfdfde3c18cf2ba6f20ec8ceaa681b0771070d3a09b82eed044c798bcfef5e3ae54b3
languageName: node
linkType: hard
@@ -2874,7 +2874,7 @@ __metadata:
eslint-import-resolver-typescript: "npm:^4.2.5"
eslint-plugin-formatjs: "npm:^5.3.1"
eslint-plugin-import: "npm:~2.32.0"
- eslint-plugin-jsdoc: "npm:^61.7.1"
+ eslint-plugin-jsdoc: "npm:^62.0.0"
eslint-plugin-jsx-a11y: "npm:~6.10.2"
eslint-plugin-promise: "npm:~7.2.1"
eslint-plugin-react: "npm:^7.37.4"
@@ -2932,7 +2932,6 @@ __metadata:
storybook: "npm:^10.0.5"
stringz: "npm:^2.1.0"
stylelint: "npm:^17.0.0"
- stylelint-config-prettier-scss: "npm:^1.0.0"
stylelint-config-standard-scss: "npm:^17.0.0"
substring-trie: "npm:^1.0.2"
tesseract.js: "npm:^7.0.0"
@@ -4818,13 +4817,20 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:8.55.0, @typescript-eslint/types@npm:^8.46.4, @typescript-eslint/types@npm:^8.55.0":
+"@typescript-eslint/types@npm:8.55.0":
version: 8.55.0
resolution: "@typescript-eslint/types@npm:8.55.0"
checksum: 10c0/dc572f55966e2f0fee149e5d5e42a91cedcdeac451bff29704eb701f9336f123bbc7d7abcfbda717f9e1ef6b402fa24679908bc6032e67513287403037ef345f
languageName: node
linkType: hard
+"@typescript-eslint/types@npm:^8.54.0, @typescript-eslint/types@npm:^8.55.0":
+ version: 8.56.1
+ resolution: "@typescript-eslint/types@npm:8.56.1"
+ checksum: 10c0/e5a0318abddf0c4f98da3039cb10b3c0601c8601f7a9f7043630f0d622dabfe83a4cd833545ad3531fc846e46ca2874377277b392c2490dffec279d9242d827b
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/typescript-estree@npm:8.55.0":
version: 8.55.0
resolution: "@typescript-eslint/typescript-estree@npm:8.55.0"
@@ -5286,12 +5292,12 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^8.15.0, acorn@npm:^8.8.2":
- version: 8.15.0
- resolution: "acorn@npm:8.15.0"
+"acorn@npm:^8.15.0, acorn@npm:^8.16.0, acorn@npm:^8.8.2":
+ version: 8.16.0
+ resolution: "acorn@npm:8.16.0"
bin:
acorn: bin/acorn
- checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec
+ checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e
languageName: node
linkType: hard
@@ -5644,13 +5650,13 @@ __metadata:
linkType: hard
"axios@npm:^1.4.0":
- version: 1.13.5
- resolution: "axios@npm:1.13.5"
+ version: 1.13.6
+ resolution: "axios@npm:1.13.6"
dependencies:
follow-redirects: "npm:^1.15.11"
form-data: "npm:^4.0.5"
proxy-from-env: "npm:^1.1.0"
- checksum: 10c0/abf468c34f2d145f3dc7dbc0f1be67e520630624307bda69a41bbe8d386bd672d87b4405c4ee77f9ff54b235ab02f96a9968fb00e75b13ce64706e352a3068fd
+ checksum: 10c0/51fb5af055c3b85662fa97df17d986ae2c37d13bf86d50b6bb36b6b3a2dec6966a1d3a14ab3774b71707b155ae3597ed9b7babdf1a1a863d1a31840cb8e7ec71
languageName: node
linkType: hard
@@ -6186,10 +6192,10 @@ __metadata:
languageName: node
linkType: hard
-"comment-parser@npm:1.4.1":
- version: 1.4.1
- resolution: "comment-parser@npm:1.4.1"
- checksum: 10c0/d6c4be3f5be058f98b24f2d557f745d8fe1cc9eb75bebbdccabd404a0e1ed41563171b16285f593011f8b6a5ec81f564fb1f2121418ac5cbf0f49255bf0840dd
+"comment-parser@npm:1.4.5":
+ version: 1.4.5
+ resolution: "comment-parser@npm:1.4.5"
+ checksum: 10c0/6a6a74697c79927e3bd42bde9608a471f1a9d4995affbc22fa3364cc42b4017f82ef477431a1558b0b6bef959f9bb6964c01c1bbfc06a58ba1730dec9c423b44
languageName: node
linkType: hard
@@ -7321,27 +7327,27 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-jsdoc@npm:^61.7.1":
- version: 61.7.1
- resolution: "eslint-plugin-jsdoc@npm:61.7.1"
+"eslint-plugin-jsdoc@npm:^62.0.0":
+ version: 62.7.1
+ resolution: "eslint-plugin-jsdoc@npm:62.7.1"
dependencies:
- "@es-joy/jsdoccomment": "npm:~0.78.0"
+ "@es-joy/jsdoccomment": "npm:~0.84.0"
"@es-joy/resolve.exports": "npm:1.2.0"
are-docs-informative: "npm:^0.0.2"
- comment-parser: "npm:1.4.1"
+ comment-parser: "npm:1.4.5"
debug: "npm:^4.4.3"
escape-string-regexp: "npm:^4.0.0"
- espree: "npm:^11.0.0"
+ espree: "npm:^11.1.0"
esquery: "npm:^1.7.0"
html-entities: "npm:^2.6.0"
object-deep-merge: "npm:^2.0.0"
parse-imports-exports: "npm:^0.2.4"
- semver: "npm:^7.7.3"
+ semver: "npm:^7.7.4"
spdx-expression-parse: "npm:^4.0.0"
to-valid-identifier: "npm:^1.0.0"
peerDependencies:
- eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
- checksum: 10c0/d0904b923f68a4e9e6da156316a4e2a972445bf79118bde9618ad80b4ef5927fc2c9dd597b22b776742ef548d65914e75fca190ab3be942385f268a3b83c1087
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
+ checksum: 10c0/949c1f11ed86ddac0903ffe65e5e30d36766badea2e42ceeaf85168ec6f540f94a9974896600410ce1fcbbf34809b39236cc9614411c15d05b93be166c21ec3c
languageName: node
linkType: hard
@@ -7460,10 +7466,10 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^5.0.0":
- version: 5.0.0
- resolution: "eslint-visitor-keys@npm:5.0.0"
- checksum: 10c0/5ec68b7ae350f6e7813a9ab469f8c64e01e5a954e6e6ee6dc441cc24d315eb342e5fb81ab5fc21f352cf0125096ab4ed93ca892f602a1576ad1eedce591fe64a
+"eslint-visitor-keys@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "eslint-visitor-keys@npm:5.0.1"
+ checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678
languageName: node
linkType: hard
@@ -7527,14 +7533,14 @@ __metadata:
languageName: node
linkType: hard
-"espree@npm:^11.0.0":
- version: 11.1.0
- resolution: "espree@npm:11.1.0"
+"espree@npm:^11.1.0":
+ version: 11.1.1
+ resolution: "espree@npm:11.1.1"
dependencies:
- acorn: "npm:^8.15.0"
+ acorn: "npm:^8.16.0"
acorn-jsx: "npm:^5.3.2"
- eslint-visitor-keys: "npm:^5.0.0"
- checksum: 10c0/32228d12896f5aa09f59fad8bf5df228d73310e436c21389876cdd21513b620c087d24b40646cdcff848540d11b078653db0e37ea67ac9c7012a12595d86630c
+ eslint-visitor-keys: "npm:^5.0.1"
+ checksum: 10c0/2feae74efdfb037b9e9fcb30506799845cf20900de5e441ed03e5c51aaa249f85ea5818ff177682acc0c9bfb4ac97e1965c238ee44ac7c305aab8747177bab69
languageName: node
linkType: hard
@@ -7548,7 +7554,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.5.0, esquery@npm:^1.6.0, esquery@npm:^1.7.0":
+"esquery@npm:^1.5.0, esquery@npm:^1.7.0":
version: 1.7.0
resolution: "esquery@npm:1.7.0"
dependencies:
@@ -8676,10 +8682,10 @@ __metadata:
linkType: hard
"ioredis@npm:^5.3.2":
- version: 5.9.3
- resolution: "ioredis@npm:5.9.3"
+ version: 5.10.0
+ resolution: "ioredis@npm:5.10.0"
dependencies:
- "@ioredis/commands": "npm:1.5.0"
+ "@ioredis/commands": "npm:1.5.1"
cluster-key-slot: "npm:^1.1.0"
debug: "npm:^4.3.4"
denque: "npm:^2.1.0"
@@ -8688,7 +8694,7 @@ __metadata:
redis-errors: "npm:^1.2.0"
redis-parser: "npm:^3.0.0"
standard-as-callback: "npm:^2.1.0"
- checksum: 10c0/f3d5c811bc1f320236f488ee6bd8a4857c7c0e8e5de1154b064afc03eb35aafbf24156e430025061b6939c58a5a6b424d86814d726439f5811b2e9c56c710dd4
+ checksum: 10c0/294e8cdef963f922b04ad023d4165f1d399b27279b9890f3e1311da57fb2a082c8dca52d18bd14a54acd6fb82853783641a0c47ff18661a8756221049f807e88
languageName: node
linkType: hard
@@ -9236,10 +9242,10 @@ __metadata:
languageName: node
linkType: hard
-"jsdoc-type-pratt-parser@npm:~7.0.0":
- version: 7.0.0
- resolution: "jsdoc-type-pratt-parser@npm:7.0.0"
- checksum: 10c0/3ede53c80dddf940a51dcdc79e3923537650f6fb6e9001fc76023c2d5cb0195cc8b24b7eebf9b3f20a7bc00d5e6b7f70318f0b8cb5972f6aff884152e6698014
+"jsdoc-type-pratt-parser@npm:~7.1.1":
+ version: 7.1.1
+ resolution: "jsdoc-type-pratt-parser@npm:7.1.1"
+ checksum: 10c0/5a5216a75962b3a8a3a1e7e09a19b31b5a373c06c726a00b081480daee00196250d4acc8dfbecc0a7846d439a5bcf4a326df6348b879cf95f60c62ce5818dadb
languageName: node
linkType: hard
@@ -10722,19 +10728,19 @@ __metadata:
languageName: node
linkType: hard
-"pg-pool@npm:^3.11.0":
- version: 3.11.0
- resolution: "pg-pool@npm:3.11.0"
+"pg-pool@npm:^3.12.0":
+ version: 3.12.0
+ resolution: "pg-pool@npm:3.12.0"
peerDependencies:
pg: ">=8.0"
- checksum: 10c0/4b104b48a47257a0edad0c62e5ea1908b72cb79386270264b452e69895e9e4c589d00cdbf6e46d4e9c05bc7e7d191656b66814b5282d65f33b12648a21df3c7f
+ checksum: 10c0/b09da392ae2d0dae7bdf62b8557d3643bb7d84335894bc536f16ddd0da116b44c2f2770c88ff71a80252988ca115ec95a480cc047a75df34fbbbb2432b3a75da
languageName: node
linkType: hard
-"pg-protocol@npm:*, pg-protocol@npm:^1.11.0":
- version: 1.11.0
- resolution: "pg-protocol@npm:1.11.0"
- checksum: 10c0/93e83581781418c9173eba4e4545f73392cfe66b78dd1d3624d7339fbd37e7f4abebaf2615e68e0701a9bf0edf5b81a4ad533836f388f775fe25fa24a691c464
+"pg-protocol@npm:*, pg-protocol@npm:^1.12.0":
+ version: 1.12.0
+ resolution: "pg-protocol@npm:1.12.0"
+ checksum: 10c0/577f33c756f6503682d9ac17fd813f9edbe4a1716e497f17d36b6edaf9bf8383accaf8cd7422c49e2fbe4eb28ef275bc52fbd8287e154d4510f50b9ccefe4165
languageName: node
linkType: hard
@@ -10752,13 +10758,13 @@ __metadata:
linkType: hard
"pg@npm:^8.5.0":
- version: 8.18.0
- resolution: "pg@npm:8.18.0"
+ version: 8.19.0
+ resolution: "pg@npm:8.19.0"
dependencies:
pg-cloudflare: "npm:^1.3.0"
pg-connection-string: "npm:^2.11.0"
- pg-pool: "npm:^3.11.0"
- pg-protocol: "npm:^1.11.0"
+ pg-pool: "npm:^3.12.0"
+ pg-protocol: "npm:^1.12.0"
pg-types: "npm:2.2.0"
pgpass: "npm:1.0.5"
peerDependencies:
@@ -10769,7 +10775,7 @@ __metadata:
peerDependenciesMeta:
pg-native:
optional: true
- checksum: 10c0/9525e34d603ee5d715b8952269b2fa9fdd350a55fc5a3360104e7613724441858e57d52eed435fb16e993d028b45d8175dc277d270d31f69e5746987a549f772
+ checksum: 10c0/7713d6ef9f32746370f2bd599ebfa54d22bbdbb3a256a64b76997dd8a7279a5734dde260d6a1da22047171604fba88bd273d570c77b16f08ebe32a47ffbe2aba
languageName: node
linkType: hard
@@ -12646,12 +12652,12 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.7.1, semver@npm:^7.7.3":
- version: 7.7.3
- resolution: "semver@npm:7.7.3"
+"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.7.1, semver@npm:^7.7.3, semver@npm:^7.7.4":
+ version: 7.7.4
+ resolution: "semver@npm:7.7.4"
bin:
semver: bin/semver.js
- checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e
+ checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2
languageName: node
linkType: hard
@@ -13348,18 +13354,6 @@ __metadata:
languageName: node
linkType: hard
-"stylelint-config-prettier-scss@npm:^1.0.0":
- version: 1.0.0
- resolution: "stylelint-config-prettier-scss@npm:1.0.0"
- peerDependencies:
- stylelint: ">=15.0.0"
- bin:
- stylelint-config-prettier-scss: bin/check.js
- stylelint-config-prettier-scss-check: bin/check.js
- checksum: 10c0/4d5e1d1c200d4611b5b7bd2d2528cc9e301f26645802a2774aec192c4c2949cbf5a0147eba8b2e6e4ff14a071b03024f3034bb1b4fda37a8ed5a0081a9597d4d
- languageName: node
- linkType: hard
-
"stylelint-config-recommended-scss@npm:^17.0.0":
version: 17.0.0
resolution: "stylelint-config-recommended-scss@npm:17.0.0"