diff --git a/Gemfile.lock b/Gemfile.lock index 17b7bfb4a0..b341ca84b3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -582,7 +582,7 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - rails-i18n (7.0.8) + rails-i18n (7.0.9) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) railties (7.1.3.2) diff --git a/app/controllers/api/v1/featured_tags/suggestions_controller.rb b/app/controllers/api/v1/featured_tags/suggestions_controller.rb index 76633210a1..4f732ed2d5 100644 --- a/app/controllers/api/v1/featured_tags/suggestions_controller.rb +++ b/app/controllers/api/v1/featured_tags/suggestions_controller.rb @@ -12,6 +12,10 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController private def set_recently_used_tags - @recently_used_tags = Tag.recently_used(current_account).where.not(id: current_account.featured_tags).limit(10) + @recently_used_tags = Tag.recently_used(current_account).where.not(id: featured_tag_ids).limit(10) + end + + def featured_tag_ids + current_account.featured_tags.pluck(:tag_id) end end diff --git a/app/javascript/mastodon/components/badge.jsx b/app/javascript/mastodon/components/badge.jsx index 646655c249..5e0b2587bd 100644 --- a/app/javascript/mastodon/components/badge.jsx +++ b/app/javascript/mastodon/components/badge.jsx @@ -7,8 +7,8 @@ import PersonIcon from '@/material-icons/400-24px/person.svg?react'; import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react'; -export const Badge = ({ icon, label, domain }) => ( -
+export const Badge = ({ icon, label, domain, roleId }) => ( +
{icon} {label} {domain && {domain}} @@ -19,6 +19,7 @@ Badge.propTypes = { icon: PropTypes.node, label: PropTypes.node, domain: PropTypes.node, + roleId: PropTypes.string }; Badge.defaultProps = { diff --git a/app/javascript/mastodon/features/account/components/header.jsx b/app/javascript/mastodon/features/account/components/header.jsx index ecb1108ded..e9d6071a21 100644 --- a/app/javascript/mastodon/features/account/components/header.jsx +++ b/app/javascript/mastodon/features/account/components/header.jsx @@ -408,7 +408,7 @@ class Header extends ImmutablePureComponent { } account.get('roles', []).forEach((role) => { - badges.push({role.get('name')}} domain={domain} />); + badges.push({role.get('name')}} domain={domain} roleId={role.get('id')} />); }); return ( diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 1e89f77d45..5527f3d482 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -12,9 +12,9 @@ import { HotKeys } from 'react-hotkeys'; import EditIcon from '@/material-icons/400-24px/edit.svg?react'; import FlagIcon from '@/material-icons/400-24px/flag-fill.svg?react'; +import HeartBrokenIcon from '@/material-icons/400-24px/heart_broken-fill.svg?react'; import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; -import LinkOffIcon from '@/material-icons/400-24px/link_off.svg?react'; import PersonIcon from '@/material-icons/400-24px/person-fill.svg?react'; import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; @@ -371,7 +371,7 @@ class Notification extends ImmutablePureComponent {
- + diff --git a/app/javascript/mastodon/features/notifications/components/relationships_severance_event.jsx b/app/javascript/mastodon/features/notifications/components/relationships_severance_event.jsx index 12bc5f130d..23d0d2eecf 100644 --- a/app/javascript/mastodon/features/notifications/components/relationships_severance_event.jsx +++ b/app/javascript/mastodon/features/notifications/components/relationships_severance_event.jsx @@ -35,7 +35,7 @@ const RelationshipsSeveranceEvent = ({ event, hidden }) => { )}
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 9d972726b7..4670a6e2d6 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -471,7 +471,6 @@ "notification.own_poll": "Анкетата ви приключи", "notification.poll": "Анкета, в която гласувахте, приключи", "notification.reblog": "{name} подсили ваша публикация", - "notification.severedRelationships": "Връзката с {name} е прекъсната", "notification.severed_relationships": "Връзката с {name} е прекъсната", "notification.status": "{name} току-що публикува", "notification.update": "{name} промени публикация", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 3f1d7f858c..c95e8a9502 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -471,7 +471,6 @@ "notification.own_poll": "La teva enquesta ha finalitzat", "notification.poll": "Ha finalitzat una enquesta en què has votat", "notification.reblog": "{name} t'ha impulsat", - "notification.severedRelationships": "S'han eliminat les relacions amb {name}", "notification.severed_relationships": "S'han eliminat les relacions amb {name}", "notification.status": "{name} acaba de publicar", "notification.update": "{name} ha editat un tut", @@ -589,12 +588,12 @@ "refresh": "Actualitza", "regeneration_indicator.label": "Es carrega…", "regeneration_indicator.sublabel": "Es prepara la teva línia de temps d'Inici!", - "relationship_severance_notification.purged_data": "ho han purgat els administradors", + "relationship_severance_notification.purged_data": "purgat pels administradors", "relationship_severance_notification.relationships": "{count, plural, one {# relació} other {# relacions}}", "relationship_severance_notification.types.account_suspension": "S'ha suspès el compte", "relationship_severance_notification.types.domain_block": "S'ha suspès el domini", "relationship_severance_notification.types.user_domain_block": "Heu blocat aquest domini", - "relationship_severance_notification.view": "Veure", + "relationship_severance_notification.view": "Visualitza", "relative_time.days": "{number}d", "relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}", "relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e00e23f9b8..ca32ba298a 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -469,7 +469,6 @@ "notification.own_poll": "Din afstemning er afsluttet", "notification.poll": "En afstemning, hvori du stemte, er slut", "notification.reblog": "{name} boostede dit indlæg", - "notification.severedRelationships": "Forhold med {name} afbrudt", "notification.status": "{name} har netop postet", "notification.update": "{name} redigerede et indlæg", "notification_requests.accept": "Acceptér", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index cb03e7ba3d..bed336f76b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -471,6 +471,7 @@ "notification.own_poll": "Deine Umfrage ist beendet", "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", "notification.reblog": "{name} teilte deinen Beitrag", + "notification.severed_relationships": "Beziehungen zu {name} getrennt", "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", "notification_requests.accept": "Akzeptieren", @@ -587,6 +588,12 @@ "refresh": "Aktualisieren", "regeneration_indicator.label": "Wird geladen …", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", + "relationship_severance_notification.purged_data": "von Administrator*innen entfernt", + "relationship_severance_notification.relationships": "{count, plural, one {# Beziehung} other {# Beziehungen}}", + "relationship_severance_notification.types.account_suspension": "Konto wurde gesperrt", + "relationship_severance_notification.types.domain_block": "Domain wurde gesperrt", + "relationship_severance_notification.types.user_domain_block": "Du hast diese Domain blockiert", + "relationship_severance_notification.view": "Anzeigen", "relative_time.days": "{number} T.", "relative_time.full.days": "vor {number, plural, one {# Tag} other {# Tagen}}", "relative_time.full.hours": "vor {number, plural, one {# Stunde} other {# Stunden}}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 53144cfcbf..fec707be62 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -471,6 +471,7 @@ "notification.own_poll": "Tu encuesta finalizó", "notification.poll": "Finalizó una encuesta en la que votaste", "notification.reblog": "{name} adhirió a tu mensaje", + "notification.severed_relationships": "Relaciones con {name} cortadas", "notification.status": "{name} acaba de enviar un mensaje", "notification.update": "{name} editó un mensaje", "notification_requests.accept": "Aceptar", @@ -587,6 +588,12 @@ "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!", + "relationship_severance_notification.purged_data": "purgada por administradores", + "relationship_severance_notification.relationships": "{count, plural, one {# relación} other {# relaciones}}", + "relationship_severance_notification.types.account_suspension": "La cuenta fue suspendida", + "relationship_severance_notification.types.domain_block": "El dominio fue suspendido", + "relationship_severance_notification.types.user_domain_block": "Bloqueaste este dominio", + "relationship_severance_notification.view": "Ver", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural,one {hace # día} other {hace # días}}", "relative_time.full.hours": "{number, plural,one {hace # hora} other {hace # horas}}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 1a6338c2eb..bd0081d71a 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -471,7 +471,6 @@ "notification.own_poll": "Zure inkesta amaitu da", "notification.poll": "Zuk erantzun duzun inkesta bat bukatu da", "notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari", - "notification.severedRelationships": "{name} erabiltzailearekin zenuen erlazioa galdu da", "notification.severed_relationships": "{name} erabiltzailearekin zenuen erlazioa galdu da", "notification.status": "{name} erabiltzaileak bidalketa egin berri du", "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index b976b505d6..2cf85926fc 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -471,7 +471,6 @@ "notification.own_poll": "Äänestyksesi on päättynyt", "notification.poll": "Kysely, johon osallistuit, on päättynyt", "notification.reblog": "{name} tehosti julkaisuasi", - "notification.severedRelationships": "Suhteet palvelimeen {name} katkenneet", "notification.severed_relationships": "Suhteet palvelimeen {name} katkenneet", "notification.status": "{name} julkaisi juuri", "notification.update": "{name} muokkasi julkaisua", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 5d8cafcd16..3ea13cc7f0 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -471,7 +471,6 @@ "notification.own_poll": "Tín atkvøðugreiðsla er endað", "notification.poll": "Ein atkvøðugreiðsla, har tú hevur atkvøtt, er endað", "notification.reblog": "{name} lyfti tín post", - "notification.severedRelationships": "Tilknýti við {name} avbrotið", "notification.severed_relationships": "Tilknýti við {name} avbrotið", "notification.status": "{name} hevur júst postað", "notification.update": "{name} rættaði ein post", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 9549686d7c..1e1c78f29d 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -89,6 +89,14 @@ "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", "audio.hide": "Masquer l'audio", + "block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateurs non connectés.", + "block_modal.show_less": "Afficher moins", + "block_modal.show_more": "Afficher plus", + "block_modal.they_cant_mention": "Il ne peut pas vous mentionner ou vous suivre.", + "block_modal.they_cant_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.", + "block_modal.they_will_know": "Il peut voir qu'il est bloqué.", + "block_modal.title": "Bloquer l'utilisateur ?", + "block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour sauter ceci la prochaine fois", "bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur", "bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela pourrait être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.", @@ -169,6 +177,7 @@ "confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste?", "confirmations.discard_edit_media.confirm": "Rejeter", "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, voulez-vous quand même les supprimer?", + "confirmations.domain_block.confirm": "Bloquer le serveur", "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", "confirmations.edit.confirm": "Éditer", "confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?", @@ -200,6 +209,27 @@ "dismissable_banner.explore_statuses": "Voici des publications venant de tout le web social gagnant en popularité aujourd’hui. Les nouvelles publications avec plus de boosts et de favoris sont classés plus haut.", "dismissable_banner.explore_tags": "Ces hashtags sont présentement en train de gagner de l'ampleur parmi des personnes sur les serveurs du réseau décentralisé dont celui-ci.", "dismissable_banner.public_timeline": "Ce sont les messages publics les plus récents de personnes sur le web social que les gens de {domain} suivent.", + "domain_block_modal.block": "Bloquer le serveur", + "domain_block_modal.block_account_instead": "Bloquer @{name} à la place", + "domain_block_modal.they_can_interact_with_old_posts": "Les personnes de ce serveur peuvent interagir avec vos anciennes publications.", + "domain_block_modal.they_cant_follow": "Personne de ce serveur ne peut vous suivre.", + "domain_block_modal.they_wont_know": "Il ne saura pas qu'il a été bloqué.", + "domain_block_modal.title": "Bloquer le domaine ?", + "domain_block_modal.you_will_lose_followers": "Tous vos abonnés de ce serveur seront supprimés.", + "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateurs de ce serveur.", + "domain_pill.activitypub_lets_connect": "Cela vous permet de vous connecter et d'interagir avec les autres non seulement sur Mastodon, mais également sur d'autres applications de réseaux sociaux.", + "domain_pill.activitypub_like_language": "ActivityPub est comme une langue que Mastodon utilise pour communiquer avec les autres réseaux sociaux.", + "domain_pill.server": "Serveur", + "domain_pill.their_handle": "Son identifiant :", + "domain_pill.their_server": "Son foyer numérique, là où tous ses posts résident.", + "domain_pill.their_username": "Son identifiant unique sur leur serveur. Il est possible de rencontrer des utilisateurs avec le même nom sur différents serveurs.", + "domain_pill.username": "Nom d’utilisateur", + "domain_pill.whats_in_a_handle": "Qu'est-ce qu'un identifiant ?", + "domain_pill.who_they_are": "Comme un identifiant contient le nom et le service hébergeant une personne, vous pouvez interagir sur .", + "domain_pill.who_you_are": "Comme un identifiant indique votre nom et le service vous hébergeant, vous pouvez interagir avec .", + "domain_pill.your_handle": "Votre identifiant :", + "domain_pill.your_server": "Votre foyer numérique, là où vos messages résident. Vous souhaitez changer ? Lancez un transfert vers un autre serveur quand vous le voulez et vos abonné·e·s suivront automatiquement.", + "domain_pill.your_username": "Votre identifiant unique sur ce serveur. Il est possible de trouver des utilisateurs ayant le même nom d'utilisateur sur différents serveurs.", "embed.instructions": "Intégrez cette publication à votre site en copiant le code ci-dessous.", "embed.preview": "Voici comment il apparaîtra:", "emoji_button.activity": "Activité", @@ -236,6 +266,7 @@ "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Quand des membres de cette liste publieront de nouvelles publications, elles apparaîtront ici.", "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", "empty_column.mutes": "Vous n’avez masqué aucun compte pour le moment.", + "empty_column.notification_requests": "C'est fini ! Il n'y a plus rien ici. Lorsque vous recevez de nouvelles notifications, elles apparaitront ici conformément à vos préférences.", "empty_column.notifications": "Vous n'avez pas encore de notifications. Quand d'autres personnes interagissent avec vous, vous en verrez ici.", "empty_column.public": "Il n’y a rien ici! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres serveurs pour remplir le fil public", "error.unexpected_crash.explanation": "En raison d’un bogue dans notre code ou d’un problème de compatibilité avec votre navigateur, cette page n’a pas pu être affichée correctement.", @@ -396,6 +427,15 @@ "loading_indicator.label": "Chargement…", "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déménagé sur {movedToAccount}.", + "mute_modal.hide_from_notifications": "Cacher des notifications", + "mute_modal.hide_options": "Masquer les options", + "mute_modal.indefinite": "Jusqu'à ce que je les réactive", + "mute_modal.show_options": "Afficher les options", + "mute_modal.they_can_mention_and_follow": "Ils peuvent vous mentionner et vous suivre, mais vous ne les verrez pas.", + "mute_modal.they_wont_know": "Ils ne sauront pas qu'ils ont été rendus silencieux.", + "mute_modal.title": "Rendre cet utilisateur silencieux ?", + "mute_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.", + "mute_modal.you_wont_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.", "navigation_bar.about": "À propos", "navigation_bar.advanced_interface": "Ouvrir dans l’interface avancée", "navigation_bar.blocks": "Comptes bloqués", @@ -431,8 +471,13 @@ "notification.own_poll": "Votre sondage est terminé", "notification.poll": "Un sondage auquel vous avez participé est terminé", "notification.reblog": "{name} a boosté votre message", + "notification.severed_relationships": "Relation avec {name} rompues", "notification.status": "{name} vient de publier", "notification.update": "{name} a modifié une publication", + "notification_requests.accept": "Accepter", + "notification_requests.dismiss": "Rejeter", + "notification_requests.notifications_from": "Notifications de {name}", + "notification_requests.title": "Notifications filtrées", "notifications.clear": "Effacer notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications?", "notifications.column_settings.admin.report": "Nouveaux signalements:", @@ -464,6 +509,15 @@ "notifications.permission_denied": "Les notifications de bureau ne sont pas disponibles en raison d'une demande de permission de navigateur précédemment refusée", "notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car l’autorisation du navigateur a précedemment été refusée", "notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car l’autorisation requise n’a pas été accordée.", + "notifications.policy.filter_new_accounts.hint": "Créés au cours des derniers {days, plural, one {un jour} other {# jours}}", + "notifications.policy.filter_new_accounts_title": "Nouveaux comptes", + "notifications.policy.filter_not_followers_hint": "Incluant les personnes qui vous suivent depuis moins de {days, plural, one {un jour} other {# jours}}", + "notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas", + "notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement", + "notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas", + "notifications.policy.filter_private_mentions_hint": "Filtré sauf si c'est en réponse à une mention de vous ou si vous suivez l'expéditeur", + "notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées", + "notifications.policy.title": "Filtrer les notifications de…", "notifications_permission_banner.enable": "Activer les notifications de bureau", "notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.", "notifications_permission_banner.title": "Ne rien rater", @@ -534,6 +588,12 @@ "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", "regeneration_indicator.sublabel": "Votre fil d'accueil est en cours de préparation!", + "relationship_severance_notification.purged_data": "supprimées par les administrateurs", + "relationship_severance_notification.relationships": "{count, plural, one {# relation} other {# relations}}", + "relationship_severance_notification.types.account_suspension": "Le compte a été suspendu", + "relationship_severance_notification.types.domain_block": "Le domaine a été suspendu", + "relationship_severance_notification.types.user_domain_block": "Vous avez bloqué ce domaine", + "relationship_severance_notification.view": "Afficher", "relative_time.days": "{number} j", "relative_time.full.days": "il y a {number, plural, one {# jour} other {# jours}}", "relative_time.full.hours": "il y a {number, plural, one {# heure} other {# heures}}", @@ -640,9 +700,11 @@ "status.direct": "Mention privée @{name}", "status.direct_indicator": "Mention privée", "status.edit": "Modifier", + "status.edited": "Dernière modification le {date}", "status.edited_x_times": "Modifiée {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", + "status.favourites": "{count, plural, one {favori} other {favoris}}", "status.filter": "Filtrer cette publication", "status.filtered": "Filtrée", "status.hide": "Masquer le message", @@ -663,6 +725,7 @@ "status.reblog": "Booster", "status.reblog_private": "Booster avec visibilité originale", "status.reblogged_by": "{name} a boosté", + "status.reblogs": "{count, plural, one {boost} other {boosts}}", "status.reblogs.empty": "Personne n’a encore boosté cette publication. Lorsque quelqu’un le fera, elle apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des signets", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 29b4d56a4f..af5ed66bd8 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -89,6 +89,14 @@ "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", "audio.hide": "Masquer l'audio", + "block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateurs non connectés.", + "block_modal.show_less": "Afficher moins", + "block_modal.show_more": "Afficher plus", + "block_modal.they_cant_mention": "Il ne peut pas vous mentionner ou vous suivre.", + "block_modal.they_cant_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.", + "block_modal.they_will_know": "Il peut voir qu'il est bloqué.", + "block_modal.title": "Bloquer l'utilisateur ?", + "block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur", "bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela peut être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.", @@ -169,6 +177,7 @@ "confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste ?", "confirmations.discard_edit_media.confirm": "Rejeter", "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, les supprimer quand même ?", + "confirmations.domain_block.confirm": "Bloquer le serveur", "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", "confirmations.edit.confirm": "Modifier", "confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?", @@ -200,6 +209,27 @@ "dismissable_banner.explore_statuses": "Ces messages venant de tout le web social gagnent en popularité aujourd’hui. Les nouveaux messages avec plus de boosts et de favoris sont classés plus haut.", "dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.", "dismissable_banner.public_timeline": "Ce sont les posts publics les plus récents de personnes sur le web social que les gens sur {domain} suivent.", + "domain_block_modal.block": "Bloquer le serveur", + "domain_block_modal.block_account_instead": "Bloquer @{name} à la place", + "domain_block_modal.they_can_interact_with_old_posts": "Les personnes de ce serveur peuvent interagir avec vos anciennes publications.", + "domain_block_modal.they_cant_follow": "Personne de ce serveur ne peut vous suivre.", + "domain_block_modal.they_wont_know": "Il ne saura pas qu'il a été bloqué.", + "domain_block_modal.title": "Bloquer le domaine ?", + "domain_block_modal.you_will_lose_followers": "Tous vos abonnés de ce serveur seront supprimés.", + "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateurs de ce serveur.", + "domain_pill.activitypub_lets_connect": "Cela vous permet de vous connecter et d'interagir avec les autres non seulement sur Mastodon, mais également sur d'autres applications de réseaux sociaux.", + "domain_pill.activitypub_like_language": "ActivityPub est comme une langue que Mastodon utilise pour communiquer avec les autres réseaux sociaux.", + "domain_pill.server": "Serveur", + "domain_pill.their_handle": "Son identifiant :", + "domain_pill.their_server": "Son foyer numérique, là où tous ses posts résident.", + "domain_pill.their_username": "Son identifiant unique sur leur serveur. Il est possible de rencontrer des utilisateurs avec le même nom sur différents serveurs.", + "domain_pill.username": "Nom d’utilisateur", + "domain_pill.whats_in_a_handle": "Qu'est-ce qu'un identifiant ?", + "domain_pill.who_they_are": "Comme un identifiant contient le nom et le service hébergeant une personne, vous pouvez interagir sur .", + "domain_pill.who_you_are": "Comme un identifiant indique votre nom et le service vous hébergeant, vous pouvez interagir avec .", + "domain_pill.your_handle": "Votre identifiant :", + "domain_pill.your_server": "Votre foyer numérique, là où vos messages résident. Vous souhaitez changer ? Lancez un transfert vers un autre serveur quand vous le voulez et vos abonné·e·s suivront automatiquement.", + "domain_pill.your_username": "Votre identifiant unique sur ce serveur. Il est possible de trouver des utilisateurs ayant le même nom d'utilisateur sur différents serveurs.", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", @@ -236,6 +266,7 @@ "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Quand des membres de cette liste publieront de nouveaux messages, ils apparaîtront ici.", "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", "empty_column.mutes": "Vous n’avez masqué aucun compte pour le moment.", + "empty_column.notification_requests": "C'est fini ! Il n'y a plus rien ici. Lorsque vous recevez de nouvelles notifications, elles apparaitront ici conformément à vos préférences.", "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.", "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres serveurs pour remplir le fil public", "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec votre navigateur, cette page n’a pas pu être affichée correctement.", @@ -396,6 +427,15 @@ "loading_indicator.label": "Chargement…", "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.", + "mute_modal.hide_from_notifications": "Cacher des notifications", + "mute_modal.hide_options": "Masquer les options", + "mute_modal.indefinite": "Jusqu'à ce que je les réactive", + "mute_modal.show_options": "Afficher les options", + "mute_modal.they_can_mention_and_follow": "Ils peuvent vous mentionner et vous suivre, mais vous ne les verrez pas.", + "mute_modal.they_wont_know": "Ils ne sauront pas qu'ils ont été rendus silencieux.", + "mute_modal.title": "Rendre cet utilisateur silencieux ?", + "mute_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.", + "mute_modal.you_wont_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.", "navigation_bar.about": "À propos", "navigation_bar.advanced_interface": "Ouvrir dans l’interface avancée", "navigation_bar.blocks": "Comptes bloqués", @@ -431,8 +471,13 @@ "notification.own_poll": "Votre sondage est terminé", "notification.poll": "Un sondage auquel vous avez participé vient de se terminer", "notification.reblog": "{name} a partagé votre message", + "notification.severed_relationships": "Relation avec {name} rompues", "notification.status": "{name} vient de publier", "notification.update": "{name} a modifié un message", + "notification_requests.accept": "Accepter", + "notification_requests.dismiss": "Rejeter", + "notification_requests.notifications_from": "Notifications de {name}", + "notification_requests.title": "Notifications filtrées", "notifications.clear": "Effacer les notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?", "notifications.column_settings.admin.report": "Nouveaux signalements :", @@ -464,6 +509,15 @@ "notifications.permission_denied": "Impossible d’activer les notifications de bureau car l’autorisation a été refusée.", "notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car l’autorisation du navigateur a été refusée avant", "notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car l’autorisation requise n’a pas été accordée.", + "notifications.policy.filter_new_accounts.hint": "Créés au cours des derniers {days, plural, one {un jour} other {# jours}}", + "notifications.policy.filter_new_accounts_title": "Nouveaux comptes", + "notifications.policy.filter_not_followers_hint": "Incluant les personnes qui vous suivent depuis moins de {days, plural, one {un jour} other {# jours}}", + "notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas", + "notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement", + "notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas", + "notifications.policy.filter_private_mentions_hint": "Filtré sauf si c'est en réponse à une mention de vous ou si vous suivez l'expéditeur", + "notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées", + "notifications.policy.title": "Filtrer les notifications de…", "notifications_permission_banner.enable": "Activer les notifications de bureau", "notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.", "notifications_permission_banner.title": "Toujours au courant", @@ -534,6 +588,12 @@ "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", "regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !", + "relationship_severance_notification.purged_data": "supprimées par les administrateurs", + "relationship_severance_notification.relationships": "{count, plural, one {# relation} other {# relations}}", + "relationship_severance_notification.types.account_suspension": "Le compte a été suspendu", + "relationship_severance_notification.types.domain_block": "Le domaine a été suspendu", + "relationship_severance_notification.types.user_domain_block": "Vous avez bloqué ce domaine", + "relationship_severance_notification.view": "Afficher", "relative_time.days": "{number} j", "relative_time.full.days": "il y a {number, plural, one {# jour} other {# jours}}", "relative_time.full.hours": "il y a {number, plural, one {# heure} other {# heures}}", @@ -640,9 +700,11 @@ "status.direct": "Mention privée @{name}", "status.direct_indicator": "Mention privée", "status.edit": "Modifier", + "status.edited": "Dernière modification le {date}", "status.edited_x_times": "Modifié {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", + "status.favourites": "{count, plural, one {favori} other {favoris}}", "status.filter": "Filtrer ce message", "status.filtered": "Filtré", "status.hide": "Masquer le message", @@ -663,6 +725,7 @@ "status.reblog": "Partager", "status.reblog_private": "Partager à l’audience originale", "status.reblogged_by": "{name} a partagé", + "status.reblogs": "{count, plural, one {boost} other {boosts}}", "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 4696d50eac..9c566909a7 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -471,7 +471,6 @@ "notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch", "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", - "notification.severedRelationships": "Chaidh na dàimhean le {name} a dhealachadh", "notification.severed_relationships": "Chaidh na dàimhean le {name} a dhealachadh", "notification.status": "Phostaich {name} rud", "notification.update": "Dheasaich {name} post", @@ -510,9 +509,9 @@ "notifications.permission_denied": "Chan eil brathan deasga ri fhaighinn on a chaidh iarrtas ceadan a’ bhrabhsair a dhiùltadh cheana", "notifications.permission_denied_alert": "Cha ghabh brathan deasga a chur an comas on a chaidh iarrtas ceadan a’ bhrabhsair a dhiùltadh cheana", "notifications.permission_required": "Chan eil brathan deasga ri fhaighinn on nach deach an cead riatanach a thoirt seachad.", - "notifications.policy.filter_new_accounts.hint": "Chaidh a chruthachadh o chionn {count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", + "notifications.policy.filter_new_accounts.hint": "Chaidh a chruthachadh o chionn {days, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", "notifications.policy.filter_new_accounts_title": "Cunntasan ùra", - "notifications.policy.filter_not_followers_hint": "A’ gabhail a-staigh an fheadhainn a lean ort nas lugha na {count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} seo chaidh", + "notifications.policy.filter_not_followers_hint": "A’ gabhail a-staigh an fheadhainn a lean ort nas lugha na {days, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} seo chaidh", "notifications.policy.filter_not_followers_title": "Daoine nach eil gad leantainn", "notifications.policy.filter_not_following_hint": "Gus an aontaich thu riutha a làimh", "notifications.policy.filter_not_following_title": "Daoine nach eil thu a’ leantainn", @@ -590,6 +589,7 @@ "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha do dhachaigh ’ga ullachadh!", "relationship_severance_notification.purged_data": "chaidh a phurgaideachadh leis na rianairean", + "relationship_severance_notification.relationships": "{count, plural, one {# dàimh} two {# dhàimh} few {# dàimhean} other {# dàimh}}", "relationship_severance_notification.types.account_suspension": "Chaidh cunntas a chur à rèim", "relationship_severance_notification.types.domain_block": "Chaidh àrainn a chur à rèim", "relationship_severance_notification.types.user_domain_block": "Bhac thu an àrainn seo", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 57882196f3..57d13205fb 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -471,6 +471,7 @@ "notification.own_poll": "A túa enquisa rematou", "notification.poll": "Rematou a enquisa na que votaches", "notification.reblog": "{name} compartiu a túa publicación", + "notification.severed_relationships": "Cortouse a relación con {name}", "notification.status": "{name} publicou", "notification.update": "{name} editou unha publicación", "notification_requests.accept": "Aceptar", @@ -587,6 +588,12 @@ "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", + "relationship_severance_notification.purged_data": "purgada pola administración", + "relationship_severance_notification.relationships": "{count, plural, one {# relación} other {# relacións}}", + "relationship_severance_notification.types.account_suspension": "A conta foi suspendida", + "relationship_severance_notification.types.domain_block": "O dominio foi suspendido", + "relationship_severance_notification.types.user_domain_block": "Bloqueaches este dominio", + "relationship_severance_notification.view": "Ver", "relative_time.days": "{number}d", "relative_time.full.days": "hai {number, plural, one {# día} other {# días}}", "relative_time.full.hours": "hai {number, plural, one {# hora} other {# horas}}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 48f028f3b5..1f65c3549d 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -248,7 +248,7 @@ "emoji_button.symbols": "סמלים", "emoji_button.travel": "טיולים ואתרים", "empty_column.account_hides_collections": "המשתמש.ת בחר.ה להסתיר מידע זה", - "empty_column.account_suspended": "חשבון מושהה", + "empty_column.account_suspended": "חשבון מושעה", "empty_column.account_timeline": "אין עדיין אף הודעה!", "empty_column.account_unavailable": "פרופיל לא זמין", "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", @@ -471,6 +471,7 @@ "notification.own_poll": "הסקר שלך הסתיים", "notification.poll": "סקר שהצבעת בו הסתיים", "notification.reblog": "הודעתך הודהדה על ידי {name}", + "notification.severed_relationships": "חתכתם כל קשר עם {name}", "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו הודעה", "notification_requests.accept": "לקבל", @@ -587,6 +588,12 @@ "refresh": "רענון", "regeneration_indicator.label": "טוען…", "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", + "relationship_severance_notification.purged_data": "המידע נמחק על ידי ההנהלה", + "relationship_severance_notification.relationships": "{count, plural, one {קשר אחד} other {# קשרים}}", + "relationship_severance_notification.types.account_suspension": "החשבון הושעה", + "relationship_severance_notification.types.domain_block": "השרת הושעה", + "relationship_severance_notification.types.user_domain_block": "חסמת שרת זה", + "relationship_severance_notification.view": "הצג", "relative_time.days": "{number} ימים", "relative_time.full.days": "לפני {number, plural, one {# יום} other {# ימים}}", "relative_time.full.hours": "לפני {number, plural, one {# שעה} other {# שעות}}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 760063ab75..d9dfd01a26 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -471,7 +471,6 @@ "notification.own_poll": "A szavazásod véget ért", "notification.poll": "Egy szavazás, melyben részt vettél, véget ért", "notification.reblog": "{name} megtolta a bejegyzésedet", - "notification.severedRelationships": "A kapcsolatok megszakítva ezzel: {name}", "notification.severed_relationships": "A kapcsolatok megszakítva ezzel: {name}", "notification.status": "{name} bejegyzést tett közzé", "notification.update": "{name} szerkesztett egy bejegyzést", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 3b4ea15f9e..7d5df9198d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -89,6 +89,14 @@ "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", "audio.hide": "Nascondi audio", + "block_modal.remote_users_caveat": "Chiederemo al server {domain} di rispettare la tua decisione. Tuttavia, la conformità non è garantita poiché alcuni server potrebbero gestire i blocchi in modo diverso. I post pubblici potrebbero essere ancora visibili agli utenti che non hanno effettuato l'accesso.", + "block_modal.show_less": "Mostra meno", + "block_modal.show_more": "Mostra di più", + "block_modal.they_cant_mention": "Non possono menzionarti o seguirti.", + "block_modal.they_cant_see_posts": "Non possono vedere i tuoi post e tu non vedrai i loro.", + "block_modal.they_will_know": "Possono vedere che sono bloccati.", + "block_modal.title": "Bloccare l'utente?", + "block_modal.you_wont_see_mentions": "Non vedrai i post che li menzionano.", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio, la prossima volta", "bundle_column_error.copy_stacktrace": "Copia rapporto sull'errore", "bundle_column_error.error.body": "Impossibile rendedrizzare la pagina richiesta. Potrebbe dipendere da un bug nel nostro codice o da un problema di compatibilità di un browser.", @@ -169,6 +177,7 @@ "confirmations.delete_list.message": "Sei sicuro di voler eliminare permanentemente questa lista?", "confirmations.discard_edit_media.confirm": "Scarta", "confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?", + "confirmations.domain_block.confirm": "Blocca il server", "confirmations.domain_block.message": "Sei davvero sicuro di voler bloccare l'intero {domain}? In gran parte dei casi, è sufficiente e preferibile bloccare o silenziare alcuni profili. Non visualizzerai i contenuti da quel dominio in alcuna cronologia pubblica o tra le tue notifiche. I tuoi seguaci da quel dominio saranno rimossi.", "confirmations.edit.confirm": "Modifica", "confirmations.edit.message": "Modificare ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?", @@ -200,6 +209,27 @@ "dismissable_banner.explore_statuses": "Questi sono post da tutto il social web che stanno guadagnando popolarità oggi. I post più recenti con più condivisioni e preferiti sono classificati più in alto.", "dismissable_banner.explore_tags": "Questi hashtag stanno ottenendo popolarità tra le persone su questo e altri server della rete decentralizzata, al momento.", "dismissable_banner.public_timeline": "Questi sono i post pubblici più recenti di persone sul social che le persone su {domain} seguono.", + "domain_block_modal.block": "Blocca il server", + "domain_block_modal.block_account_instead": "Blocca invece @{name}", + "domain_block_modal.they_can_interact_with_old_posts": "Le persone da questo server possono interagire con i tuoi vecchi post.", + "domain_block_modal.they_cant_follow": "Nessuno da questo server può seguirti.", + "domain_block_modal.they_wont_know": "Non sapranno di essere stati bloccati.", + "domain_block_modal.title": "Bloccare il dominio?", + "domain_block_modal.you_will_lose_followers": "Tutti i tuoi seguaci da questo server verranno rimossi.", + "domain_block_modal.you_wont_see_posts": "Non vedrai post o notifiche dagli utenti su questo server.", + "domain_pill.activitypub_lets_connect": "Ti consente di connetterti e interagire con le persone non solo su Mastodon, ma anche su diverse app social.", + "domain_pill.activitypub_like_language": "ActivityPub è come la lingua che Mastodon parla con altri social network.", + "domain_pill.server": "Server", + "domain_pill.their_handle": "Il loro nome univoco:", + "domain_pill.their_server": "La loro casa digitale, dove risiedono tutti i loro post.", + "domain_pill.their_username": "Il loro identificatore univoco sul loro server. È possibile trovare utenti con lo stesso nome utente su server diversi.", + "domain_pill.username": "Nome utente", + "domain_pill.whats_in_a_handle": "Cosa c'è in un nome univoco?", + "domain_pill.who_they_are": "Poiché i nomi univoci indicano chi sia qualcuno e dove si trovi, puoi interagire con le persone attraverso la rete sociale delle .", + "domain_pill.who_you_are": "Poiché il tuo nome univoco indica chi tu sia e dove ti trovi, le persone possono interagire con te sulla rete sociale delle .", + "domain_pill.your_handle": "Il tuo nome univoco:", + "domain_pill.your_server": "La tua casa digitale, dove vivono tutti i tuoi post. Non ti piace questa? Cambia server in qualsiasi momento e porta con te anche i tuoi seguaci.", + "domain_pill.your_username": "Il tuo identificatore univoco su questo server. È possibile trovare utenti con lo stesso nome utente su server diversi.", "embed.instructions": "Incorpora questo post sul tuo sito web, copiando il seguente codice.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", @@ -397,6 +427,15 @@ "loading_indicator.label": "Caricamento…", "media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}", "moved_to_account_banner.text": "Il tuo profilo {disabledAccount} è correntemente disabilitato perché ti sei spostato a {movedToAccount}.", + "mute_modal.hide_from_notifications": "Nascondi dalle notifiche", + "mute_modal.hide_options": "Nascondi le opzioni", + "mute_modal.indefinite": "Finché io non le riattivo", + "mute_modal.show_options": "Mostre le opzioni", + "mute_modal.they_can_mention_and_follow": "Possono menzionarti e seguirti, ma non li vedrai.", + "mute_modal.they_wont_know": "Non sapranno di essere stati silenziati.", + "mute_modal.title": "Silenziare l'utente?", + "mute_modal.you_wont_see_mentions": "Non vedrai i post che li menzionano.", + "mute_modal.you_wont_see_posts": "Possono ancora vedere i tuoi post, ma tu non vedrai i loro.", "navigation_bar.about": "Info", "navigation_bar.advanced_interface": "Apri nell'interfaccia web avanzata", "navigation_bar.blocks": "Utenti bloccati", @@ -432,6 +471,7 @@ "notification.own_poll": "Il tuo sondaggio è terminato", "notification.poll": "Un sondaggio in cui hai votato è terminato", "notification.reblog": "{name} ha rebloggato il tuo post", + "notification.severed_relationships": "Relazioni interrotte con {name}", "notification.status": "{name} ha appena pubblicato un post", "notification.update": "{name} ha modificato un post", "notification_requests.accept": "Accetta", @@ -548,6 +588,12 @@ "refresh": "Ricarica", "regeneration_indicator.label": "Caricamento…", "regeneration_indicator.sublabel": "Il feed della tua home è in preparazione!", + "relationship_severance_notification.purged_data": "rimossi dagli amministratori", + "relationship_severance_notification.relationships": "{count, plural,one {# relazione} other {# relazioni}}", + "relationship_severance_notification.types.account_suspension": "L'account è stato sospeso", + "relationship_severance_notification.types.domain_block": "Il dominio è stato sospeso", + "relationship_severance_notification.types.user_domain_block": "Hai bloccato questo dominio", + "relationship_severance_notification.view": "Visualizza", "relative_time.days": "{number}g", "relative_time.full.days": "{number, plural, one {# giorno} other {# giorni}} fa", "relative_time.full.hours": "{number, plural, one {# ora} other {# ore}} fa", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 5ccd652a14..da354f3910 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -471,7 +471,6 @@ "notification.own_poll": "설문을 마침", "notification.poll": "참여한 설문이 종료됨", "notification.reblog": "{name} 님이 부스트했습니다", - "notification.severedRelationships": "{name} 님과의 관계가 단절되었습니다", "notification.severed_relationships": "{name} 님과의 관계가 단절되었습니다", "notification.status": "{name} 님이 방금 게시물을 올렸습니다", "notification.update": "{name} 님이 게시물을 수정했습니다", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 547351af8c..1eb8aa4abc 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -213,6 +213,7 @@ "domain_block_modal.they_wont_know": "No savra ke tiene sido blokado.", "domain_block_modal.title": "Bloka el domeno?", "domain_block_modal.you_will_lose_followers": "Se efasaran todos tus suivantes de este sirvidor.", + "domain_block_modal.you_wont_see_posts": "No veras publikasyones ni avizos de utilizadores en este sirvidor.", "domain_pill.server": "Sirvidor", "domain_pill.their_handle": "Su alias:", "domain_pill.username": "Nombre de utilizador", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f60c426bc2..4be0808f23 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -471,7 +471,6 @@ "notification.own_poll": "Jouw peiling is beëindigd", "notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd", "notification.reblog": "{name} boostte jouw bericht", - "notification.severedRelationships": "Volgrelaties met {name} verbroken", "notification.severed_relationships": "Volgrelaties met {name} verbroken", "notification.status": "{name} heeft zojuist een bericht geplaatst", "notification.update": "{name} heeft een bericht bewerkt", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index a70d607d4d..7742d83e17 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -49,7 +49,7 @@ "account.media": "Media", "account.mention": "Nemn @{name}", "account.moved_to": "{name} seier at deira nye konto no er:", - "account.mute": "Målbind @{name}", + "account.mute": "Demp @{name}", "account.mute_notifications_short": "Demp varslingar", "account.mute_short": "Demp", "account.muted": "Målbunden", @@ -69,9 +69,9 @@ "account.unblock_short": "Stopp blokkering", "account.unendorse": "Ikkje vis på profil", "account.unfollow": "Slutt å fylgja", - "account.unmute": "Opphev målbinding av @{name}", + "account.unmute": "Opphev demping av @{name}", "account.unmute_notifications_short": "Opphev demping av varslingar", - "account.unmute_short": "Opphev målbinding", + "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å leggja til merknad", "admin.dashboard.daily_retention": "Mengda brukarar aktive ved dagar etter registrering", "admin.dashboard.monthly_retention": "Mengda brukarar aktive ved månader etter registrering", @@ -178,12 +178,12 @@ "confirmations.discard_edit_media.confirm": "Forkast", "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediaskildringa eller førehandsvisinga. Vil du forkasta dei likevel?", "confirmations.domain_block.confirm": "Blokker tenaren", - "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil skjula heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå domenet i fødererte tidsliner eller i varsla dine. Fylgjarane dine frå domenet vert fjerna.", + "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil skjula heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller dempingar. Du kjem ikkje til å sjå innhald frå domenet i fødererte tidsliner eller i varsla dine. Fylgjarane dine frå domenet vert fjerna.", "confirmations.edit.confirm": "Rediger", "confirmations.edit.message": "Å redigera no vil overskriva den meldinga du er i ferd med å skriva. Er du sikker på at du vil halda fram?", "confirmations.logout.confirm": "Logg ut", "confirmations.logout.message": "Er du sikker på at du vil logga ut?", - "confirmations.mute.confirm": "Målbind", + "confirmations.mute.confirm": "Demp", "confirmations.redraft.confirm": "Slett & skriv på nytt", "confirmations.redraft.message": "Er du sikker på at du vil sletta denne statusen og skriva han på nytt? Då misser du favorittar og framhevingar, og svar til det opprinnelege innlegget vert foreldrelause.", "confirmations.reply.confirm": "Svar", @@ -471,7 +471,6 @@ "notification.own_poll": "Rundspørjinga di er ferdig", "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva innlegget ditt", - "notification.severedRelationships": "Forholda med {name} er brotne", "notification.severed_relationships": "Forholda med {name} er brotne", "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte eit innlegg", @@ -623,7 +622,7 @@ "report.comment.title": "Er det noko anna du meiner me bør vite?", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", - "report.mute": "Målbind", + "report.mute": "Demp", "report.mute_explanation": "Du vil ikkje lenger sjå innlegga deira. Dei kan framleis fylgje deg og sjå innlegga dine, men vil ikkje vite at du har valt å ikkje sjå innlegga deira.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", @@ -694,7 +693,7 @@ "status.block": "Blokker @{name}", "status.bookmark": "Set bokmerke", "status.cancel_reblog_private": "Opphev framheving", - "status.cannot_reblog": "Denne posten kan ikkje framhevast", + "status.cannot_reblog": "Du kan ikkje framheva dette innlegget", "status.copy": "Kopier lenke til status", "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", @@ -717,8 +716,8 @@ "status.media_hidden": "Mediet er gøymt", "status.mention": "Nemn @{name}", "status.more": "Meir", - "status.mute": "Målbind @{name}", - "status.mute_conversation": "Målbind samtale", + "status.mute": "Demp @{name}", + "status.mute_conversation": "Demp samtale", "status.open": "Utvid denne statusen", "status.pin": "Fest på profil", "status.pinned": "Festa tut", @@ -742,11 +741,11 @@ "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", "status.show_original": "Vis original", - "status.title.with_attachments": "{user} postet {attachmentCount, plural, one {et vedlegg} other {{attachmentCount} vedlegg}}", + "status.title.with_attachments": "{user} la ut {attachmentCount, plural, one {eitt vedlegg} other {{attachmentCount} vedlegg}}", "status.translate": "Omset", "status.translated_from_with": "Omsett frå {lang} ved bruk av {provider}", "status.uncached_media_warning": "Førehandsvisning er ikkje tilgjengeleg", - "status.unmute_conversation": "Opphev målbinding av samtalen", + "status.unmute_conversation": "Opphev demping av samtalen", "status.unpin": "Løys frå profil", "subscribed_languages.lead": "Kun innlegg på valde språk vil bli dukke opp i heimestraumen din og i listene dine etter denne endringa. For å motta innlegg på alle språk, la vere å velje nokon.", "subscribed_languages.save": "Lagre endringar", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 3387718aae..dd21d3030a 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -205,8 +205,10 @@ "dismissable_banner.explore_tags": "Toto sú hashtagy zo sociálnej siete, ktoré sú dnes populárne. Novšie hashtagy používané viacerými ľuďmi sú radené vyššie.", "dismissable_banner.public_timeline": "Toto sú najnovšie verejné príspevky od účtov na sociálnej sieti, ktoré sú sledované účtami z {domain}.", "domain_block_modal.block": "Blokovať server", + "domain_block_modal.block_account_instead": "Namiesto toho zablokuj @{name}", "domain_block_modal.title": "Blokovať doménu?", "domain_pill.server": "Server", + "domain_pill.their_server": "Ich digitálny domov, kde žijú všetky ich príspevky.", "domain_pill.username": "Používateľské meno", "embed.instructions": "Tento príspevok môžete pridať na svoju webovú stránku použitím tohto kódu.", "embed.preview": "Takto bude vyzerať:", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index b1923c7dd6..d31b410804 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -471,7 +471,6 @@ "notification.own_poll": "Vaša anketa je zaključena", "notification.poll": "Anketa, v kateri ste sodelovali, je zaključena", "notification.reblog": "{name} je izpostavila/a vašo objavo", - "notification.severedRelationships": "Veze z {name} prekinjene", "notification.severed_relationships": "Veze z {name} prekinjene", "notification.status": "{name} je pravkar objavil/a", "notification.update": "{name} je uredil(a) objavo", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 7f842c6bd8..a5122d098b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -470,6 +470,7 @@ "notification.own_poll": "Pyetësori juaj ka përfunduar", "notification.poll": "Ka përfunduar një pyetësor ku keni votuar", "notification.reblog": "{name} përforcoi mesazhin tuaj", + "notification.severed_relationships": "Marrëdhëniet me {name} u ndërprenë", "notification.status": "{name} sapo postoi", "notification.update": "{name} përpunoi një postim", "notification_requests.accept": "Pranoje", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 1bfd3e480f..016007f499 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -89,6 +89,7 @@ "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obehandlad)", "audio.hide": "Dölj audio", + "block_modal.remote_users_caveat": "Vi kommer att be servern {domain} att respektera ditt beslut. Dock garanteras inte efterlevnad eftersom vissa servrar kan hantera blockeringar på olika sätt. Offentliga inlägg kan fortfarande vara synliga för icke-inloggade användare.", "block_modal.show_less": "Visa mindre", "block_modal.show_more": "Visa mer", "block_modal.they_cant_mention": "De kan inte nämna eller följa dig.", @@ -212,8 +213,12 @@ "domain_block_modal.block_account_instead": "Blockera @{name} istället", "domain_block_modal.they_can_interact_with_old_posts": "Personer från denna server kan interagera med dina gamla inlägg.", "domain_block_modal.they_cant_follow": "Ingen från denna server kan följa dig.", + "domain_block_modal.they_wont_know": "De kommer inte veta att de har blockerats.", "domain_block_modal.title": "Blockera domän?", "domain_block_modal.you_will_lose_followers": "Alla dina följare från denna server kommer att tas bort.", + "domain_block_modal.you_wont_see_posts": "Du kommer inte att se inlägg eller meddelanden från användare på den här servern.", + "domain_pill.activitypub_lets_connect": "Det låter dig ansluta och interagera med människor inte bara på Mastodon, men även på andra sociala appar.", + "domain_pill.activitypub_like_language": "ActivityPub är som språket Mastodon talar med andra sociala nätverk.", "domain_pill.server": "Server", "domain_pill.their_username": "Deras unika identifierare på deras server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.", "domain_pill.username": "Användarnamn", @@ -415,6 +420,8 @@ "mute_modal.hide_options": "Dölj alternativ", "mute_modal.show_options": "Visa alternativ", "mute_modal.they_can_mention_and_follow": "De kan nämna och följa dig, men du ser dem inte.", + "mute_modal.they_wont_know": "De vet inte att de har blivit tysta.", + "mute_modal.title": "Tysta användare?", "mute_modal.you_wont_see_mentions": "Du kommer inte att se inlägg som nämner dem.", "mute_modal.you_wont_see_posts": "De kan fortfarande se dina inlägg, men du kan inte se deras.", "navigation_bar.about": "Om", @@ -454,6 +461,10 @@ "notification.reblog": "{name} boostade ditt inlägg", "notification.status": "{name} publicerade just ett inlägg", "notification.update": "{name} redigerade ett inlägg", + "notification_requests.accept": "Godkänn", + "notification_requests.dismiss": "Avfärda", + "notification_requests.notifications_from": "Aviseringar från {name}", + "notification_requests.title": "Filtrerade meddelanden", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", "notifications.column_settings.admin.report": "Nya rapporter:", @@ -485,9 +496,12 @@ "notifications.permission_denied": "Skrivbordsaviseringar är otillgängliga på grund av tidigare nekade förfrågningar om behörighet i webbläsaren", "notifications.permission_denied_alert": "Skrivbordsaviseringar kan inte aktiveras, eftersom att webbläsarens behörighet har nekats innan", "notifications.permission_required": "Skrivbordsaviseringar är otillgängliga eftersom att rättigheten som krävs inte har godkänts.", + "notifications.policy.filter_new_accounts.hint": "Skapad inom de senaste {days, plural, one {dagen} other {# dagarna}}", "notifications.policy.filter_new_accounts_title": "Nya konton", "notifications.policy.filter_not_followers_title": "Personer som inte följer dig", "notifications.policy.filter_not_following_title": "Personer du inte följer", + "notifications.policy.filter_private_mentions_title": "Oombedda privata omnämnanden", + "notifications.policy.title": "Filtrera ut aviseringar från…", "notifications_permission_banner.enable": "Aktivera skrivbordsaviseringar", "notifications_permission_banner.how_to_control": "För att ta emot aviseringar när Mastodon inte är öppet, aktivera skrivbordsaviseringar. När de är aktiverade kan du styra exakt vilka typer av interaktioner som aviseras via {icon} -knappen ovan.", "notifications_permission_banner.title": "Missa aldrig något", @@ -558,6 +572,11 @@ "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", + "relationship_severance_notification.purged_data": "rensad av administratörer", + "relationship_severance_notification.types.account_suspension": "Ditt konto har blivit avstängt", + "relationship_severance_notification.types.domain_block": "Domänen har stängts av", + "relationship_severance_notification.types.user_domain_block": "Du blockerade denna domän", + "relationship_severance_notification.view": "Visa", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sedan", "relative_time.full.hours": "{number, plural, one {# timme} other {# timmar}} sedan", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bf88e53c94..799400ea35 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -471,6 +471,7 @@ "notification.own_poll": "Anketiniz sona erdi", "notification.poll": "Oy verdiğiniz bir anket sona erdi", "notification.reblog": "{name} gönderini yeniden paylaştı", + "notification.severed_relationships": "{name} ile ilişkiler koptu", "notification.status": "{name} az önce gönderdi", "notification.update": "{name} bir gönderiyi düzenledi", "notification_requests.accept": "Onayla", @@ -587,6 +588,12 @@ "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", "regeneration_indicator.sublabel": "Ana akışın hazırlanıyor!", + "relationship_severance_notification.purged_data": "yöneticiler tarafından temizlendi", + "relationship_severance_notification.relationships": "{count, plural, one {# ilişki} other {# ilişki}}", + "relationship_severance_notification.types.account_suspension": "Hesap askıya alındı", + "relationship_severance_notification.types.domain_block": "Alan adı askıya alındı", + "relationship_severance_notification.types.user_domain_block": "Bu alan adını engellediniz", + "relationship_severance_notification.view": "Görüntüle", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# gün} other {# gün}} önce", "relative_time.full.hours": "{number, plural, one {# saat} other {# saat}} önce", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index abc9c37758..3456327a67 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -460,7 +460,6 @@ "notification.own_poll": "Ваше опитування завершилося", "notification.poll": "Опитування, у якому ви голосували, скінчилося", "notification.reblog": "{name} поширює ваш допис", - "notification.severedRelationships": "Зв'язки з {name} розірвані", "notification.severed_relationships": "Зв'язки з {name} розірвані", "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index b51b832b2b..9b09d21450 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -471,6 +471,7 @@ "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc", "notification.poll": "Cuộc bình chọn đã kết thúc", "notification.reblog": "{name} đăng lại tút của bạn", + "notification.severed_relationships": "Mối quan hệ với {name} bị cắt đứt", "notification.status": "{name} đăng tút mới", "notification.update": "{name} đã sửa tút", "notification_requests.accept": "Chấp nhận", @@ -587,6 +588,12 @@ "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Trang chủ của bạn đang được cập nhật!", + "relationship_severance_notification.purged_data": "bị quản trị viên xóa", + "relationship_severance_notification.relationships": "{count, plural, other {# mối quan hệ}}", + "relationship_severance_notification.types.account_suspension": "Người này đã bị vô hiệu hóa", + "relationship_severance_notification.types.domain_block": "Máy chủ này đã bị vô hiệu hóa", + "relationship_severance_notification.types.user_domain_block": "Bạn đã chặn máy chủ này", + "relationship_severance_notification.view": "Chi tiết", "relative_time.days": "{number} ngày", "relative_time.full.days": "{number, plural, other {# ngày}}", "relative_time.full.hours": "{number, plural, other {# giờ}}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 6ad7599060..cc68ab762f 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -471,7 +471,6 @@ "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", "notification.reblog": "{name} 转发了你的嘟文", - "notification.severedRelationships": "与 {name} 的关系已被切断", "notification.severed_relationships": "与 {name} 的关系已被切断", "notification.status": "{name} 刚刚发布嘟文", "notification.update": "{name} 编辑了嘟文", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e352985811..228430dd80 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -471,7 +471,6 @@ "notification.own_poll": "您的投票已結束", "notification.poll": "您曾投過的投票已經結束", "notification.reblog": "{name} 已轉嘟您的嘟文", - "notification.severedRelationships": "已斷絕與 {name} 之服務關係", "notification.severed_relationships": "已斷絕與 {name} 之服務關係", "notification.status": "{name} 剛剛嘟文", "notification.update": "{name} 已編輯嘟文", diff --git a/app/javascript/material-icons/400-24px/heart_broken-fill.svg b/app/javascript/material-icons/400-24px/heart_broken-fill.svg new file mode 100644 index 0000000000..75ff3932cd --- /dev/null +++ b/app/javascript/material-icons/400-24px/heart_broken-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/heart_broken.svg b/app/javascript/material-icons/400-24px/heart_broken.svg new file mode 100644 index 0000000000..2ce7de57f1 --- /dev/null +++ b/app/javascript/material-icons/400-24px/heart_broken.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index ea67b8675c..051b960bfd 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8823,8 +8823,9 @@ noscript { .safety-action-modal, .interaction-modal { - max-width: 90vw; + max-width: 100vw; width: 600px; + overflow-y: auto; } .interaction-modal { diff --git a/app/models/account_relationship_severance_event.rb b/app/models/account_relationship_severance_event.rb index 20b15e2839..c1269fad6d 100644 --- a/app/models/account_relationship_severance_event.rb +++ b/app/models/account_relationship_severance_event.rb @@ -8,16 +8,22 @@ # id :bigint(8) not null, primary key # account_id :bigint(8) not null # relationship_severance_event_id :bigint(8) not null -# relationships_count :integer default(0), not null # created_at :datetime not null # updated_at :datetime not null +# followers_count :integer default(0), not null +# following_count :integer default(0), not null # class AccountRelationshipSeveranceEvent < ApplicationRecord + self.ignored_columns += %w( + relationships_count + ) + belongs_to :account belongs_to :relationship_severance_event - delegate :severed_relationships, - :type, + has_many :severed_relationships, through: :relationship_severance_event + + delegate :type, :target_name, :purged, :purged?, @@ -29,6 +35,7 @@ class AccountRelationshipSeveranceEvent < ApplicationRecord private def set_relationships_count! - self.relationships_count = severed_relationships.about_local_account(account).count + self.followers_count = severed_relationships.about_local_account(account).passive.count + self.following_count = severed_relationships.about_local_account(account).active.count end end diff --git a/app/models/concerns/account/merging.rb b/app/models/concerns/account/merging.rb index e6b147482c..bd8b162238 100644 --- a/app/models/concerns/account/merging.rb +++ b/app/models/concerns/account/merging.rb @@ -27,6 +27,16 @@ module Account::Merging end end + [ + Notification, NotificationPermission, NotificationRequest + ].each do |klass| + klass.where(from_account_id: other_account.id).reorder(nil).find_each do |record| + record.update_attribute(:from_account_id, id) + rescue ActiveRecord::RecordNotUnique + next + end + end + target_classes = [ Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin, AccountNote diff --git a/app/models/user.rb b/app/models/user.rb index bf12d951d0..a082c178e2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,7 +14,6 @@ # sign_in_count :integer default(0), not null # current_sign_in_at :datetime # last_sign_in_at :datetime -# admin :boolean default(FALSE), not null # confirmation_token :string # confirmed_at :datetime # confirmation_sent_at :datetime @@ -29,7 +28,6 @@ # otp_backup_codes :string is an Array # account_id :bigint(8) not null # disabled :boolean default(FALSE), not null -# moderator :boolean default(FALSE), not null # invite_id :bigint(8) # chosen_languages :string is an Array # created_by_application_id :bigint(8) diff --git a/app/serializers/rest/account_relationship_severance_event_serializer.rb b/app/serializers/rest/account_relationship_severance_event_serializer.rb index 2578e3a20f..751bc103c2 100644 --- a/app/serializers/rest/account_relationship_severance_event_serializer.rb +++ b/app/serializers/rest/account_relationship_severance_event_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::AccountRelationshipSeveranceEventSerializer < ActiveModel::Serializer - attributes :id, :type, :purged, :target_name, :created_at + attributes :id, :type, :purged, :target_name, :followers_count, :following_count, :created_at def id object.id.to_s diff --git a/app/views/severed_relationships/index.html.haml b/app/views/severed_relationships/index.html.haml index 75296d90aa..7c599e9c0e 100644 --- a/app/views/severed_relationships/index.html.haml +++ b/app/views/severed_relationships/index.html.haml @@ -21,13 +21,13 @@ %td{ rowspan: 2 }= t('severed_relationships.purged') - else %td - - count = event.severed_relationships.active.about_local_account(current_account).count + - count = event.following_count - if count.zero? = t('generic.none') - else = table_link_to 'download', t('severed_relationships.download', count: count), following_severed_relationship_path(event, format: :csv) %td - - count = event.severed_relationships.passive.about_local_account(current_account).count + - count = event.followers_count - if count.zero? = t('generic.none') - else diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 3601d5bd8b..f94abe265e 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1672,7 +1672,7 @@ ca: user_domain_block: Heu blocat %{target_name} lost_followers: Seguidors perduts lost_follows: Seguiments perduts - preamble: Quan bloqueu un domini o els vostres moderadors decideixen suspendre un servidor remot, es poden perdre seguidors i seguiments. Si això passa, podeu baixar-vos la llista de relacions trencades per a revisar-la i, si voleu, importar-les a un altre servidor. + preamble: Quan bloqueu un domini o els vostres moderadors decideixen suspendre un servidor remot, podeu perdre seguidors i seguiments. Si passa, podeu baixar la llista de relacions trencades per a revisar-la i, de cas, importar-la a un altre servidor. purged: Els administradors del vostre servidor han purgat la informació relativa a aquest servidor. type: Esdeveniment statuses: diff --git a/config/locales/de.yml b/config/locales/de.yml index 62e62c2c0b..620b571f9f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1659,10 +1659,22 @@ de: preferences: Einstellungen profile: Öffentliches Profil relationships: Follower und Folge ich + severed_relationships: Getrennte Beziehungen statuses_cleanup: Automatische Löschung strikes: Maßnahmen two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) webauthn_authentication: Sicherheitsschlüssel + severed_relationships: + download: Herunterladen (%{count}) + event_type: + account_suspension: Kontosperre (%{target_name}) + domain_block: Serversperre (%{target_name}) + user_domain_block: Du hast %{target_name} blockiert + lost_followers: Verlorene Follower + lost_follows: Konten entfolgt + preamble: Möglicherweise verlierst du Follower und entfolgst Konten, wenn du eine Domain blockierst oder Moderator*innen externe Server sperren. Sollte das der Fall sein, wirst du eine Liste mit den getrennten Beziehungen herunterladen können. Dadurch kannst du die Änderungen einsehen oder die Liste auf einen anderen Server importieren. + purged: Informationen über diesen Server wurden von deinen Server-Administrator*innen entfernt. + type: Ereignis statuses: attached: audio: diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml index 66dd0f9093..0e5d1ca455 100644 --- a/config/locales/doorkeeper.nn.yml +++ b/config/locales/doorkeeper.nn.yml @@ -92,9 +92,9 @@ nn: invalid_resource_owner: Ressurseigardetaljane er ikkje gyldige, eller så er det ikkje mogleg å finna eigaren invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur. invalid_token: - expired: Tilgangsbeviset har gått ut på dato - revoked: Tilgangsbeviset har blitt oppheva - unknown: Tilgangsbeviset er ugyldig + expired: Innloggingsnykelen har gått ut på dato + revoked: Innloggingsnykelen er oppheva + unknown: Innloggngsnykelen er ugyldig resource_owner_authenticator_not_configured: Ressurseigar kunne ikkje finnast fordi Doorkeeper.configure.resource_owner_authenticator ikkje er konfigurert. server_error: Autoriseringstenaren støtte på ei uventa hending som hindra han i å svara på førespurnaden. temporarily_unavailable: Autoriseringstenaren kan ikkje hansama førespurnaden grunna kortvarig overbelastning eller tenarvedlikehald. @@ -129,11 +129,11 @@ nn: crypto: Ende-til-ende-kryptering favourites: Favorittar filters: Filter - follow: Dei du fylgjer, målbind og blokkerer + follow: Dei du fylgjer, dempar og blokkerer follows: Fylgjer lists: Lister media: Mediavedlegg - mutes: Målbindingar + mutes: Dempingar notifications: Varsel push: Pushvarsel reports: Rapportar @@ -183,13 +183,13 @@ nn: write:accounts: redigera profilen din write:blocks: blokker kontoar og domene write:bookmarks: bokmerk innlegg - write:conversations: målbind og slett samtalar + write:conversations: demp og slett samtalar write:favourites: favorittmarker innlegg write:filters: lag filter write:follows: fylg folk write:lists: lag lister write:media: last opp mediefiler - write:mutes: målbind folk og samtalar + write:mutes: demp folk og samtalar write:notifications: tøm varsla dine write:reports: rapporter andre folk write:statuses: publiser innlegg diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 2e21c73279..fd53f9d4fd 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1659,10 +1659,22 @@ es-AR: preferences: Configuración profile: Perfil público relationships: Seguimientos + severed_relationships: Relaciones cortadas statuses_cleanup: Eliminación auto. de mensajes strikes: Moderación de incumplimientos two_factor_authentication: Aut. de dos factores webauthn_authentication: Llaves de seguridad + severed_relationships: + download: Descargar (%{count}) + event_type: + account_suspension: Suspensión de cuenta (%{target_name}) + domain_block: Suspensión de cuenta (%{target_name}) + user_domain_block: Bloqueaste a %{target_name} + lost_followers: Seguidores perdidos + lost_follows: Cuentas seguidas perdidas + preamble: Podés perder seguidores y cuentas seguidas cuando bloqueás un dominio o cuando tus moderadores deciden suspender un servidor remoto. Cuando esto suceda, vas a poder descargar listas de relaciones cortadas, que serán inspectadas y posiblemente importadas en otro servidor. + purged: La información sobre este servidor fue purgada por los administradores de tu servidor. + type: Evento statuses: attached: audio: diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index fa69e36cc0..6e422455c3 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -597,6 +597,9 @@ fr-CA: actions_description_html: Décidez des mesures à prendre pour résoudre ce signalement. Si vous prenez des mesures punitives contre le compte signalé, une notification sera envoyée par e-mail, sauf si la catégorie Spam est sélectionnée. actions_description_remote_html: Décidez des mesures à prendre pour résoudre ce signalement. Cela n'affectera que la manière dont votre serveur communique avec ce compte distant et traite son contenu. add_to_report: Ajouter davantage au rapport + already_suspended_badges: + local: Déjà suspendu sur ce serveur + remote: Déjà suspendu sur le serveur distant are_you_sure: Voulez-vous vraiment faire ça ? assign_to_self: Me l’assigner assigned: Modérateur assigné @@ -1652,13 +1655,26 @@ fr-CA: import: Import de données import_and_export: Import et export migrate: Migration de compte + notifications: Notifications par mail preferences: Préférences profile: Profil relationships: Abonnements et abonné·e·s + severed_relationships: Relations rompues statuses_cleanup: Suppression automatique de messages strikes: Sanctions de modération two_factor_authentication: Identification à deux facteurs webauthn_authentication: Clés de sécurité + severed_relationships: + download: Téléchargement (%{count}) + event_type: + account_suspension: Suspension du compte (%{target_name}) + domain_block: Suspension du serveur (%{target_name}) + user_domain_block: Vous avez bloqué %{target_name} + lost_followers: Abonné·e·s perdu·e·s + lost_follows: Abonnements perdus + preamble: Vous pouvez perdre des abonnés et des abonnements lorsque vous bloquez un domaine ou lorsque vos modérateurs décident de suspendre un serveur distant. Lorsque cela arrive, vous êtes en mesure de télécharger une liste de vos relations rompues, afin de l'inspecter et d'éventuellement l'importer sur un autre serveur. + purged: Les informations sur ce serveur ont été purgées par les administrateurs du serveur. + type: Evènement statuses: attached: audio: @@ -1864,6 +1880,9 @@ fr-CA: follows_subtitle: Suivez des comptes populaires follows_title: Qui suivre follows_view_more: Voir plus de personnes à suivre + hashtags_recent_count: + one: "%{people} personne dans les deux derniers jours" + other: "%{people} personnes dans les deux derniers jours" hashtags_subtitle: Explorez les tendances depuis les 2 derniers jours hashtags_title: Hashtags populaires hashtags_view_more: Voir plus de hashtags populaires diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2045760655..31f5bfa515 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -597,6 +597,9 @@ fr: actions_description_html: Décidez des mesures à prendre pour résoudre ce signalement. Si vous prenez des mesures punitives contre le compte signalé, une notification sera envoyée par e-mail, sauf si la catégorie Spam est sélectionnée. actions_description_remote_html: Décidez des mesures à prendre pour résoudre ce signalement. Cela n'affectera que la manière dont votre serveur communique avec ce compte distant et traite son contenu. add_to_report: Ajouter davantage au rapport + already_suspended_badges: + local: Déjà suspendu sur ce serveur + remote: Déjà suspendu sur le serveur distant are_you_sure: Voulez-vous vraiment faire ça ? assign_to_self: Me l’assigner assigned: Modérateur assigné @@ -1652,13 +1655,26 @@ fr: import: Import de données import_and_export: Import et export migrate: Migration de compte + notifications: Notifications par mail preferences: Préférences profile: Profil relationships: Abonnements et abonné·e·s + severed_relationships: Relations rompues statuses_cleanup: Suppression automatique de messages strikes: Sanctions de modération two_factor_authentication: Authentification à deux facteurs webauthn_authentication: Clés de sécurité + severed_relationships: + download: Téléchargement (%{count}) + event_type: + account_suspension: Suspension du compte (%{target_name}) + domain_block: Suspension du serveur (%{target_name}) + user_domain_block: Vous avez bloqué %{target_name} + lost_followers: Abonné·e·s perdu·e·s + lost_follows: Abonnements perdus + preamble: Vous pouvez perdre des abonnés et des abonnements lorsque vous bloquez un domaine ou lorsque vos modérateurs décident de suspendre un serveur distant. Lorsque cela arrive, vous êtes en mesure de télécharger une liste de vos relations rompues, afin de l'inspecter et d'éventuellement l'importer sur un autre serveur. + purged: Les informations sur ce serveur ont été purgées par les administrateurs du serveur. + type: Evènement statuses: attached: audio: @@ -1864,6 +1880,9 @@ fr: follows_subtitle: Suivez des comptes populaires follows_title: Qui suivre follows_view_more: Voir plus de personnes à suivre + hashtags_recent_count: + one: "%{people} personne dans les deux derniers jours" + other: "%{people} personnes dans les deux derniers jours" hashtags_subtitle: Explorez les tendances depuis les 2 derniers jours hashtags_title: Hashtags populaires hashtags_view_more: Voir plus de hashtags populaires diff --git a/config/locales/gd.yml b/config/locales/gd.yml index d61c79aa56..11402d3f56 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1724,6 +1724,7 @@ gd: user_domain_block: Bhac thu %{target_name} lost_followers: An luchd-leantainn a chaill thu lost_follows: Daoine nach lean thu tuilleadh + preamble: Dh’fhaoidte gun chaill thu dàimhean leantainn nuair a bhacas tu àrainn no nuair a chuireas na maoir romhpa gun cuir iad frithealaiche cèin à rèim. Nuair a thachras sin, ’s urrainn dhut liosta de na dàimhean dealaichte a luchdadh a-nuas airson sùil a thoirt orra agus an ion-phortadh gu frithealaiche eile ’s dòcha. purged: Chaidh am fiosrachadh mun fhrithealaiche seo a phurgaideachadh le rianairean an fhrithealaiche agad. type: Tachartas statuses: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 7fbba21b27..4b1c9f096b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1659,10 +1659,22 @@ gl: preferences: Preferencias profile: Perfil relationships: Seguindo e seguidoras + severed_relationships: Relacións cortadas statuses_cleanup: Borrado automático da publicación strikes: Avisos da moderación two_factor_authentication: Validar Dobre Factor webauthn_authentication: Chaves de seguridade + severed_relationships: + download: Descargar (%{count}) + event_type: + account_suspension: Suspensión da conta (%{target_name}) + domain_block: Suspensión do servidor (%{target_name}) + user_domain_block: Bloqueaches a %{target_name} + lost_followers: Seguidoras perdidas + lost_follows: Seguimentos perdidos + preamble: Pode acontecer que perdas seguidoras e seguimentos ao bloquear un dominio ou cando a Moderación do teu servidor decide suspender un servidor remoto. Se acontecese isto, podes descargar unha lista coas relacións cortadas para revisala e, se queres, importala noutro servidor. + purged: A administración do teu servidor purgou a información acerca deste servidor. + type: Evento statuses: attached: audio: diff --git a/config/locales/he.yml b/config/locales/he.yml index 2dfb98a2d8..da93925548 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1707,13 +1707,26 @@ he: import: יבוא import_and_export: יבוא ויצוא migrate: הגירת חשבון + notifications: התראות בדואל preferences: העדפות profile: פרופיל relationships: נעקבים ועוקבים + severed_relationships: קשרים שנותקו statuses_cleanup: מחיקת הודעות אוטומטית strikes: עבירות מנהלתיות two_factor_authentication: אימות דו-שלבי webauthn_authentication: מפתחות אבטחה + severed_relationships: + download: הורדה (%{count}) + event_type: + account_suspension: השעיית חשבון (%{target_name}) + domain_block: השעיית שרת (%{target_name}) + user_domain_block: חסמת את %{target_name} + lost_followers: אובדן עוקבים + lost_follows: אובדן נעקבים + preamble: הנכם עשויים לאבד עוקבים ונעקבים כשתחסמו שרת או כשמנהליכם יחליטו להשעות שרת אחר. במקרה כזה, תוכלו להוריד רשימה של קשרי המעקב שנותקו, כדי לעבור עליהם ואם תרצו לייבא אותם לשרת אחר. + purged: מידע על שרת מרוחק זה נמחק על ידי מנהלי השרת שלך. + type: אירוע statuses: attached: audio: diff --git a/config/locales/it.yml b/config/locales/it.yml index 16a42b0760..c63d8ef285 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1661,10 +1661,22 @@ it: preferences: Preferenze profile: Profilo relationships: Follows e followers + severed_relationships: Relazioni interrotte statuses_cleanup: Cancellazione automatica dei post strikes: Sanzioni di moderazione two_factor_authentication: Autenticazione a due fattori webauthn_authentication: Chiavi di sicurezza + severed_relationships: + download: Scarica (%{count}) + event_type: + account_suspension: Sospensione dell'account (%{target_name}) + domain_block: Sospensione del server (%{target_name}) + user_domain_block: Hai bloccato %{target_name} + lost_followers: Seguaci persi + lost_follows: Account seguiti persi + preamble: Potresti perdere account seguiti e seguaci quando blocchi un dominio o quando i tuoi moderatori decidono di sospendere un server remoto. Quando ciò accadrà, potrai scaricare liste di relazioni interrotte, da consultare ed eventualmente importare su un altro server. + purged: Le informazioni su questo server sono state eliminate dagli amministratori del tuo server. + type: Evento statuses: attached: audio: @@ -1870,6 +1882,9 @@ it: follows_subtitle: Segui account ben noti follows_title: Chi seguire follows_view_more: Visualizza più persone da seguire + hashtags_recent_count: + one: "%{people} persona negli ultimi 2 giorni" + other: "%{people} persone negli ultimi 2 giorni" hashtags_subtitle: Esplora le tendenze degli ultimi 2 giorni hashtags_title: Hashtag di tendenza hashtags_view_more: Visualizza altri hashtag di tendenza diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 1470dc9fc0..7145f30377 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -58,7 +58,7 @@ nn: demote: Degrader destroyed_msg: "%{username} sine data er no i slettekøa" disable: Slå av - disable_sign_in_token_auth: Slå av e-post token autentisering + disable_sign_in_token_auth: Slå av innlogging med epost-nykel disable_two_factor_authentication: Slå av 2FA disabled: Slege av display_name: Synleg namn @@ -67,7 +67,7 @@ nn: email: E-post email_status: E-poststatus enable: Slå på - enable_sign_in_token_auth: Slå på e-post token autentisering + enable_sign_in_token_auth: Slå på innlogging med epost-nykel enabled: Aktivert enabled_msg: Gjenaktiverte %{username} sin konto followers: Fylgjarar @@ -158,9 +158,9 @@ nn: unblocked_email_msg: Avblokkerte %{username} si e-postadresse unconfirmed_email: E-post utan stadfesting undo_sensitized: Angr tving ømtolig - undo_silenced: Angr målbinding + undo_silenced: Angre avgrensinga undo_suspension: Angr utvising - unsilenced_msg: Opphevde vellykket begrensningen av %{username} sin konto + unsilenced_msg: Oppheva avgrensinga av %{username} sin konto unsubscribe: Avmeld unsuspended_msg: Oppheving av utvisinga av %{username} sin konto var vellykka username: Brukarnamn @@ -200,10 +200,10 @@ nn: destroy_user_role: Øydelegg rolle disable_2fa_user: Skruv av 2FA disable_custom_emoji: Skruv av tilpassa emoji - disable_sign_in_token_auth_user: Slå av e-post tokenautentisering for brukar + disable_sign_in_token_auth_user: Slå av innlogging med epost-nykel for brukaren disable_user: Skruv av brukar enable_custom_emoji: Skruv på tilpassa emoji - enable_sign_in_token_auth_user: Slå på e-post tokenautentisering for brukar + enable_sign_in_token_auth_user: Slå på innlogging med epost-nykel for brukaren enable_user: Skruv på brukar memorialize_account: Opprett minnekonto promote_user: Forfrem brukar @@ -259,10 +259,10 @@ nn: destroy_user_role_html: "%{name} sletta rolla %{target}" disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}" disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}" - disable_sign_in_token_auth_user_html: "%{name} deaktivert e-post token for godkjenning for %{target}" + disable_sign_in_token_auth_user_html: "%{name} skrudde av innlogging med epost-nykel for %{target}" disable_user_html: "%{name} slo av innlogging for brukaren %{target}" enable_custom_emoji_html: "%{name} aktiverte emojien %{target}" - enable_sign_in_token_auth_user_html: "%{name} aktiverte e-post token autentisering for %{target}" + enable_sign_in_token_auth_user_html: "%{name} skrudde på innlogging med epost-nykel for %{target}" enable_user_html: "%{name} aktiverte innlogging for brukaren %{target}" memorialize_account_html: "%{name} endret %{target}s konto til en minneside" promote_user_html: "%{name} fremja brukaren %{target}" @@ -274,7 +274,7 @@ nn: reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" resolve_report_html: "%{name} løyste ein rapport %{target}" sensitive_account_html: "%{name} markerte %{target} sitt media som ømtolig" - silence_account_html: "%{name} begrensa %{target} sin konto" + silence_account_html: "%{name} avgrensa %{target} sin konto" suspend_account_html: "%{name} utviste %{target} sin konto" unassigned_report_html: "%{name} løyste ein rapport %{target}" unblock_email_account_html: "%{name} avblokkerte %{target} si e-postadresse" @@ -396,8 +396,8 @@ nn: destroyed_msg: Domeneblokkering har nå blitt angret domain: Domene edit: Rediger domeneblokkering - existing_domain_block: Du har allerede pålagt strengere begrensninger på %{name}. - existing_domain_block_html: Du har allerede pålagt strengere begrensninger på %{name}, du kan være nødt til oppheve blokkeringen av den først. + existing_domain_block: Du har allereie gjort strengare avgrensingar av %{name}. + existing_domain_block_html: Du har allereie avgrensa kontoen til %{name} kraftig, det kan henda du må oppheva blokkeringa fyrst. export: Eksporter import: Importer new: @@ -406,17 +406,17 @@ nn: severity: desc_html: "Avgrens gjer innlegg frå kontoar på dette domenet usynlege for alle som ikkje fylgjer dei. Utvis fjernar alt innhald, media og profildata frå kontoar på dette domenet frå tenaren din. Bruk Ingen viss du berre vil avvisa mediafiler." noop: Ingen - silence: Målbind + silence: Avgrens suspend: Utvis title: Ny domeneblokkering no_domain_block_selected: Ingen domeneblokkeringar vart endra sidan ingen var valde not_permitted: Du har ikkje løyve til å utføra denne handlinga obfuscate: Obfuskere domenenavn - obfuscate_hint: Skjul deler av domenenavnet i listen hvis annonsering av listen over domenebegrensninger er slått på + obfuscate_hint: Gøym delar av domenenamnet i lista viss kunngjering av lista over domeneavgrensingar er påskrudd private_comment: Privat kommentar - private_comment_hint: Kommenter angående denne domenebegrensningen for internt bruk av moderatorene. + private_comment_hint: Kommentar om denne domeneavgrensinga til intern bruk for administratorane. public_comment: Offentleg kommentar - public_comment_hint: Kommenter angående denne domenebegrensningen for offentligheten, hvis publisering av domenebegrensningslisten er slått på. + public_comment_hint: Kommentar om denne domeneavgrensinga for publikum, viss kunngjering av lista over avgrensa domene er påskrudd. reject_media: Avvis mediefiler reject_media_hint: Fjernar mediefiler som er lagra lokalt og nektar å lasta ned andre i framtida. Har ikkje noko å seia for utvisingar reject_reports: Avvis rapportar @@ -480,7 +480,7 @@ nn: title: Tilgjenge warning: Det siste forsøket på å koble til denne serveren lyktes ikke back_to_all: Alle - back_to_limited: Begrenset + back_to_limited: Avgrensa back_to_warning: Advarsel by_domain: Domene confirm_purge: Er du sikker på at du vil slette data permanent fra dette domenet? @@ -491,7 +491,7 @@ nn: policies: reject_media: Avvis media reject_reports: Avvis rapporter - silence: Begrens + silence: Avgrens suspend: Utvis policy: Vilkår reason: Offentlig årsak @@ -651,7 +651,7 @@ nn: actions: delete_html: Fjerna dei påtala innlegga mark_as_sensitive_html: Markera dei påtala mediefilene som sensitive - silence_html: Sterkt avgrensa korleis @%{acct} kan samhandla ved å gjera brukarprofilen og innhaldet synleg berre for folk som allereie fylgjer brukarkontoen eller søkjer han opp manuelt + silence_html: Avgrens kraftig korleis @%{acct} kan samhandla med andre ved å gjera brukarprofilen og innhaldet synleg berre for folk som allereie fylgjer brukarkontoen eller søkjer opp profilen manuelt suspend_html: Stengja brukarkontoen til @%{acct}, slik at brukarprofilen og innhaldet blir utilgjengeleg og umogleg å samhandla med close_report: Marker rapport nr. %{id} som løyst close_reports_html: Marker alle rapportane om @%{acct} som løyste @@ -832,7 +832,7 @@ nn: mark_statuses_as_sensitive: "%{name} markerte %{target} sine innlegg som ømtålige" none: "%{name} sendte en advarsel til %{target}" sensitive: "%{name} markerte %{target} sin konto som ømtolig" - silence: "%{name} begrenset %{target}s konto" + silence: "%{name} avgrensa kontoen til %{target}" suspend: "%{name} utviste %{target} sin konto" appeal_approved: Anka appeal_pending: Klage behandles @@ -981,7 +981,7 @@ nn: mark_statuses_as_sensitive: å merke innleggene sine som følsomme none: en advarsel sensitive: å merke kontoen sin som følsom - silence: for å begrense deres konto + silence: for å avgrensa kontoen deira suspend: for å stenga kontoen deira body: "%{target} ankar på ei modereringsavgjerd av %{action_taken_by} den %{date}, som var %{type}. Dei skreiv:" next_steps: Du kan godkjenna anken for å endra modereringsavgjerda, eller du kan oversjå anken. @@ -1067,7 +1067,7 @@ nn: didnt_get_confirmation: Fekk du ikkje stadfestingslenka? dont_have_your_security_key: Har du ikke sikkerhetsnøkkelen din? forgot_password: Har du gløymt passordet ditt? - invalid_reset_password_token: Tilgangsnykelen er ugyldig eller utgått. Ver venleg å beda om ein ny ein. + invalid_reset_password_token: Tilgangsnykelen er ugyldig eller utgått. Ver venleg å be om ein ny ein. link_to_otp: Skriv inn en 2-trinnskode fra din 2-trinnspåloggingsenhet eller en gjenopprettingskode link_to_webauth: Bruk sikkerhetsnøkkel-enheten din log_in_with: Logg inn med @@ -1191,7 +1191,7 @@ nn: mark_statuses_as_sensitive: Markering av innlegg som ømtolige none: Advarsel sensitive: Markering av konto som ømtolig - silence: Begrensning av konto + silence: Avgrensing av konto suspend: Utestenging av konto your_appeal_approved: Din klage har blitt godkjent your_appeal_pending: Du har levert en klage @@ -1510,9 +1510,9 @@ nn: trillion: Bil otp_authentication: code_hint: Skriv inn koden generert av autentiseringsappen din for å bekrefte - description_html: Hvis du skrur på 2-trinnsautentisering ved hjelp av en autentiseringsapp, vil pålogging kreve at du er i besittelse av autentiseringsenheten din, som genererer sjetonger som du skal skrive inn. + description_html: Viss du skrur på tofaktorinnlogging med ein innloggingsapp, må du ha telefonen din klar når du loggar inn. Telefonen lagar innloggingsnyklar du må skriva inn. enable: Aktiver - instructions_html: "Skann denne QR-koden i Authy, Google Autentisering, eller en lignende TOTP-app på en av dine enheter. Fra nå av, vil den appen generere sjetonger som du vil måtte skrive inn når du logger på." + instructions_html: "Skann denne QR-koden i Google authenticator eller annan tofaktor-app på telefonen din. Frå no vil den appen laga tilgangsnyklar som du skriv inn når du vil logga inn." manual_instructions: 'Hvis du ikke kan skanne QR-koden og må skrive den inn manuelt, her er tekstkoden i ren tekst:' setup: Sett opp wrong_code: Den innskrevne koden var ugyldig! Er tjenertiden og enhetstiden riktige? diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index a4e57841e6..823929c550 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -116,6 +116,7 @@ fr-CA: sign_up_requires_approval: Les nouvelles inscriptions nécessiteront votre approbation severity: Choisir ce qui se passera avec les requêtes de cette adresse IP rule: + hint: Optionnel. Fournissez plus de détails sur la règle text: Décrivez une règle ou une exigence pour les utilisateurs sur ce serveur. Essayez de la garder courte et simple sessions: otp: 'Entrez le code d’authentification à deux facteurs généré par l’application de votre téléphone ou utilisez un de vos codes de récupération :' @@ -299,6 +300,7 @@ fr-CA: patch: Notifier pour des mises à jour de corrections de bug trending_tag: Nouvelle tendance nécessitant supervision rule: + hint: Information supplémentaire text: Règle settings: indexable: Inclure la page de profil dans les moteurs de recherches diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index bd1dc6885f..4c8de1b20d 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -116,6 +116,7 @@ fr: sign_up_requires_approval: Les nouvelles inscriptions nécessiteront votre approbation severity: Choisir ce qui se passera avec les requêtes de cette adresse IP rule: + hint: Optionnel. Fournissez plus de détails sur la règle text: Décrivez une règle ou une exigence pour les utilisateurs sur ce serveur. Essayez de la garder courte et simple sessions: otp: 'Entrez le code d’authentification à deux facteurs généré par l’application de votre téléphone ou utilisez un de vos codes de récupération :' @@ -299,6 +300,7 @@ fr: patch: Notifier pour des mises à jour de corrections de bug trending_tag: Nouvelle tendance nécessitant supervision rule: + hint: Information supplémentaire text: Règle settings: indexable: Inclure la page de profil dans les moteurs de recherches diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index d948a88ed1..627d96df02 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -303,7 +303,7 @@ ko: hint: 추가 정보 text: 규칙 settings: - indexable: 검색 엔진에 프로필 페이지 기재하기 + indexable: 검색엔진에 프로필 페이지 포함하기 show_application: 어떤 앱으로 게시물을 보냈는지 표시 tag: listable: 이 해시태그가 검색과 추천에 보여지도록 허용 diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 1edf185c0a..a9f5f609fa 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -224,7 +224,7 @@ nn: setting_use_blurhash: Vis fargerike overgangar for gøymde medium setting_use_pending_items: Saktemodus severity: Alvorsgrad - sign_in_token_attempt: Trygdenykel + sign_in_token_attempt: Innloggingsnykel title: Tittel type: Importtype username: Brukarnamn @@ -280,7 +280,7 @@ nn: severities: no_access: Blokker tilgang sign_up_block: Blokker registrering - sign_up_requires_approval: Begrens påmeldinger + sign_up_requires_approval: Avgrens påmeldingar severity: Oppføring notification_emails: appeal: Nokon klagar på ei moderatoravgjerd diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index c3b8625c8e..37372cac27 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -116,6 +116,7 @@ sv: sign_up_requires_approval: Nya registreringar kräver ditt godkännande severity: Välj vad som ska hända med förfrågningar från denna IP rule: + hint: Valfritt. Ange mer information om regeln text: Beskriv en regel eller ett krav för användare av denna server. Försök hålla det kort och koncist sessions: otp: 'Ange tvåfaktorskoden som genererades av din telefonapp, eller använd någon av dina återställningskoder:' diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6355d01924..adb3a041ca 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1259,17 +1259,17 @@ sl: exports: archive_takeout: date: Datum - download: Prenesi svoj arhiv - hint_html: Zahtevate lahko arhiv vaših objav in naloženih medijev. Izvoženi podatki bodo v zapisu ActivityPub, ki ga bo mogoče brati s poljubno skladno programsko opremo. Arhiv lahko zahtevate vsakih 7 dni. - in_progress: Prevajanje arhiva... + download: Prenesite svoj arhiv + hint_html: Zahtevate lahko arhiv svojih objav in naloženih medijev. Izvoženi podatki bodo v zapisu ActivityPub, ki ga bo mogoče brati s poljubno skladno programsko opremo. Arhiv lahko zahtevate vsakih 7 dni. + in_progress: Pripravljanje vašega arhiva … request: Zahtevajte svoj arhiv size: Velikost - blocks: Blokirate + blocks: Blokirani bookmarks: Zaznamki csv: CSV - domain_blocks: Bloki domene + domain_blocks: Blokirane domene lists: Seznami - mutes: Utišate + mutes: Utišani storage: Shranjeni mediji featured_tags: add_new: Dodaj novo @@ -1613,17 +1613,17 @@ sl: confirm_follow_selected_followers: Ali ste prepričani, da želite slediti izbranim sledilcem? confirm_remove_selected_followers: Ali ste prepričani, da želite odstraniti izbrane sledilce? confirm_remove_selected_follows: Ali ste prepričani, da želite odstraniti izbrana sledenja? - dormant: Skrit + dormant: Nedejavno follow_failure: Nekaterim od izbranih računov ni bilo mogoče slediti. follow_selected_followers: Sledi izbranim sledilcem followers: Sledilci - following: Sledi + following: Sledeni invited: Vabljeni last_active: Zadnja dejavnost - most_recent: Najnovejša + most_recent: Najnovejše moved: Prestavljeno - mutual: Vzajemna - primary: Primarna + mutual: Vzajemno + primary: Primarno relationship: Razmerje remove_selected_domains: Odstrani vse sledilce iz izbranih domen remove_selected_followers: Odstrani izbrane sledilce diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 25286c00f5..3742b61427 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1655,15 +1655,18 @@ sq: preferences: Parapëlqime profile: Profil relationships: Ndjekje dhe ndjekës + severed_relationships: Marrëdhënie të ndërprera statuses_cleanup: Fshirje e automatizuar postimesh strikes: Paralajmërime nga moderimi two_factor_authentication: Mirëfilltësim Dyfaktorësh webauthn_authentication: Kyçe sigurie severed_relationships: + download: Shkarkim (%{count}) event_type: account_suspension: Pezullim llogarie (%{target_name}) domain_block: Pezullim shërbyesi (%{target_name}) user_domain_block: Bllokuat %{target_name} + preamble: Mund të humbni ndjekje dhe ndjekës, kur bllokoni një përkatësi, ose kur moderatorët tuaj vendosin të pezullojnë një shërbyes të largët. Kur kjo ndodh, do të jeni në gjendje të shkarkoni lista marrëdhëniesh të dëmtuara, për t’i shqyrtuar dhe mundet për t’i importuar në një shërbyes tjetër. purged: Hollësitë rreth këtij shërbyesi janë spastuar nga përgjegjësit e shërbyesit tuaj. type: Akt statuses: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 855fa765f5..8ffb3c1e29 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1660,6 +1660,9 @@ sv: strikes: Modereringsprickar two_factor_authentication: Tvåfaktorsautentisering webauthn_authentication: Säkerhetsnycklar + severed_relationships: + lost_follows: Förlorade följare + type: Händelse statuses: attached: audio: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index bdf002333d..692b3d281f 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1659,10 +1659,22 @@ tr: preferences: Tercihler profile: Profil relationships: Takip edilenler ve takipçiler + severed_relationships: Kopmuş ilişkiler statuses_cleanup: Otomatik gönderi silme strikes: Moderasyon eylemleri two_factor_authentication: İki adımlı doğrulama webauthn_authentication: Güvenlik anahtarları + severed_relationships: + download: İndir (%{count}) + event_type: + account_suspension: Hesap askıya alma (%{target_name}) + domain_block: Sunucu askıya alma (%{target_name}) + user_domain_block: 'Engellediniz: %{target_name}' + lost_followers: Kaybedilen takipçiler + lost_follows: Kaybedilen takipler + preamble: Bir alan adını engellediğinizde veya denetleyicileriniz uzak bir sunucuyu askıya almaya karar verdiğinde takipçilerinizi ve takiplerinizi kaybedebilirsiniz. Bu olduğunda, kopan ilişkilerin bir listesini, incelemek ve başka bir sunucuya aktarmak için indirebileceksiniz. + purged: Bu sunucu hakkındaki bilgiler, sunucunun yöneticileri tarafından temizlenmiş. + type: Olay statuses: attached: audio: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index eaa913c8cd..f71ff741dc 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1633,10 +1633,22 @@ vi: preferences: Chung profile: Hồ sơ relationships: Quan hệ + severed_relationships: Mối quan hệ bị cắt đứt statuses_cleanup: Tự động xóa tút cũ strikes: Lần cảnh cáo two_factor_authentication: Xác minh 2 bước webauthn_authentication: Khóa bảo mật + severed_relationships: + download: Tải xuống (%{count}) + event_type: + account_suspension: Người bị vô hiệu hóa (%{target_name}) + domain_block: Máy chủ bị vô hiệu hóa (%{target_name}) + user_domain_block: Bạn đã chặn %{target_name} + lost_followers: Mất người theo dõi + lost_follows: Mất người đang theo dõi + preamble: Bạn có thể mất số lượt theo dõi và người theo dõi khi chặn một máy chủ hoặc khi kiểm duyệt viên của bạn quyết định tạm dừng máy chủ từ xa. Khi điều đó xảy ra, bạn sẽ có thể tải xuống danh sách các mối quan hệ đã bị cắt đứt, để kiểm tra và nhập vào máy chủ khác. + purged: Thông tin về máy chủ này đã bị quản trị viên máy chủ của bạn xóa sạch. + type: Sự kiện statuses: attached: audio: diff --git a/db/migrate/20240322125607_add_followers_and_following_counts_to_account_relationship_severance_events.rb b/db/migrate/20240322125607_add_followers_and_following_counts_to_account_relationship_severance_events.rb new file mode 100644 index 0000000000..ab5752b7a5 --- /dev/null +++ b/db/migrate/20240322125607_add_followers_and_following_counts_to_account_relationship_severance_events.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddFollowersAndFollowingCountsToAccountRelationshipSeveranceEvents < ActiveRecord::Migration[7.1] + def change + add_column :account_relationship_severance_events, :followers_count, :integer, default: 0, null: false + add_column :account_relationship_severance_events, :following_count, :integer, default: 0, null: false + end +end diff --git a/db/post_migrate/20240322130318_remove_relationships_count_from_account_relationship_severance_events.rb b/db/post_migrate/20240322130318_remove_relationships_count_from_account_relationship_severance_events.rb new file mode 100644 index 0000000000..76f2d325fe --- /dev/null +++ b/db/post_migrate/20240322130318_remove_relationships_count_from_account_relationship_severance_events.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RemoveRelationshipsCountFromAccountRelationshipSeveranceEvents < ActiveRecord::Migration[7.1] + def change + safety_assured { remove_column :account_relationship_severance_events, :relationships_count, :integer, default: 0, null: false } + end +end diff --git a/db/post_migrate/20240322161611_remove_obsolete_roles_from_users.rb b/db/post_migrate/20240322161611_remove_obsolete_roles_from_users.rb new file mode 100644 index 0000000000..8a46a1d7d3 --- /dev/null +++ b/db/post_migrate/20240322161611_remove_obsolete_roles_from_users.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class RemoveObsoleteRolesFromUsers < ActiveRecord::Migration[7.1] + def change + safety_assured { remove_column :users, :admin, :boolean, default: false, null: false } + safety_assured { remove_column :users, :moderator, :boolean, default: false, null: false } + end +end diff --git a/db/schema.rb b/db/schema.rb index c8a61956a5..f262cd21c9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do +ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -93,9 +93,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do create_table "account_relationship_severance_events", force: :cascade do |t| t.bigint "account_id", null: false t.bigint "relationship_severance_event_id", null: false - t.integer "relationships_count", default: 0, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.integer "followers_count", default: 0, null: false + t.integer "following_count", default: 0, null: false t.index ["account_id", "relationship_severance_event_id"], name: "idx_on_account_id_relationship_severance_event_id_7bd82bf20e", unique: true t.index ["account_id"], name: "index_account_relationship_severance_events_on_account_id" t.index ["relationship_severance_event_id"], name: "idx_on_relationship_severance_event_id_403f53e707" @@ -1172,7 +1173,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at", precision: nil t.datetime "last_sign_in_at", precision: nil - t.boolean "admin", default: false, null: false t.string "confirmation_token" t.datetime "confirmed_at", precision: nil t.datetime "confirmation_sent_at", precision: nil @@ -1187,7 +1187,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do t.string "otp_backup_codes", array: true t.bigint "account_id", null: false t.boolean "disabled", default: false, null: false - t.boolean "moderator", default: false, null: false t.bigint "invite_id" t.string "chosen_languages", array: true t.bigint "created_by_application_id" diff --git a/lib/mastodon/cli/maintenance.rb b/lib/mastodon/cli/maintenance.rb index 2e7c857078..d16d55eae1 100644 --- a/lib/mastodon/cli/maintenance.rb +++ b/lib/mastodon/cli/maintenance.rb @@ -26,6 +26,9 @@ module Mastodon::CLI class ListAccount < ApplicationRecord; end class PollVote < ApplicationRecord; end class Mention < ApplicationRecord; end + class Notification < ApplicationRecord; end + class NotificationPermission < ApplicationRecord; end + class NotificationRequest < ApplicationRecord; end class AccountDomainBlock < ApplicationRecord; end class AnnouncementReaction < ApplicationRecord; end class FeaturedTag < ApplicationRecord; end @@ -108,6 +111,18 @@ module Mastodon::CLI end end + from_classes = [Notification] + from_classes << NotificationPermission if db_table_exists?(:notification_permissions) + from_classes << NotificationRequest if db_table_exists?(:notification_requests) + + from_classes.each do |klass| + klass.where(from_account_id: other_account.id).find_each do |record| + record.update_attribute(:from_account_id, id) + rescue ActiveRecord::RecordNotUnique + next + end + end + target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin] target_classes << AccountNote if db_table_exists?(:account_notes) diff --git a/spec/fabricators/featured_tag_fabricator.rb b/spec/fabricators/featured_tag_fabricator.rb index 0803dc43a7..6003099dbd 100644 --- a/spec/fabricators/featured_tag_fabricator.rb +++ b/spec/fabricators/featured_tag_fabricator.rb @@ -2,6 +2,6 @@ Fabricator(:featured_tag) do account { Fabricate.build(:account) } - tag { Fabricate.build(:tag) } + tag { nil } name { sequence(:name) { |i| "Tag#{i}" } } end diff --git a/spec/requests/api/v1/featured_tags/suggestions_spec.rb b/spec/requests/api/v1/featured_tags/suggestions_spec.rb index f7b453b740..00451540ca 100644 --- a/spec/requests/api/v1/featured_tags/suggestions_spec.rb +++ b/spec/requests/api/v1/featured_tags/suggestions_spec.rb @@ -7,13 +7,35 @@ describe 'Featured Tags Suggestions API' do let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } let(:scopes) { 'read:accounts' } let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } - let(:account) { Fabricate(:account) } + let(:account) { Fabricate(:account, user: user) } describe 'GET /api/v1/featured_tags/suggestions' do - it 'returns http success' do - get '/api/v1/featured_tags/suggestions', params: { account_id: account.id, limit: 2 }, headers: headers + let!(:unused_featured_tag) { Fabricate(:tag, name: 'unused_featured_tag') } + let!(:used_tag) { Fabricate(:tag, name: 'used_tag') } + let!(:used_featured_tag) { Fabricate(:tag, name: 'used_featured_tag') } - expect(response).to have_http_status(200) + before do + _unused_tag = Fabricate(:tag, name: 'unused_tag') + + # Make relevant tags used by account + status = Fabricate(:status, account: account) + status.tags << used_tag + status.tags << used_featured_tag + + # Feature the relevant tags + Fabricate :featured_tag, account: account, name: unused_featured_tag.name + Fabricate :featured_tag, account: account, name: used_featured_tag.name + end + + it 'returns http success and recently used but not featured tags' do + get '/api/v1/featured_tags/suggestions', params: { limit: 2 }, headers: headers + + expect(response) + .to have_http_status(200) + expect(body_as_json) + .to contain_exactly( + include(name: used_tag.name) + ) end end end